2

Event Tracing for Windows (ETW) プロバイダー マニフェストを取得して、適切なチャネル名を登録しようとしています。マニフェスト (以下に含まれています) を使用すると、次の結果が得られます。ただし、マニフェストと、レジストリ (HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT に格納されている) 内の All-User-Install-Agent マニフェストの結果との違いを調べると、キーは Foo-Bat-TestApp/ プレフィックスで表示されています。プレフィックスを削除するにはどうすればよいですか? 「運用」名を使用する OS コンポーネントが既に存在するため、名前属性からそれらを削除できません (これはレジストリ内のフラット リストです)。

イベント ビューアのスナップショット

サンプル マニフェストは次のようになります。

<?xml version="1.0" encoding="utf-16"?>
<instrumentationManifest
    xmlns="http://schemas.microsoft.com/win/2004/08/events"
    xmlns:win="http://manifests.microsoft.com/win/2004/08/windows/events"
    xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <instrumentation>
    <events>
      <provider name="Foo-Bar-TestApp"
                guid="{C5C633DC-FB7E-4EA0-80EC-C683FA52561C}"
                symbol="EtwProvider"
                resourceFileName="C:\Projects\ETWTest\bin\Debug\ETWTest..dll"
                messageFileName="C:\Projects\ETWTest\bin\Debug\ETWTest.dll">
        <channels>
          <channel name="Foo-Bar-TestApp/Admin"
                   chid="Admin"
                   type="Admin"
                   enabled="true" />
          <channel name="Foo-Bar-TestApp/Operational"
                   chid="Operational"
                   type="Operational"
                   enabled="true" />
          <channel name="Foo-Bar-TestApp/Debug"
                   chid="Debug"
                   type="Debug"
                   enabled="false" />
        </channels>
        <keywords>
          <keyword name="KeywordA" symbol="READ_KEYWORD" mask="0x1" />
          <keyword name="KeywordB" symbol="WRITE_KEYWORD" mask="0x2" />
        </keywords>
       <events>
          <event version="1"
                 value="1"
                 symbol="SampleEvent"
                 channel="Operational"
                 level="win:Informational"
                 message="$(string.Event.SampleEvent)"
                 keywords="KeywordA" />
        </events>
      </provider>
    </events>
  </instrumentation>
  <localization>
    <resources culture="en-US">
      <stringTable>
        <string id="Event.SampleEvent" value="This is a sample event"/>
      </stringTable>
    </resources>
  </localization>
</instrumentationManifest>
4

1 に答える 1

0

必要な機能を実装するには、チャネル定義でシンボル属性を使用する必要があります。以下の例を参照してください。
<channel name="Admin" symbol="Foo-Bar-TestApp-Admin" chid="Admin" type="Admin" enabled="true" />

于 2013-02-14T15:17:25.843 に答える