Definiera kanaler
Händelser kan skrivas till händelseloggkanaler, loggfiler för händelsespårning eller både och. En kanal är i princip en mottagare som samlar in händelser. Om målgruppen för era evenemang använder evenemangskonsumenter, till exempel Windows Event Viewer, måste ni definiera nya kanaler för att samla in era evenemang eller importera en befintlig kanal som har definierats av en annan leverantör.
Om du vill definiera dina egna kanaler använder du elementet kanal. Om du vill definiera en importerad kanal använder du elementet importChannel. Du kan ange upp till åtta kanaler i valfri kombination av importerade kanaler eller kanaler som du definierar.
Kanalen måste vara av någon av fyra typer: Admin, Operational, Analytic och Debug. Varje kanaltyp har en avsedd målgrupp som avgör vilken typ av händelser du skriver till kanalen. För en beskrivning av varje typ, se ChannelType komplextyp.
Om du vill ange den kanal som en händelse skrivs till anger du händelsedefinitionens kanal attribut till samma värde som kanaldefinitionens chid attribut. Händelser kan bara skrivas till en kanal i taget, men kan också samlas in av upp till 7 andra ETW-sessioner samtidigt.
I följande exempel visas hur du importerar en kanal. Du måste ange attributen chid och namn. Attributet chid identifierar kanalen unikt – varje kanalidentifierare i listan över kanaler måste vara unik. Ange attributet till samma namn som providern använde när kanalen definierades.
<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)">
<channels>
<channel chid="c1"
name="Microsoft-Windows-BaseProvider/Admin"
symbol="CHANNEL_BASEPROVIDER_ADMIN"
type="Admin"/>
</channels>
. . .
</provider>
</events>
</instrumentation>
<localization>
<resources culture="en-US">
<stringTable>
<string id="Provider.Name" value="Microsoft-Windows-SampleProvider"/>
</stringTable>
</resources>
</localization>
</instrumentationManifest>
Även om Winmeta.xml definierar äldre kanaler som du kan importera bör du inte använda dem om du inte stöder äldre konsumenter som använder händelser från de äldre kanalerna (till exempel program eller system). Filen Winmeta.xml ingår i Windows SDK.
I följande exempel visas hur du definierar en kanal. Du måste ange attributen barn, namnoch typ. Attributet chid identifierar kanalen unikt – varje kanalidentifierare i listan över kanaler måste vara unik. Ange attributet chid till ett värde som är unikt för de kanaler som providern listar. kanalidentifieraren refereras till i en eller flera av dina händelsedefinitioner. Konventionen för namngivning av kanalen är att använda providernamnet och kanaltypen i formuläret providernamn/kanaltyp.
<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)">
<channels>
<importChannel chid="c1"
name="Microsoft-Windows-BaseProvider/Admin"
symbol="CHANNEL_BASEPROVIDER_ADMIN"
/>
<channel chid="c2"
name="Microsoft-Windows-SampleProvider/Operational"
type="Operational"
enabled="true"
/>
</channels>
. . .
</provider>
</events>
</instrumentation>
<localization>
<resources culture="en-US">
<stringTable>
<string id="Provider.Name" value="Microsoft-Windows-SampleProvider"/>
</stringTable>
</resources>
</localization>
</instrumentationManifest>