イベントの種類を分類するために使用されるキーワードの定義
ETW キーワード (keyword)は、一連のイベント カテゴリ内のイベントのメンバーシップを示すために使用される 64 ビット ビットマスクです。 キーワード (keyword)内の各ビットはカテゴリに対応します。 イベントのキーワード (keyword)にビットが設定されている場合、イベントはそのビットに対応するイベント カテゴリに属します。
キーワード (keyword)の下位 48 ビット (ビットマスク 0x0000FFFFFFFFFFFF) は、イベント プロバイダー (マニフェストの作成者) によって定義されます。 キーワード (keyword)の上位 16 ビット (ビットマスク 0xFFFF000000000000) は、Microsoft によって定義されます。 Microsoft で定義されたキーワードの定義については、Windows Kits include フォルダーの または winmeta.xml
を参照してくださいwinmeta.h
。
プロバイダーはキーワードを使用して、さまざまな種類のイベントを分類します。 たとえば、キーワード (keyword)ビット 0 (キーワード (keyword)値0x1
) を読み取りカテゴリとして定義し、ファイルやレジストリからの読み取りなどの読み取り操作を実行するイベントに読み取りキーワード (keyword)を適用できます。 コンシューマーは、キーワード (keyword) ビット値を使用して、イベントのさまざまな分類をフィルター処理できます。 たとえば、コンシューマーは、イベント コレクション セッションの MatchAnyKeyword プロパティを に 0x1
設定して、 読み取 りカテゴリ内のイベントのみをセッションで収集できます。
ETW イベント 収集セッションでは、キーワード (レベルを使用するのと同じ方法) を使用して、ETW サービスがイベント トレース ログ ファイルに書き込むイベントを制限できます。 トレース セッションでは、2 組のキーワード (keyword) ビットマスクを使用してプロバイダーを有効にすることができます。"MatchAnyKeyword" ビットマスク。イベントのキーワード (keyword)ビットのいずれかが、このマスクに設定されているビットのいずれかと一致する場合にイベントが書き込まれます。 と "MatchAllKeyword" ビットマスク。"MatchAnyKeyword" の場合に一致したイベントの場合、イベントは "MatchAllKeyword" マスク内のすべてのビットがイベントの に存在する場合にのみ書き込まれますビットマスクをキーワード (keyword)します。
たとえば、プロバイダーが読み取りキーワード (keyword) (ビット 0 = 0x1
) とローカル アクセス キーワード (keyword) (ビット 1 = ) を指定するイベントと、読み取りキーワード (keyword) (ビット 0 = 0x2
0x1
) とリモート アクセス キーワード (keyword) (ビット 2 = 0x4
) を指定する 2 番目のイベントを定義する場合です。)、イベント コレクション セッションの "MatchAnyKeyword" ビットマスクを (読み取り) に0x1
設定し、"MatchAllKeyword" ビットマスクを (none) に0x0
設定してすべての読み取りイベントを受信するか、"MatchAnyKeyword" ビットマスクを に0x1
設定し、"MatchAllKeyword" ビットマスクを (読み取り + ローカル) に0x3
設定して、ローカル読み取りのみを受信できます。
プロバイダーのキーワード (keyword)を定義するには、キーワード (keyword)要素を使用します。 プロバイダーに対してキーワード (keyword)が定義されたら、event 要素の keywords 属性を使用して、プロバイダーのイベントのいずれかにキーワード (keyword)を割り当てることができます。
キーワード (keyword)の名前とマスク属性を指定する必要があります。 マスクは、ビット 0 からビット 47 までの 1 ビットセットの整数である必要があります (ビット mask="0x100"
8 キーワード (keyword)設定する場合などmask="256"
)。 ビット 48 から 63 は Microsoft によって定義され (または winmeta.xml
を参照winmeta.h
)、キーワード (keyword)要素では使用できません。
シンボル属性とメッセージ属性は省略可能です。
次の例は、キーワード (keyword)を定義する方法を示しています。
<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="Microsoft-Windows-SampleProvider"
guid="{1db28f2e-8f80-4027-8c5a-a11f7f10f62d}"
symbol="PROVIDER_GUID"
resourceFileName="<path to the exe or dll that contains the metadata resources>"
messageFileName="<path to the exe or dll that contains the string resources>"
message="$(string.Provider.Name)">
. . .
<keywords>
<keyword name="Read" mask="0x1" symbol="READ_KEYWORD"/>
<keyword name="Write" mask="0x2" symbol="WRITE_KEYWORD"/>
<keyword name="Local" mask="0x4" symbol="LOCAL_KEYWORD"/>
<keyword name="Remote" mask="0x8" symbol="REMOTE_KEYWORD"/>
</keywords>
. . .
</provider>
</events>
</instrumentation>
<localization>
<resources culture="en-US">
<stringTable>
<string id="Provider.Name" value="Sample Provider"/>
</stringTable>
</resources>
</localization>
</instrumentationManifest>