Qualificatori MOF di Traccia eventi
Usare i qualificatori definiti in questa sezione quando si crea la classe MOF del provider , classe MOF evento, tipo di evento mof classee le proprietà della classe MOF di tipo evento. Per un esempio che include alcuni di questi qualificatori, vedere Pubblicazione dello schema di eventi.
Qualificatori di classe MOF del provider
Nella tabella seguente sono elencati i qualificatori che è possibile specificare in una classe MOF del provider.
Qualificatore | Tipo di dati | Descrizione |
---|---|---|
guid | stringhe | Obbligatorio. Guid stringa che identifica in modo univoco un provider. Ad esempio, Guid("{3F92E6E0-9886-434e-85DB-0D11D3904C0A}"). Si tratta dello stesso GUID usato quando si chiama la funzione RegisterTraceGuids per registrare il provider. |
Qualificatori di classe MOF di evento
Nella tabella seguente sono elencati i qualificatori che è possibile specificare in una classe di evento (la classe padre che raggruppa classi di tipi di evento correlate).
Qualificatore | Tipo di dati | Descrizione |
---|---|---|
guid | stringhe | Obbligatorio. Guid stringa che identifica una classe di eventi. Ad esempio, Guid("{3F92E6E0-9886-434e-85DB-0D11D3904C0A}"). I provider di eventi usano il GUID per impostare il EVENT_TRACE_HEADER. Guid membro, in modo che i consumer possano determinare la classe di eventi ricevuti. |
EventVersion | Integer | Questo qualificatore è facoltativo per la versione più recente di una classe di traccia di eventi ed è necessario per tutte le versioni precedenti della classe . La versione più recente della classe non specifica il qualificatore EventVersion o ha il numero di versione più alto. I numeri di versione iniziano con 0, ad esempio EventVersion(0). In genere, quando si crea una nuova versione della classe, si rinomina anche la versione precedente in <nomeclasse>_Vn, dove n è un numero incrementale a partire da 0. Per un esempio, vedere FileIo e FileIo_V0. |
Qualificatori di classe MOF di tipo evento
Nella tabella seguente sono elencati i qualificatori che è possibile specificare in una classe di tipo evento (la classe che definisce i dati della proprietà dell'evento).
Qualificatore | Valore | Descrizione |
---|---|---|
EventType | Integer | Obbligatorio. Identifica la classe del tipo di evento. Ad esempio, EventType(1). Il provider di eventi usa lo stesso valore del tipo di evento per impostare EVENT_TRACE_HEADER. Class.Type. Se la stessa classe MOF viene usata per più tipi di evento (perché usano gli stessi dati dell'evento), specificare il valore del tipo di evento come matrice di numeri interi, ad esempio EventType{12,15}. |
EventTypeName | stringhe | Opzionale. Descrive il tipo di evento. Ad esempio, EventTypeName("Start"). Se la stessa classe MOF viene usata per più tipi di evento (perché usano gli stessi dati dell'evento), specificare il valore del nome del tipo di evento come matrice di stringhe, ad esempio EventTypeName{"Start", "End"}. Gli elementi della matrice EventTypeName corrispondono direttamente alla matrice EventType. |
Qualificatori di proprietà
Nella tabella seguente sono elencati i qualificatori che è possibile specificare in una proprietà.
Qualificatore | Descrizione | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
BitMap | Specifica le posizioni di bit mappate ai valori stringa. Se si specifica questo qualificatore, è necessario specificare anche il qualificatore BitValues. | ||||||||||
BitValues | Valori stringa. Se viene specificato anche il qualificatore BitMap, le stringhe corrispondono direttamente ai valori del qualificatore BitMap. In caso contrario, si supponga che il valore della proprietà sia un indice in base uno nelle stringhe di valore (bit uno corrisponde alla prima stringa nell'elenco). | ||||||||||
dell'estensione | Fornisce informazioni aggiuntive su come utilizzare (interpretare) i dati. Il valore dell'estensione non fa distinzione tra maiuscole e minuscole. Includere il valore tra virgolette, ad esempio Extension("Guid"). I possibili valori di estensione sono:
|
||||||||||
Formato | Definisce il formato dei dati della proprietà. Ad esempio, l'inclusione di Format("w") in una proprietà stringa indica che la stringa è una stringa wide. I valori possibili sono:
|
||||||||||
puntatore | Indica che la proprietà contiene un valore puntatore. La dimensione del valore del puntatore dipende dal sistema operativo usato per registrare l'evento; il payload conterrà un valore a 4 byte per i sistemi a 32 bit o un valore a 8 byte per i sistemi a 64 bit. Il tipo di dati MOF deve essere oggetto. I consumer devono ignorare il tipo di dati e qualificatore Format se la proprietà include l'estensione SizeT. Per determinare le dimensioni dei dati da leggere per la proprietà, usare:
Prima di Windows Vista: Il valore PointerSize potrebbe non essere accurato. Ad esempio, in un computer a 64 bit, un'applicazione a 32 bit registra i puntatori a 4 byte; Tuttavia, la sessione imposta PointerSize su 8. Si noti che alcuni eventi usano PointerType anziché puntatore; non usare PointerType. |
||||||||||
StringTermination | Indica la modalità di terminazione della proprietà stringa. Ad esempio, StringTermination("NullTerminated") indica che la proprietà stringa è con terminazione Null. I valori possibili sono:
|
||||||||||
ValueDescriptions | Fornisce descrizioni per ogni valore nel qualificatore valori di. Le funzioni TdhEnumerateProviderFieldInformation e TdhQueryProviderFieldInformation restituiscono queste descrizioni quando si tenta di recuperare informazioni sulle parole chiave e sul livello. Le descrizioni sono facoltative. Se non si specificano le descrizioni, le funzioni restituiscono NULL. Per altri dettagli, vedere Specifica del livello e abilitare i valori dei flag per un provider. | ||||||||||
ValueMap di | Specifica i valori di indice intero o flag di cui viene eseguito il mapping ai valori stringa. Se si specifica questo qualificatore, è necessario specificare anche il qualificatore valori di e facoltativamente il qualificatore valueType . Si noti che ETW non supporta l'opzione WMI di avere stringhe per i valori di mapping dei valori.
Nell'esempio seguente viene illustrato come usare i qualificatori ValueMap, Values e ValueType.
|
||||||||||
valori | Valori stringa. Se viene specificato anche il qualificatore ValueMap, le stringhe corrispondono direttamente ai valori del qualificatore ValueMap. In caso contrario, si supponga che il valore della proprietà sia un indice in base zero nelle stringhe di valore. | ||||||||||
ValueType | Indica se i valori ValueMap sono valori di indice integer o flag di bit. Se non si specifica questo qualificatore, vengono considerati valori di indice integer. Per specificare che i valori sono valori di indice integer, usare ValueType("index"). Per specificare che i valori sono valori di flag di bit, usare ValueType("flag"). | ||||||||||
wmiDataId | Ogni proprietà deve contenere il qualificatore wmiDataId . WmiDataId definisce l'ordine in cui il consumer legge i dati dell'evento. Il valore per WmiDataId inizia a 1 e incrementi per ogni proprietà nella classe . Ad esempio, WmiDataId(1). | ||||||||||
XMLFragment | Indica che i dati sono in formato XML e pronti per la visualizzazione senza ulteriore formattazione. |
Specificare il livello e abilitare i valori dei flag per un provider
Per documentare il livello e abilitare i flag usati da un controller per abilitare il provider, includere le proprietà "Level" e "Flags" nella classe MOF del provider. I nomi delle proprietà Level e Flags fanno distinzione tra maiuscole e minuscole. Le proprietà devono includere i qualificatori di Valori e ValueMap, che specificano il livello possibile e abilitano i valori dei flag. I ValueMap per i valori dei flag di abilitazione devono essere valori di bit (flag). Il qualificatore ValueDescriptions è facoltativo, ma è consigliabile usarlo per fornire descrizioni per ogni valore possibile. Le descrizioni vengono usate quando un utente chiama le funzioni TdhEnumerateProviderFieldInformation e TdhQueryProviderFieldInformation per ottenere il livello possibile e abilitare i valori dei flag (parole chiave) per il provider.
Di seguito viene illustrata una classe provider che specifica il livello possibile e abilita i valori dei flag.
[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;
};