Definición de canales

Los eventos se pueden escribir en canales de registro de eventos, archivos de registro de seguimiento de eventos o ambos. Un canal es básicamente un receptor que recopila eventos. Si la audiencia de destino de los eventos usa consumidores de eventos como windows Visor de eventos, debe definir nuevos canales para recopilar los eventos o importar un canal existente definido por otro proveedor.

Para definir sus propios canales, use el elemento channel . Para definir un canal importado, use el elemento importChannel . Puede especificar hasta ocho canales en cualquier combinación de canales o canales importados que defina.

El canal debe ser de uno de los cuatro tipos: Administración, Operativo, Analítico y Depuración. Cada tipo de canal tiene una audiencia prevista, que determina el tipo de eventos que se escriben en el canal. Para obtener una descripción de cada tipo, vea el tipo complejo ChannelType .

Para especificar el canal en el que se escribe un evento, establezca el atributo channel de la definición de evento en el mismo valor que el atributo chid de la definición de canal. Los eventos solo se pueden escribir en un canal a la vez, pero también se pueden recopilar hasta 7 otras sesiones ETW al mismo tiempo.

En el ejemplo siguiente se muestra cómo importar un canal. Debe establecer los atributos chid y name . El atributo chid identifica de forma única el canal; cada identificador de canal de la lista de canales debe ser único. Establezca el atributo name en el mismo nombre que usó el proveedor al definir el 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>

Aunque Winmeta.xml define canales heredados que se pueden importar, no debe usarlos a menos que admita consumidores heredados que consuman eventos de los canales heredados (por ejemplo, Aplicación o Sistema). El archivo Winmeta.xml se incluye en Windows SDK.

En el ejemplo siguiente se muestra cómo definir un canal. Debe establecer los atributos chid, name y type . El atributo chid identifica de forma única el canal; cada identificador de canal de la lista de canales debe ser único. Establezca el atributo chid en un valor único para los canales que enumera el proveedor; Se hace referencia al identificador de canal en una o varias de las definiciones de eventos. La convención para asignar un nombre al canal consiste en usar el nombre del proveedor y el tipo de canal con el formato 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>