Condividi tramite


Definizione di attività e opcode

I provider usano attività e opcode per raggruppare logicamente gli eventi. Gli eventi di raggruppamento consentono agli utenti di eseguire query solo per gli eventi che contengono combinazioni di attività e opcode specifiche. In genere, si usano attività per identificare un componente principale del provider, ad esempio il componente di rete o di database. È quindi possibile usare opcodes per identificare le operazioni eseguite dal componente, ad esempio le operazioni di invio e ricezione per un componente di rete. Se si dispone di un solo componente, è possibile usare l'attività per riflettere un'operazione principale nel componente, ad esempio connettersi o disconnettersi e usare il codice opcode per riflettere un'attività all'interno dell'operazione, ad esempio la lettura del Registro di sistema. È anche possibile usare opcode senza specificare un'attività. Come si usano attività e opcodes per raggruppare gli eventi per il consumer è completamente disponibile.

Per definire un'attività, usare l'elemento attività . Per definire un opcode, usare l'elemento opcode . È possibile specificare fino a 228 opcode. Il valore dell'attività deve essere maggiore di 0. I codici opcode devono trovarsi nell'intervallo compreso tra 10 e 239. Il file Winmeta.xml definisce operazioni comuni che è possibile usare invece di definire il proprio.

Nell'esempio seguente viene illustrato come definire diverse attività e 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>