Definieren von Schlüsselwörtern zum Klassifizieren von Ereignistypen
Anbieter verwenden Schlüsselwörter, um verschiedene Ereignistypen zu klassifizieren. Beispielsweise können Sie ein Schlüsselwort für alle Leseereignisse erstellen und dann das Read-Schlüsselwort auf jedes Ereignis anwenden, das einen Lesevorgang ausführt, z. B. das Lesen aus einer Datei oder Registrierung. Consumer können dann die Bitwerte des Schlüsselworts verwenden, um nach verschiedenen Klassifizierungen von Ereignissen zu filtern. Beispielsweise könnte der Consumer alle Leseereignisse oder alle Leseereignisse aus Aufgabe X anfordern (wenn Sie ereignisse auch nach Aufgabe gruppieren). Verwenden Sie das Schlüsselwortelement, um ein Schlüsselwort zu definieren.
Eine ETW-Ablaufverfolgungssitzung kann die Schlüsselwörter (auf die gleiche Weise wie die -Ebene) verwenden, um die Ereignisse einzuschränken, die der ETW-Dienst in die Protokolldatei der Ereignisablaufverfolgung schreibt. Eine Ablaufverfolgungssitzung kann den Anbieter mithilfe von zwei Sätzen von Schlüsselwortbitmasken aktivieren: eine "Any"-Bitmaske, bei der das Ereignis geschrieben wird, wenn eines der Schlüsselwortbits des Ereignisses mit einem der in dieser Maske festgelegten Bits übereinstimmt, und eine "All"-Bitmaske, wobei für die Ereignisse, die mit dem Fall "Any" übereinstimmten, das Ereignis nur geschrieben wird, wenn alle Bits in der "All"-Maske in der Schlüsselwortbitmaske des Ereignisses vorhanden sind.
Wenn der Anbieter beispielsweise ein Ereignis definiert, das ein Leseschlüsselwort (Bit 0) und ein schlüsselwort für den lokalen Zugriff (Bit 1) angibt, und ein zweites Ereignis, das ein Leseschlüsselwort (Bit 0) und ein Schlüsselwort für den Remotezugriff (Bit 2) angibt, können Sie die Bitmaske "Any" auf 1 festlegen, um alle Leseereignisse zu empfangen, oder Sie können die Bitmaske "Any" auf 1 und die Bitmaske "All" auf 3 festlegen, um nur lokale Leseberechtigungen zu empfangen.
Sie müssen den Namen und die Maskierungsattribute des Schlüsselworts angeben. Die Maske darf nur ein Bit zwischen Bit 0 und Bit 47 festlegen. Die Bits 48 bis 64 sind reserviert.
Die Symbol- und Meldungsattribute sind optional.
Das folgende Beispiel zeigt, wie ein Schlüsselwort definiert wird.
<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>