Rastreio de Eventos Qualificatórios MOF
Use os qualificadores definidos nesta seção ao criar seu provedor de classe MOF, evento MOF classe, tipo de evento MOF classee as propriedades do tipo de evento MOF classe. Para obter um exemplo que inclui alguns desses qualificadores, consulte Publicando seu esquema de evento.
Qualificadores de classe MOF do provedor
A tabela a seguir lista os qualificadores que você pode especificar em uma classe MOF do provedor.
Qualificadores da classe MOF do 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).
Eliminatórias | Tipo de dados | Descrição |
---|---|---|
Guid | String | Necessário. String Guid 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. Guid membro, 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 evento 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, quando você cria uma nova versão da classe, você também renomeia a versão anterior para <>_Vn classname, onde n é um número incremental começando em 0. Para obter um exemplo, consulte FileIo e FileIo_V0. |
Tipo de evento Qualificadores de classe MOF
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).
Eliminatórias | Valor | Descrição |
---|---|---|
EventType | inteiro | Necessário. 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 | String | 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.
Eliminatórias | Descrição | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
BitMap | Especifica as posições de bit mapeadas para valores de cadeia de caracteres. Se você especificar esse qualificador, também deverá especificar o BitValues qualificador. | ||||||||||
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 é 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 valores de extensão possíveis são:
|
||||||||||
Formato | Define o formato dos dados de propriedade. Por exemplo, incluir Format("w") em uma propriedade string indica que a string é uma cadeia de caracteres larga. Os valores possíveis são:
|
||||||||||
Pointer | 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; A carga útil 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 qualificador Format 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 para 8. Observe que alguns eventos usam PointerType em vez de Pointer; não utilize PointerType. |
||||||||||
StringTermination | Indica como a propriedade string é encerrada. Por exemplo, StringTermination("NullTerminated") indica que a propriedade string é null-terminated. Os valores possíveis são:
|
||||||||||
ValueDescriptions | Fornece descrições para cada valor no qualificador Valores. As funções TdhEnumerateProviderFieldInformation e funções de TdhQueryProviderFieldInformation retornam essas descrições quando você tenta recuperar informações de palavra-chave e nível. As descrições são opcionais. Se você não fornecer as descrições, as funções retornarão NULL. Consulte Especificando valores de nível e habilitar sinalizadores para um provedor para obter mais detalhes. | ||||||||||
ValueMap | Especifica o índice inteiro ou os valores de sinalizador que são mapeados para valores de cadeia de caracteres. Se você especificar esse qualificador, também deverá especificar os Valores qualificador e, opcionalmente, o qualificador ValueType. Observe que o ETW não suporta a 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 é um índice baseado em zero nas cadeias de caracteres de valor. | ||||||||||
ValueType | Indica se os valores ValueMap são valores de índice inteiro ou valores de sinalizador de bits. 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 inteiro, use ValueType("index"). Para especificar que os valores são valores de sinalizador de bits, use ValueType("flag"). | ||||||||||
WmiDataId | Cada propriedade deve conter o qualificador de WmiDataId. WmiDataId define a ordem na qual o consumidor lê os dados do evento. O valor para WmiDataId começa em 1 e incrementa para cada propriedade na classe. Por exemplo, WmiDataId(1). | ||||||||||
XMLFragment | Indica que os dados estão em formato XML e prontos para exibição sem formatação adicional. |
Especificando valores de nível e habilitando 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 do sinalizador enable deve ser valores de bit (flag). 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 o TdhEnumerateProviderFieldInformation e funções de TdhQueryProviderFieldInformation para obter o nível possível e habilitar valores de sinalizadores (palavras-chave) para o provedor.
A seguir 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;
};