Compartir a través de


Calificadores MOF de seguimiento de eventos

Use los calificadores definidos en esta sección al crear la clase MOF del proveedor de , clase MOF de evento, tipo de evento MOFy las propiedades de la clase MOF de tipo de evento. Para obtener un ejemplo que incluya algunos de estos calificadores, vea Publicar el esquema de eventos.

Calificadores de clase MOF del proveedor

En la tabla siguiente se enumeran los calificadores que puede especificar en una clase MOF de proveedor.

Calificador Tipo de dato Descripción
guid de cadena Obligatorio. Guid de cadena que identifica de forma única un proveedor. Por ejemplo, Guid("{3F92E6E0-9886-434e-85DB-0D11D3904C0A}"). Este es el mismo GUID que se usa al llamar a la función RegisterTraceGuids para registrar el proveedor.

 

Calificadores de clase MOF de eventos

En la tabla siguiente se enumeran los calificadores que puede especificar en una clase de eventos (la clase primaria que agrupa las clases de tipo de evento relacionadas).

Calificador Tipo de dato Descripción
guid de cadena Obligatorio. Guid de cadena que identifica una clase de eventos. Por ejemplo, Guid("{3F92E6E0-9886-434e-85DB-0D11D3904C0A}"). Los proveedores de eventos usan el Guid para establecer el EVENT_TRACE_HEADER. Guid miembro, de modo que los consumidores puedan determinar la clase de eventos que reciben.
EventVersion entero Este calificador es opcional para la versión más reciente de una clase de seguimiento de eventos y es necesario para todas las versiones anteriores de la clase. La versión más reciente de la clase no especifica el calificador EventVersion o tiene el número de versión más alto. Los números de versión comienzan por 0, por ejemplo, EventVersion(0). Normalmente, al crear una nueva versión de la clase, también cambia el nombre de la versión anterior a <nombredeclase>_Vn, donde n es un número incremental a partir de 0. Para obtener un ejemplo, vea FileIo y FileIo_V0.

 

Calificadores de clase MOF de tipo de evento

En la tabla siguiente se enumeran los calificadores que puede especificar en una clase de tipo de evento (la clase que define los datos de la propiedad de evento).

Calificador Valor Descripción
EventType de entero Obligatorio. Identifica la clase de tipo de evento. Por ejemplo, EventType(1). El proveedor de eventos usa el mismo valor de tipo de evento para establecer EVENT_TRACE_HEADER. Class.Type. Si se usa la misma clase MOF para varios tipos de eventos (porque usan los mismos datos de evento), especifique el valor de tipo de evento como una matriz de enteros, por ejemplo, EventType{12,15}.
EventTypeName cadena Opcional. Describe el tipo de evento. Por ejemplo, EventTypeName("Start"). Si se usa la misma clase MOF para varios tipos de eventos (porque usan los mismos datos de evento), especifique el valor del nombre del tipo de evento como una matriz de cadenas, por ejemplo, EventTypeName{"Start", "End"}. Los elementos de la matriz EventTypeName corresponden directamente a la matriz EventType.

 

Calificadores de propiedad

En la tabla siguiente se enumeran los calificadores que puede especificar en una propiedad .

Calificador Descripción
de mapa de bits de Especifica las posiciones de bits que se asignan a valores de cadena. Si especifica este calificador, también debe especificar el calificador BitValues.
bitValues de Valores de cadena. Si también se especifica el calificador bitmap de, las cadenas corresponden directamente a los valores del calificador de bitMap de. De lo contrario, suponga que el valor de la propiedad es un índice basado en uno en las cadenas de valor (bit uno corresponde a la primera cadena de la lista).
de extensión de Proporciona información adicional sobre cómo consumir (interpretar) los datos. El valor de extensión no distingue mayúsculas de minúsculas. Incluya el valor entre comillas, por ejemplo, Extension("Guid"). Los valores de extensión posibles son:
Guid de
Indica que los datos de propiedad son guid. El tipo de datos MOF debe ser objeto. Se espera que la carga sea una estructura guid de.
IPAddr e IPAddrV4
Los datos son una dirección IP V4. El tipo de datos MOF debe ser objeto. Se espera que la carga sea un long sin signo. Cada byte del long sin signo representa una de las cuatro partes de la dirección IP (p1.p2.p3.p4). El byte de orden bajo contiene el valor de p1, el byte siguiente contiene el valor de p2, etc.
antes de Windows Vista: no se admite la extensión IPAddrV4.
IPAddrV6
Los datos son una dirección IP V6. El tipo de datos MOF debe ser objeto. Se espera que la carga sea una estructura IN6_ADDR.
antes de Windows Vista: no se admite la extensión IPAddrV6.
NoPrint
Indica que el consumidor no debe imprimir estos datos.
puerto de
Los datos identifican un número de puerto. El tipo de datos MOF debe ser objeto. Se espera que la carga sea un short sin signo.
RString
Los caracteres de nueva línea se reemplazaron por espacios. Se espera que la carga sea una cadena ANSI terminada en null.
RWString
Los caracteres de nueva línea se reemplazaron por espacios. Se espera que la carga sea una cadena de caracteres anchos terminada en NULL.
sid de
Los datos representan un SID de blob binario. El tipo de datos MOF debe ser objeto.
El SID tiene una longitud variable. El valor contenido en los primeros 4 bytes (ULONG) indica si el blob contiene un SID. Si los primeros 4 bytes (ULONG) del blob no es cero, el blob contiene un SID. La primera parte del blob contiene el TOKEN_USER (la estructura se alinea en un límite de 8 bytes) y la segunda parte contiene el SID. Para abordar la parte del SID del blob:
  • Establecimiento de un puntero de bytes al principio del blob
  • Multiplique el tamaño del puntero para el registro de eventos en 2 y agregue el producto al puntero de bytes (el pointerSize miembro de TRACE_LOGFILE_HEADER contiene el valor de tamaño del puntero).

