이벤트 형식을 분류하는 데 사용되는 키워드 정의
ETW 키워드는 이벤트 범주 집합에서 이벤트의 멤버 자격을 나타내는 데 사용되는 64비트 비트 마스크입니다. 키워드의 각 비트는 범주에 해당합니다. 이벤트의 키워드에 비트 집합이 있는 경우 이벤트는 해당 비트에 해당하는 이벤트 범주에 속합니다.
키워드의 하위 48비트(비트 마스크 0x0000FFFFFFFFFFFF)는 이벤트 공급자(매니페스트 작성자)에 의해 정의됩니다. 키워드의 상위 16비트(비트 마스크 0xFFFF000000000000)는 Microsoft에서 정의합니다. Microsoft에서 정의한 키워드의 정의는 Windows 키트 포함 폴더를 참조 winmeta.h 하거나 winmeta.xml 참조하세요.
공급자는 키워드를 사용하여 다양한 유형의 이벤트를 분류합니다. 예를 들어 키워드 비트 0(키워드 값 0x1)을 읽기 범주로 정의한 다음 파일 또는 레지스트리에서 읽기와 같은 읽기 작업을 수행하는 모든 이벤트에 읽기 키워드를 적용할 수 있습니다. 그런 다음 소비자는 키워드 비트 값을 사용하여 다양한 이벤트 분류를 필터링할 수 있습니다. 예를 들어 소비자는 이벤트 컬렉션 세션의 MatchAnyKeyword 속성을 설정하여 세션이 읽기 범주의 이벤트만 수집하도록 0x1 할 수 있습니다.
ETW 이벤트 컬렉션 세션은 키워드를 사용하여(수준을 사용하는 것과 동일한 방식으로) ETW 서비스가 이벤트 추적 로그 파일에 쓰는 이벤트를 제한할 수 있습니다. 추적 세션은 두 개의 키워드 비트 마스크 집합을 사용하여 공급자를 활성화할 수 있습니다. 즉, 이벤트의 키워드 비트가 이 마스크에 설정된 비트와 일치하는 경우 이벤트가 기록되는 "MatchAnyKeyword" 비트 마스크입니다. "MatchAllKeyword" 대/소문자와 일치하는 이벤트의 경우 "MatchAllKeyword" 마스크의 모든 비트가 이벤트의 키워드 비트 마스크에 있는 경우에만 이벤트가 기록되는 "MatchAllKeyword" 비트 마스크입니다.
예를 들어 공급자가 읽기 키워드(비트 0 = ) 및 로컬 액세스 키워드(비트 1 = 0x10x2)를 지정하는 이벤트와 읽기 키워드(비트 0 = 0x1) 및 원격 액세스 키워드(비트 2 =0x4)를 지정하는 두 번째 이벤트를 정의하는 경우 이벤트 컬렉션 세션의 "MatchAnyKeyword" 비트 마스크 0x1 를 (읽기)로 설정하고 "MatchAllKeyword" 비트 마스크를 모든 읽기 이벤트를 수신할 0x0 수 없음으로 설정할 수 있습니다. 또는 "MatchAnyKeyword" 비트 마스크를 로컬 읽기만 수신하도록 0x1 "MatchAllKeyword" 비트 마스크를 0x3 (읽기 + 로컬)로 설정할 수 있습니다.
공급자에 대한 키워드를 정의하려면 키워드 요소를 사용합니다. 공급자에 대해 키워드가 정의되면 이벤트 요소의 키워드 특성을 사용하여 공급자의 이벤트에 키워드를 할당할 수 있습니다.
키워드의 이름 및 마스크 특성을 지정해야 합니다. 마스크는 키워드 비트 8과 같이 mask="256"mask="0x100" 비트 0과 비트 47 사이의 1비트 집합이 있는 정수여야 합니다. 비트 48~63은 Microsoft(참조 winmeta.h 또는 winmeta.xml)에서 정의되며 키워드 요소에서 사용할 수 없습니다.
기호 및 메시지 특성은 선택 사항입니다.
다음 예제에서는 키워드를 정의하는 방법을 보여줍니다.
<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>