Partager via


Définition de canaux

Les événements peuvent être écrits dans les canaux du journal des événements, les fichiers journaux de suivi des événements ou les deux. Un canal est essentiellement un récepteur qui collecte des événements. Si le public cible de vos événements utilise des consommateurs d’événements tels que windows observateur d'événements, vous devez définir de nouveaux canaux pour collecter vos événements ou importer un canal existant défini par un autre fournisseur.

Pour définir vos propres canaux, utilisez l’élément channel . Pour définir un canal importé, utilisez l’élément importChannel . Vous pouvez spécifier jusqu’à huit canaux dans n’importe quelle combinaison de canaux importés ou de canaux que vous définissez.

Le canal doit être de l’un des quatre types : Administration, Opérationnel, Analytique et Débogage. Chaque type de canal a une audience prévue, qui détermine le type d’événements que vous écrivez dans le canal. Pour obtenir une description de chaque type, consultez le type complexe ChannelType .

Pour spécifier le canal sur lequel un événement est écrit, définissez l’attribut de canal de la définition d’événement sur la même valeur que l’attribut chid de la définition de canal. Les événements ne peuvent être écrits que sur un canal à la fois, mais peuvent également être collectés par jusqu’à 7 autres sessions ETW en même temps.

L’exemple suivant montre comment importer un canal. Vous devez définir les attributs chid et name . L’attribut chid identifie de manière unique le canal. Chaque identificateur de canal dans votre liste de canaux doit être unique. Définissez l’attribut name sur le même nom que celui utilisé par le fournisseur lorsqu’il a défini le canal.

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

Bien que Winmeta.xml définisse les canaux hérités que vous pouvez importer, vous ne devez pas les utiliser, sauf si vous prendz en charge les consommateurs hérités qui consomment des événements hors des canaux hérités (par exemple, Application ou Système). Le fichier Winmeta.xml est inclus dans le Kit de développement logiciel (SDK) Windows.

L’exemple suivant montre comment définir un canal. Vous devez définir les attributs chid, name et type . L’attribut chid identifie de manière unique le canal. Chaque identificateur de canal dans votre liste de canaux doit être unique. Définissez l’attribut chid sur une valeur unique pour les canaux que votre fournisseur répertorie ; l’identificateur de canal est référencé dans une ou plusieurs de vos définitions d’événement. La convention pour nommer le canal consiste à utiliser le nom du fournisseur et le type de canal sous la forme, providername/channeltype.

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