Puede usar la siguiente macro para determinar la longitud del SID.
#define SeLengthSid( Sid ) \
  (8 + (4 * ((SID *)Sid)->SubAuthorityCount))
SizeT
Indica que la propiedad contiene un valor de puntero. El tamaño del valor de puntero depende del sistema operativo utilizado para registrar el evento; la carga contendrá un valor de 4 bytes para sistemas de 32 bits o un valor de 8 bytes para sistemas de 64 bits. El tipo de datos MOF debe ser objeto.
Los consumidores deben omitir el tipo de datos y calificador Format si la propiedad incluye la extensión sizeT de. Para determinar el tamaño de los datos que se van a leer para la propiedad, use:
Antes de Windows Vista: es posible que el PointerSize valor no sea preciso. Por ejemplo, en un equipo de 64 bits, una aplicación de 32 bits registrará punteros de 4 bytes; sin embargo, la sesión establecerá PointerSize en 8.
Variant
Los datos representan un blob. Los cuatro primeros bytes (uint32) indican el tamaño del blob. El tipo de datos MOF debe ser objeto.
WmiTime
Traduce la marca de tiempo a la hora del sistema. El tipo de datos MOF debe ser objeto. Se espera que la carga sea un entero de 64 bits sin signo.
Antes de Windows Vista: No disponible.
formato de Define el formato de los datos de propiedad. Por ejemplo, incluir Format("w") en una propiedad de cadena indica que la cadena es una cadena ancha. Los valores posibles son:
Término Descripción
c
Muestra el valor de la propiedad como un carácter ASCII. Puede usar este calificador con tipos de datos uint8.
s
Trate la matriz de caracteres como una cadena terminada en NULL. La cadena es una cadena de caracteres anchos si el tipo de datos es char16; de lo contrario, la cadena es una cadena de caracteres ASCII.
w
El valor de la propiedad es una cadena de caracteres anchos. Puede usar este calificador con cadena tipos de datos.
x
Muestra el valor de la propiedad como un número hexadecimal. Puede usar este calificador con tipos de datos enteros de 16, 32 y 64 bits.

 

puntero

Indica que la propiedad contiene un valor de puntero. El tamaño del valor de puntero depende del sistema operativo utilizado para registrar el evento; la carga contendrá un valor de 4 bytes para sistemas de 32 bits o un valor de 8 bytes para sistemas de 64 bits. El tipo de datos MOF debe ser objeto.

Los consumidores deben omitir el tipo de datos y calificador Format si la propiedad incluye la extensión sizeT de. Para determinar el tamaño de los datos que se van a leer para la propiedad, use:

Antes de Windows Vista: es posible que el PointerSize valor no sea preciso. Por ejemplo, en un equipo de 64 bits, una aplicación de 32 bits registrará punteros de 4 bytes; sin embargo, la sesión establecerá PointerSize en 8.

Tenga en cuenta que algunos eventos usan pointerType en lugar de puntero; no use PointerType.

StringTermination Indica cómo finaliza la propiedad de cadena. Por ejemplo, StringTermination("NullTerminated") indica que la propiedad string está terminada en null. Los valores posibles son:
counted

La longitud de la cadena se incrusta al principio de la cadena como un valor de USHORT.

NotCounted

La cadena no está terminada en null y la longitud de la cadena no está incrustada al principio de la cadena. En este caso, la cadena debe ser el último elemento y ocupar todo el espacio al final de los datos del evento.

NullTerminated

La cadena está terminada en null. Si no especifica el calificador de StringTermination, se supone que la cadena está terminada en null.

ReverseCounted

La longitud de la cadena se incrusta al principio de la cadena como un USHORT valor en formato big-endian.

