다음을 통해 공유


작업 및 Opcode 정의

공급자는 작업 및 opcode를 사용하여 이벤트를 논리적으로 그룹화합니다. 이벤트를 그룹화하면 소비자가 특정 작업 및 opcode 조합을 포함하는 이벤트만 쿼리할 수 있습니다. 일반적으로 작업을 사용하여 네트워킹 또는 데이터베이스 구성 요소와 같은 공급자의 주요 구성 요소를 식별합니다. 그런 다음 opcode를 사용하여 네트워킹 구성 요소에 대한 송신 및 수신 작업과 같이 구성 요소가 수행하는 작업을 식별할 수 있습니다. 구성 요소가 하나만 있는 경우 작업을 사용하여 연결 또는 연결 끊기와 같은 구성 요소의 주요 작업을 반영하고 opcode를 사용하여 레지스트리 읽기와 같은 작업 내의 작업을 반영할 수 있습니다. 작업을 지정하지 않고 opcode를 사용할 수도 있습니다. 작업 및 opcode를 사용하여 소비자에 대한 이벤트를 그룹화하는 방법은 전적으로 사용자에게 달려 있습니다.

작업을 정의하려면 task 요소를 사용합니다. opcode를 정의하려면 opcode 요소를 사용합니다. 최대 228개의 opcode를 지정할 수 있습니다. 작업 은 0보다 커야 합니다. opcode는 10에서 239까지의 범위에 있어야 합니다. Winmeta.xml 파일은 사용자 고유의 작업을 정의하는 대신 사용할 수 있는 일반적인 작업을 정의합니다.

다음 예제에서는 여러 작업 및 opcode를 정의하는 방법을 보여 줍니다.

<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)">

                . . .

                <tasks>
                    <task name="Disconnect" 
                          symbol="TASK_DISCONNECT"
                          value="1"
                          message="$(string.Task.Disconnect)"/>
 
                    <task name="Connect" 
                          symbol="TASK_CONNECT"
                          value="2"
                          message="$(string.Task.Connect)">
                    </task>

                    <task name="Validate" 
                          symbol="TASK_VALIDATE"
                          value="3"
                          message="$(string.Task.Validate)">
                    </task>
                </tasks>

                <opcodes>
                    <opcode name="Initialize" 
                            symbol="OPCODE_INITIALIZE" 
                            value="12"
                            message="$(string.Opcode.Initialize)"/>

                    <opcode name="Cleanup" 
                            symbol="OPCODE_CLEANUP" 
                            value="13"
                            message="$(string.Opcode.Cleanup)"/>
                 </opcodes>

                . . .

            </provider>
        </events>
    </instrumentation>

    <localization>
        <resources culture="en-US">
            <stringTable>
                <string id="Provider.Name" value="Sample Provider"/>
                <string id="Task.Disconnect" value="Disconnect"/>
                <string id="Task.Connect" value="Connect"/>
                <string id="Task.Connect.ReadRegistry" value="ReadRegistry"/>
                <string id="Task.Validate" value="Connect"/>
                <string id="Task.Validate.GetRules" value="GetRules"/>
                <string id="Opcode.Initialize" value="Initialize"/>
                <string id="Opcode.Cleanup" value="Cleanup"/>
            </stringTable>
        </resources>
    </localization>

</instrumentationManifest>