Csatornák definiálása

Az események eseménynapló-csatornákra, eseménykövetési naplófájlba vagy mindkettőbe írhatók. A csatorna lényegében egy gyűjtőhely, amely összegyűjti az eseményeket. Ha az események célközönsége olyan eseményfelhasználókat használ, mint a Windows Eseménynapló, új csatornákat kell definiálnia az események gyűjtéséhez vagy egy másik szolgáltató által meghatározott meglévő csatorna importálásához.

Saját csatornák definiálásához használja a csatorna elemet. Importált csatorna definiálásához használja az importChannel elemet. Az importált csatornák és csatornák tetszőleges kombinációjában legfeljebb nyolc csatornát adhat meg.

A csatornának a következő négy típus egyikének kell lennie: Rendszergazda, Operatív, Elemzés és Hibakeresés. Minden csatornatípusnak van egy célközönsége, amely meghatározza a csatornába írt események típusát. Az egyes típusok leírását a ChannelType összetett típusában találhatja meg.

Annak a csatornának a megadásához, amelyre egy eseményt ír, állítsa az eseménydefiníció csatorna attribútumát a csatornadefiníció chid attribútumával megegyező értékre. Az események egyszerre csak egy csatornára írhatók, de akár 7 másik ETW-munkamenetben is gyűjthetők egyszerre.

Az alábbi példa bemutatja, hogyan importálhat egy csatornát. Meg kell adnia a chid és név attribútumokat. A chid attribútum egyedileg azonosítja a csatornát – a csatornák listájában szereplő minden csatornaazonosítónak egyedinek kell lennie. Állítsa a név attribútumot arra a névre, amelyet a szolgáltató használt a csatorna meghatározásakor.

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

Bár a Winmeta.xml meghatározza az importálható örökölt csatornákat, kerülje azok használatát, kivéve, ha olyan régi felhasználókat támogat, akik a régi csatornákon keresztül vesznek igénybe eseményeket (például alkalmazás vagy rendszer esetén). A Winmeta.xml fájl szerepel a Windows SDK-ban.

Az alábbi példa bemutatja, hogyan definiálhat egy csatornát. Meg kell adnia a chid, névés típus attribútumokat. A chid attribútum egyedileg azonosítja a csatornát – a csatornák listájában szereplő minden csatornaazonosítónak egyedinek kell lennie. Állítsa be a chid attribútumot olyan értékre, amely egyedi a szolgáltató által listázott csatornákhoz; a csatornaazonosítóra egy vagy több eseménydefiníció hivatkozik. A csatorna elnevezésének konvenciója az, hogy a szolgáltató nevét és a csatorna típusát használjuk a következő formában: szolgáltatónév/csatornatípus.

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