ValueDescriptions Proporciona descripciones para cada valor del calificador de Valores. Las funciones de TdhEnumerateProviderFieldInformation y TdhQueryProviderFieldInformation devuelven estas descripciones al intentar recuperar información de nivel y palabra clave. Las descripciones son opcionales. Si no proporciona las descripciones, las funciones devuelven null. Consulte Especificación de los valores de nivel y habilitación de marcas para un proveedor para obtener más detalles.
ValueMap Especifica los valores de índice entero o marca que se asignan a valores de cadena. Si especifica este calificador, también debe especificar el calificador Valores y, opcionalmente, el calificador ValueType. Tenga en cuenta que ETW no admite la opción WMI de tener cadenas para los valores de mapa de valores.

En el ejemplo siguiente se muestra cómo usar los calificadores ValueMap, Values y ValueType.

ValueType("flag"),
ValueMap {"0x01", "0x02", "0x04", "0x08"},
Values {"ValueMapFlag1", "ValueMapFlag2", "ValueMapFlag4", "ValueMapFlag8"}]
valores Valores de cadena. Si también se especifica el calificador valueMap de, las cadenas corresponden directamente a los valores del calificador de ValueMap. De lo contrario, suponga que el valor de la propiedad es un índice de base cero en las cadenas de valor.
ValueType de Indica si los valores de ValueMap son valores de índice enteros o valores de marca de bits. Si no especifica este calificador, se asumen los valores de índice entero. Para especificar que los valores son valores de índice entero, use ValueType("index"). Para especificar que los valores son valores de marca de bits, use ValueType("flag").
WmiDataId Cada propiedad debe contener el calificador WmiDataId . WmiDataId define el orden en el que el consumidor lee los datos del evento. El valor de WmiDataId comienza en 1 e incrementos para cada propiedad de la clase . Por ejemplo, WmiDataId(1).
XMLFragment Indica que los datos están en formato XML y listos para mostrarse sin formato adicional.

 

Especificación de los valores de nivel y habilitación de marcas para un proveedor

Para documentar el nivel y habilitar las marcas que usaría un controlador para habilitar el proveedor, incluya las propiedades "Level" y "Flags" en la clase MOF del proveedor. Los nombres de propiedad Level y Flags distinguen mayúsculas de minúsculas. Las propiedades deben incluir los Valores y calificadores ValueMap, que especifican el nivel posible y habilitan los valores de marca. El valueMap de para los valores de marca de habilitación debe ser valores bit (flag). El calificador ValueDescriptions es opcional, pero debe usarlo para proporcionar descripciones para cada valor posible. Las descripciones se usan cuando alguien llama a las funciones de TdhEnumerateProviderFieldInformation y funciones TdhQueryProviderFieldInformation para obtener el nivel posible y habilitar los valores de marcas (palabras clave) para el proveedor.

A continuación se muestra una clase de proveedor que especifica el nivel posible y habilita los valores de las marcas.

[Dynamic,
 Description("IIS_Trace") : amended,
 guid("{3a2a4e84-4c21-4981-ae10-3fda0d9b0f83}"),
 locale("MS\\0x409")]
class IIS_Trace : EventTrace
{
    [Description ("Enable Flags") : amended,
        ValueDescriptions{
             "Allow_tracing_only_selected_requests ",
             "IIS_authentication_events ",
             "IIS_security_events ",
             "IIS_filter_events ",
             "IIS_static_file_events ",
             "IIS_CGI_events ",
             "IIS_compression_events ",
             "IIS_cache_events ",
             "IIS_request_notifications_events ",
             "IIS_module_events ",
             "IIS_FastCGI_events "},
        DefineValues{
             "UseUrlFilter",
             "IISAuthentication",
             "IISSecurity",
             "IISFilter",
             "IISStaticFile",
             "IISCGI",
             "IISCompression",
             "IISCache",
             "IISRequestNotification",
             "IISModule",
             "IISFastCGI"},
        Values{
             "UseUrlFilter",
             "IISAuthentication",
             "IISSecurity",
             "IISFilter",
             "IISStaticFile",
             "IISCGI",
             "IISCompression",
             "IISCache",
             "IISRequestNotification",
             "IISModule",
             "IISFastCGI"},
        ValueMap{
             "0x00000001",
             "0x00000002",
             "0x00000004",
             "0x00000008",
             "0x00000010",
             "0x00000020",
             "0x00000040",
             "0x00000080",
             "0x00000100",
             "0x00000200",
             "0x00001000"}: amended
    ]
    uint32 Flags;

    [Description ("Levels") : amended,
        ValueDescriptions{
            "Abnormal exit or termination",
            "Severe errors that need logging",
            "Warnings such as allocation failure",
            "Includes non-error cases",
            "Detailed traces from intermediate steps" } : amended,
         DefineValues{
            "TRACE_LEVEL_FATAL",
            "TRACE_LEVEL_ERROR",
            "TRACE_LEVEL_WARNING"
            "TRACE_LEVEL_INFORMATION",
            "TRACE_LEVEL_VERBOSE" },
        Values{
            "Fatal",
            "Error",
            "Warning",
            "Information",
            "Verbose" },
        ValueMap{
            "0x1",
            "0x2",
            "0x3",
            "0x4",
            "0x5" },
        ValueType("index")
    ]
    uint32 Level;
};