Qualificadores de MOF de rastreamento de eventos
Use os qualificadores definidos nesta seção ao criar a classe MOF do provedor, a classe MOF do evento, a classe MOF do tipo de evento e as propriedades da classe MOF do tipo de evento. Para obter um exemplo que inclui alguns desses qualificadores, consulte Publicando seu esquema de eventos.
Qualificadores de classe MOF do provedor
A tabela a seguir lista os qualificadores que você pode especificar em uma classe MOF do provedor.
Qualificador | Tipo de dados | Descrição |
---|---|---|
Guid | Cadeia de caracteres | Obrigatórios. Guid de cadeia de caracteres que identifica exclusivamente um provedor. Por exemplo, Guid("{3F92E6E0-9886-434e-85DB-0D11D3904C0A}"). Esse é o mesmo GUID que você usa quando chama a função RegisterTraceGuids para registrar seu provedor. |
Qualificadores de classe MOF de evento
A tabela a seguir lista os qualificadores que você pode especificar em uma classe de evento (a classe pai que agrupa classes de tipo de evento relacionadas).
Qualificador | Tipo de dados | Descrição |
---|---|---|
Guid | Cadeia de caracteres | Obrigatórios. Guid de cadeia de caracteres que identifica uma classe de eventos. Por exemplo, Guid("{3F92E6E0-9886-434e-85DB-0D11D3904C0A}"). Os provedores de eventos usam o Guid para definir o EVENT_TRACE_HEADER. Membro Guid , para que os consumidores possam determinar a classe de eventos que estão recebendo. |
EventVersion | Inteiro | Esse qualificador é opcional para a versão mais recente de uma classe de rastreamento de eventos e é necessário para todas as versões mais antigas da classe. A versão mais recente da classe não especifica o qualificador EventVersion ou tem o número de versão mais alto. Os números de versão começam com 0, por exemplo, EventVersion(0). Normalmente, ao criar uma nova versão da classe, você também renomeia a versão anterior para <classname>_Vn, em que n é um número incremental a partir de 0. Para obter um exemplo, consulte FileIo e FileIo_V0. |
Qualificadores de classe MOF do tipo de evento
A tabela a seguir lista os qualificadores que você pode especificar em uma classe de tipo de evento (a classe que define os dados da propriedade do evento).
Qualificador | Valor | Descrição |
---|---|---|
EventType | Inteiro | Obrigatórios. Identifica a classe de tipo de evento. Por exemplo, EventType(1). O provedor de eventos usa o mesmo valor de tipo de evento para definir EVENT_TRACE_HEADER. Class.Type. Se a mesma classe MOF for usada para vários tipos de evento (porque eles usam os mesmos dados de evento), especifique o valor do tipo de evento como uma matriz de inteiros, por exemplo, EventType{12,15}. |
EventTypeName | Cadeia de caracteres | Opcional. Descreve o tipo de evento. Por exemplo, EventTypeName("Start"). Se a mesma classe MOF for usada para vários tipos de evento (porque eles usam os mesmos dados de evento), especifique o valor do nome do tipo de evento como uma matriz de cadeias de caracteres, por exemplo, EventTypeName{"Start", "End"}. Os elementos da matriz EventTypeName correspondem diretamente à matriz EventType. |
Qualificadores de propriedade
A tabela a seguir lista os qualificadores que você pode especificar em uma propriedade.
Qualificador | Descrição | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Bitmap | Especifica as posições de bit que são mapeadas para valores de cadeia de caracteres. Se você especificar esse qualificador, também deverá especificar o qualificador BitValues . | ||||||||||
BitValues | Valores de cadeia de caracteres. Se o qualificador BitMap também for especificado, as cadeias de caracteres corresponderão diretamente aos valores no qualificador BitMap . Caso contrário, suponha que o valor da propriedade seja um índice baseado em um nas cadeias de caracteres de valor (o bit um corresponde à primeira cadeia de caracteres na lista). | ||||||||||
Extensão | Fornece informações adicionais sobre como consumir (interpretar) os dados. O valor da extensão não diferencia maiúsculas de minúsculas. Inclua o valor entre aspas, por exemplo, Extension("Guid"). Os possíveis valores de extensão são:
|
||||||||||
Formato | Define o formato dos dados da propriedade. Por exemplo, incluir Format("w") em uma propriedade de cadeia de caracteres indica que a cadeia de caracteres é uma cadeia de caracteres larga. Os valores possíveis são:
|
||||||||||
Ponteiro | Indica que a propriedade contém um valor de ponteiro. O tamanho do valor do ponteiro depende do sistema operacional usado para registrar o evento em log; o conteúdo conterá um valor de 4 bytes para sistemas de 32 bits ou um valor de 8 bytes para sistemas de 64 bits. O tipo de dados MOF deve ser objeto. Os consumidores devem ignorar o tipo de dados e o Qualificador de formato se a propriedade incluir a extensão SizeT . Para determinar o tamanho dos dados a serem lidos para a propriedade, use:
Antes do Windows Vista: O valor PointerSize pode não ser preciso. Por exemplo, em um computador de 64 bits, um aplicativo de 32 bits registrará ponteiros de 4 bytes; no entanto, a sessão definirá PointerSize como 8. Observe que alguns eventos usam PointerType em vez de Pointer; não use PointerType. |
||||||||||
StringTermination | Indica como a propriedade de cadeia de caracteres é encerrada. Por exemplo, StringTermination("NullTerminated") indica que a propriedade string é terminada em nulo. Os valores possíveis são:
|
||||||||||
ValueDescriptions | Fornece descrições para cada valor no qualificador Valores . As funções TdhEnumerateProviderFieldInformation e TdhQueryProviderFieldInformation retornam essas descrições quando você tenta recuperar palavra-chave e informações de nível. As descrições são opcionais. Se você não fornecer as descrições, as funções retornarão NULL. Consulte Especificando o nível e habilite os valores de sinalizadores para um provedor para obter mais detalhes. | ||||||||||
Valuemap | Especifica os valores de índice inteiro ou sinalizador que são mapeados para valores de cadeia de caracteres. Se você especificar esse qualificador, também deverá especificar o qualificador Valores e, opcionalmente, o qualificador ValueType . Observe que o ETW não dá suporte à opção WMI de ter cadeias de caracteres para valores de mapa de valor.
O exemplo a seguir mostra como usar os qualificadores ValueMap, Values e ValueType.
|
||||||||||
Valores | Valores de cadeia de caracteres. Se o qualificador ValueMap também for especificado, as cadeias de caracteres corresponderão diretamente aos valores no qualificador ValueMap . Caso contrário, suponha que o valor da propriedade seja um índice baseado em zero nas cadeias de caracteres de valor. | ||||||||||
ValueType | Indica se os valores ValueMap são valores de índice inteiros ou valores de sinalizador de bit. Se você não especificar esse qualificador, os valores de índice inteiro serão assumidos. Para especificar que os valores são valores de índice inteiros, use ValueType("index"). Para especificar que os valores são valores de sinalizador de bit, use ValueType("flag"). | ||||||||||
WmiDataId | Cada propriedade deve conter o qualificador WmiDataId . WmiDataId define a ordem na qual o consumidor lê os dados do evento. O valor de WmiDataId começa em 1 e incrementa para cada propriedade na classe . Por exemplo, WmiDataId(1). | ||||||||||
XMLFragment | Indica que os dados estão no formato XML e prontos para exibição sem formatação adicional. |
Especificando o nível e habilitando valores de sinalizadores para um provedor
Para documentar o nível e habilitar sinalizadores que um controlador usaria para habilitar seu provedor, inclua as propriedades "Level" e "Flags" na classe MOF do provedor. Os nomes das propriedades Level e Flags diferenciam maiúsculas de minúsculas. As propriedades devem incluir os qualificadores Values e ValueMap , que especificam o nível possível e habilitam valores de sinalizador. O ValueMap para os valores de sinalizador de habilitação deve ser valores de bit (sinalizador). O qualificador ValueDescriptions é opcional, mas você deve usá-lo para fornecer descrições para cada valor possível. As descrições são usadas quando alguém chama as funções TdhEnumerateProviderFieldInformation e TdhQueryProviderFieldInformation para obter o nível possível e habilitar os valores de sinalizadores (palavras-chave) para o provedor.
O seguinte mostra uma classe de provedor que especifica o nível possível e habilita valores de sinalizadores.
[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;
};