Calificadores MOF de seguimiento de eventos
Use los calificadores definidos en esta sección al crear la clase MOF del proveedor, la clase MOF de eventos, la clase MOFde tipo de evento y las propiedades de la clase MOF de tipo de evento. Para obtener un ejemplo que incluya algunos de estos calificadores, consulte Publicación del esquema de eventos.
Calificadores de clase MOF del proveedor
En la tabla siguiente se enumeran los calificadores que puede especificar en una clase MOF del proveedor.
Calificador: | Tipo de datos | Descripción |
---|---|---|
Guid | String | Necesario. 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 evento (la clase primaria que agrupa las clases de tipo de evento relacionadas).
Calificador: | Tipo de datos | Descripción |
---|---|---|
Guid | String | Necesario. 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. Miembro GUID , para 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 <classname>_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: | Value | Descripción |
---|---|---|
EventType | Entero | Necesario. 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 eventos), especifique el valor del tipo de evento como una matriz de enteros, por ejemplo, EventType{12,15}. |
EventTypeName | String | 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 eventos), 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 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Bits | Especifica las posiciones de bits que se asignan a los valores de cadena. Si especifica este calificador, también debe especificar el calificador BitValues . | ||||||||||
BitValues | Valores de cadena. Si también se especifica el calificador BitMap , las cadenas corresponden directamente a los valores del calificador BitMap . De lo contrario, supongamos 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). | ||||||||||
Extensión | 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:
|
||||||||||
Formato | 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:
|
||||||||||
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 object. Los consumidores deben omitir el tipo de datos y el calificador format si la propiedad incluye la extensión SizeT . 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 valor PointerSize 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 Pointer; no use PointerType. |
||||||||||
StringTermination | Indica cómo finaliza la propiedad de cadena. Por ejemplo, StringTermination("NullTerminated") indica que la propiedad de cadena está terminada en null. Los valores posibles son:
|
||||||||||
ValueDescriptions | Proporciona descripciones para cada valor del calificador Valores . Las funciones 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 el índice entero o los valores de marca que se asignan a los valores de cadena. Si especifica este calificador, también debe especificar el calificador Values 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.
|
||||||||||
Valores | Valores de cadena. Si también se especifica el calificador ValueMap , las cadenas corresponden directamente a los valores del calificador ValueMap . De lo contrario, supongamos que el valor de la propiedad es un índice de base cero en las cadenas de valor. | ||||||||||
ValueType | Indica si los valores valueMap son valores de índice entero 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 incrementa 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 un controlador usaría 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 calificadores Values y ValueMap , que especifican el nivel posible y habilitan los valores de marca. ValueMap para los valores de marca de habilitación deben ser valores de bit (marca). 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 TdhEnumerateProviderFieldInformation y 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 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;
};