Műszerezési manifeszt írása

Az alkalmazások és a DLL-ek rendszerállapot-jegyzék használatával azonosítják a rendszerállapot-szolgáltatókat és a szolgáltatók által írt eseményeket. A jegyzék egy XML-fájl, amely a szolgáltatót azonosító elemeket tartalmazza. A konvenció az , hogy a .man kiterjesztést használja a jegyzékhez. A jegyzéknek meg kell felelnie az XSD eseményjegyzékének. A sémával kapcsolatos részletekért lásd EventManifest séma.

A rendszerállapot-szolgáltató bármely olyan alkalmazás vagy DLL, amely meghívja az EventWriteEx, EventWriteStringvagy EventWriteTransfer függvényeket, hogy eseményeket írjon egy Eseménykövetési (ETW) nyomkövetési munkamenetbe vagy eseménynapló-csatornába. Az alkalmazások meghatározhatnak egyetlen rendszerállapot-szolgáltatót, amely lefedi az általa írt összes eseményt, vagy meghatározhat egy szolgáltatót az alkalmazáshoz és egy szolgáltatót az egyes DLL-ekhez. Az alkalmazás által a jegyzékben definiált szolgáltatók száma kizárólag attól függ, hogy az alkalmazás hogyan szeretné rendszerezni az általa írt eseményeket.

Az egyes DLL-ek szolgáltatójának megadásának előnye, hogy ezután engedélyezheti és letilthatja az egyes szolgáltatókat, így az általuk létrehozott eseményeket. Ez az előny csak akkor érvényes, ha a szolgáltatót egy ETW nyomkövetési munkamenet aktiválja. Az eseménynapló-csatornát meghatározó események mindig erre a csatornára lesznek írva.

A jegyzéknek azonosítania kell a szolgáltatót és az általa írt eseményeket, de a többi metaadat, például csatornák, szintek és kulcsszavak nem kötelezőek; attól függ, hogy ön határozza-e meg az opcionális metaadatokat, attól függ, hogy ki fogja használni az eseményeket. Ha például a rendszergazdák vagy a támogatási személyzet egy olyan eszközzel használják az eseményeket, mint a Windows Eseménynapló, amely eseményeket olvas az eseménynapló-csatornákról, akkor meg kell határoznia azokat a csatornákat, amelyekre az eseményeket megírták. Ha azonban a szolgáltatót csak egy ETW nyomkövetési munkamenet engedélyezi, akkor nem kell csatornákat definiálnia.

Bár a szintek, a tevékenységek, az opcode-ok és a kulcsszavak metaadatai nem kötelezőek, az események logikai csoportosítására vagy gyűjtőbe foglalására érdemes őket használni. Az események csoportosításával a felhasználók csak azokat az eseményeket használhatják fel, amelyek fontosak. A fogyasztó például lekérdezheti az összes olyan eseményt, ahol a szint "kritikus" és a kulcsszó "írás", vagy lekérdezhet minden eseményt, amelyet egy adott feladat írt.

Amellett, hogy a felhasználók szintet és kulcsszavakat használnak bizonyos típusú események felhasználásához, az ETW nyomkövetési munkamenetei a szint és a kulcsszó metaadataival tájékoztathatják az ETW-t az eseménykövetési naplóba írt események korlátozására. A munkamenet például csak olyan eseményekre korlátozhatja az eseményeket, ahol a szint "hiba" vagy "kritikus", a kulcsszó pedig "olvasás".

A szolgáltató definiálhat olyan szűrőket, amelyeket a munkamenetek az események eseményadatokon alapuló szűrésére használnak. Az ETW szinttel és kulcsszavakkal határozza meg, hogy az esemény a naplóba van-e írva, de szűrőkkel, a szolgáltató a szűrőadat-feltételek alapján határozza meg, hogy az eseményt az adott munkamenetbe írja-e. A szűrők csak akkor alkalmazhatók, ha egy ETW nyomkövetési munkamenet aktiválja a szolgáltatót.

A következő szakaszok bemutatják a jegyzék összetevőinek definiálását:

Bár manuálisan is létrehozhat egy eszközjegyzéket, érdemes megfontolnia a Windows SDK \Bin mappájában található ECManGen.exe eszközt. A ECManGen.exe eszköz egy grafikus felhasználói felületet használ, amely végigvezeti a jegyzékek létrehozásának folyamatán anélkül, hogy XML-címkéket kellene használnia. Az eszköz használatakor az ebben a szakaszban és az EventManifest séma szakaszban található információk ismerete segít.

Ha a Visual Studio-t használja XML-szerkesztőként, hozzáadhatja a EventManifest sémát a projekthez (lásd az XML-menüt), hogy kihasználhassa az Intellisense előnyeit, a beágyazott sémaérvényesítést és egyéb funkciókat a jegyzékfájl egyszerű és pontos megírásához.

A jegyzék megírása után az üzenetfordítóval ellenőrizze a jegyzékfájlt, és hozza létre a szolgáltatóban található erőforrás- és fejlécfájlokat. További információ: Instrumentation Manifestösszeállítása.

Az alábbi példa egy teljes körűen definiált eseményjegyzék csontvázát mutatja be.

<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 ...>
                <channels>
                    <importChannel .../>
                    <channel .../>
                </channels>
                <levels>
                    <level .../>
                </levels>
                <tasks>
                    <task .../>
                </tasks>
                <opcodes>
                    <opcode .../>
                </opcodes>
                <keywords>
                    <keyword .../>
                </keywords>
                <filters>
                    <filter .../>
                </filters>
                <maps>
                    <valueMap ...>
                        <map .../>
                    </valueMap>
                    <bitMap ...>
                        <map .../>
                    </bitMap>
                </maps>
                <templates>
                    <template ...>
                        <data .../>
                        <UserData>
                            <!-- valid XML fragment -->
                        </UserData>
                    </template>
                </templates>
                <events>
                    <event .../>
                </events>
            </provider>
        </events>
    </instrumentation>

    <localization>
        <resources ...>
            <stringTable>
                <string .../>
            </stringTable>
        </resources>
    </localization>

</instrumentationManifest>