MOF-Qualifizierer für die Ereignisablaufverfolgung

Verwenden Sie die in diesem Abschnitt definierten Qualifizierer, wenn Sie Die MOF-Klasse des Anbieters, die MOF-Ereignisklasse, die MOF-Ereignistypklasse und die Eigenschaften der MOF-Klasse des Ereignistyps erstellen. Ein Beispiel, das einige dieser Qualifizierer enthält, finden Sie unter Veröffentlichen Ihres Ereignisschemas.

MoF-Klassenqualifizierer des Anbieters

In der folgenden Tabelle sind die Qualifizierer aufgeführt, die Sie für eine MOF-Klasse des Anbieters angeben können.

Qualifizierer Datentyp BESCHREIBUNG
Guid String Erforderlich. Zeichenfolgen-GUID, die einen Anbieter eindeutig identifiziert. Beispiel: Guid("{3F92E6E0-9886-434e-85DB-0D11D3904C0A}"). Dies ist die gleiche GUID, die Sie verwenden, wenn Sie die RegisterTraceGuids-Funktion aufrufen, um Ihren Anbieter zu registrieren.

 

Event MOF-Klassenqualifizierer

In der folgenden Tabelle sind die Qualifizierer aufgeführt, die Sie für eine Ereignisklasse angeben können (die übergeordnete Klasse, die verwandte Ereignistypklassen gruppiert).

Qualifizierer Datentyp BESCHREIBUNG
Guid String Erforderlich. Zeichenfolgen-GUID, die eine Klasse von Ereignissen identifiziert. Beispiel: Guid("{3F92E6E0-9886-434e-85DB-0D11D3904C0A}"). Ereignisanbieter verwenden die Guid, um die EVENT_TRACE_HEADER festzulegen. Guid-Member , damit Consumer die Klasse von Ereignissen bestimmen können, die sie empfangen.
EventVersion Integer Dieser Qualifizierer ist für die neueste Version einer Ereignisablaufverfolgungsklasse optional und für alle älteren Versionen der Klasse erforderlich. Die neueste Version der Klasse gibt entweder nicht den EventVersion-Qualifizierer an oder weist die höchste Versionsnummer auf. Versionsnummern beginnen mit 0, z. B. EventVersion(0). Wenn Sie eine neue Version der Klasse erstellen, benennen Sie in der Regel auch die vorherige Version in classname>_Vn um<, wobei n eine inkrementelle Zahl ab 0 ist. Ein Beispiel finden Sie unter FileIo und FileIo_V0.

 

MoF-Klassenqualifizierer des Ereignistyps

In der folgenden Tabelle sind die Qualifizierer aufgeführt, die Sie für eine Ereignistypklasse angeben können (die Klasse, die die Ereigniseigenschaftendaten definiert).

Qualifizierer Wert BESCHREIBUNG
EventType Integer Erforderlich. Gibt die Ereignistypklasse an. Beispiel: EventType(1). Der Ereignisanbieter verwendet denselben Ereignistypwert, um EVENT_TRACE_HEADER festzulegen. Class.Type. Wenn dieselbe MOF-Klasse für mehrere Ereignistypen verwendet wird (da sie dieselben Ereignisdaten verwenden), geben Sie den Ereignistypwert als Array von ganzen Zahlen an, z. B. EventType{12,15}.
EventTypeName String Optional. Beschreibt den Ereignistyp. Beispiel: EventTypeName("Start"). Wenn dieselbe MOF-Klasse für mehrere Ereignistypen verwendet wird (da sie dieselben Ereignisdaten verwenden), geben Sie den Wert des Ereignistypnamens als Array von Zeichenfolgen an, z. B. EventTypeName{"Start", "End"}. Die Elemente des EventTypeName-Arrays entsprechen direkt dem EventType-Array.

 

Eigenschaftenqualifizierer

In der folgenden Tabelle sind die Qualifizierer aufgeführt, die Sie für eine Eigenschaft angeben können.

Qualifizierer BESCHREIBUNG
Bitmap Gibt die Bitpositionen an, die Zeichenfolgenwerten zugeordnet sind. Wenn Sie diesen Qualifizierer angeben, müssen Sie auch den BitValues-Qualifizierer angeben.
BitValues Zeichenfolgenwerte. Wenn auch der BitMap-Qualifizierer angegeben wird, entsprechen die Zeichenfolgen direkt den Werten im BitMap-Qualifizierer. Andernfalls wird angenommen, dass der Eigenschaftswert ein 1-basierter Index in den Wertzeichenfolgen ist (Bit 1 entspricht der ersten Zeichenfolge in der Liste).
Erweiterung Stellt zusätzliche Informationen zum Nutzen (Interpretieren) der Daten bereit. Beim Erweiterungswert wird die Groß-/Kleinschreibung nicht beachtet. Schließen Sie den Wert in Anführungszeichen ein, z. B. Extension("Guid"). Mögliche Erweiterungswerte sind:
Guid
Gibt an, dass die Eigenschaftendaten eine GUID sind. Der MOF-Datentyp muss ein Objekt sein. Bei der Nutzlast wird erwartet, dass es sich um eine GUID-Struktur handelt.
IPAddr und IPAddrV4
Die Daten sind eine IP-V4-Adresse. Der MOF-Datentyp muss ein Objekt sein. Es wird erwartet, dass die Nutzlast eine Lange ohne Vorzeichen ist. Jedes Byte des unsignierten Long stellt einen der vier Teile der IP-Adresse (p1.p2.p3.p4) dar. Das Byte mit niedriger Ordnung enthält den Wert für p1, das nächste Byte den Wert für p2 usw.
Vor Windows Vista: Die IPAddrV4-Erweiterung wird nicht unterstützt.
IPAddrV6
Die Daten sind eine IP-V6-Adresse. Der MOF-Datentyp muss ein Objekt sein. Es wird erwartet, dass es sich bei der Nutzlast um eine IN6_ADDR-Struktur handelt.
Vor Windows Vista: Die IPAddrV6-Erweiterung wird nicht unterstützt.
NoPrint
Gibt an, dass der Consumer diese Daten nicht drucken soll.
Hafen
Die Daten identifizieren eine Portnummer. Der MOF-Datentyp muss ein Objekt sein. Es wird erwartet, dass es sich bei der Nutzlast um eine kurz ohne Vorzeichen handelt.
RString
Zeilenumbruchzeichen wurden durch Leerzeichen ersetzt. Es wird erwartet, dass die Nutzlast eine NULL-endende ANSI-Zeichenfolge ist.
RWString
Zeilenumbruchzeichen wurden durch Leerzeichen ersetzt. Es wird erwartet, dass es sich bei der Nutzlast um eine Zeichenfolge mit Null-Endung handelt.
Sid
Die Daten stellen eine binäre Blob-SID dar. Der MOF-Datentyp muss ein Objekt sein.
Die SID hat eine variable Länge. Der in den ersten 4 Bytes (ULONG) enthaltene Wert gibt an, ob das Blob eine SID enthält. Wenn die ersten 4 Bytes (ULONG) des Blobs ungleich null sind, enthält das Blob eine SID. Der erste Teil des Blobs enthält die TOKEN_USER (die Struktur ist an einer 8-Byte-Grenze ausgerichtet), und der zweite Teil enthält die SID. So adressieren Sie den SID-Teil des Blobs:
  • Festlegen eines Bytezeigers auf den Anfang des Blobs
  • Multiplizieren Sie die Zeigergröße für das Ereignisprotokoll mit 2, und fügen Sie das Produkt dem Bytezeiger hinzu (das PointerSize-Element von TRACE_LOGFILE_HEADER enthält den Zeigergrößenwert).

Sie können das folgende Makro verwenden, um die Länge der SID zu bestimmen.
#define SeLengthSid( Sid ) \
  (8 + (4 * ((SID *)Sid)->SubAuthorityCount))
SizeT
Gibt an, dass die -Eigenschaft einen Zeigerwert enthält. Die Größe des Zeigerwerts hängt vom Betriebssystem ab, das zum Protokollieren des Ereignisses verwendet wird. Die Nutzlast enthält einen 4-Byte-Wert für 32-Bit-Systeme oder einen 8-Byte-Wert für 64-Bit-Systeme. Der MOF-Datentyp muss objekt sein.
Consumer sollten den Datentyp und den Format-Qualifizierer ignorieren, wenn die Eigenschaft die SizeT-Erweiterung enthält. Verwenden Sie Folgendes, um die Größe der Daten zu bestimmen, die für die Eigenschaft gelesen werden sollen:
Vor Windows Vista: Der PointerSize-Wert ist möglicherweise nicht korrekt. Beispielsweise protokolliert eine 32-Bit-Anwendung auf einem 64-Bit-Computer 4-Byte-Zeiger. Die Sitzung legt pointerSize jedoch auf 8 fest.
Variante
Die Daten stellen ein Blob dar. Die ersten vier Bytes (uint32) geben die Größe des Blobs an. Der MOF-Datentyp muss objekt sein.
Wmitime
Übersetzt den Zeitstempel in die Systemzeit. Der MOF-Datentyp muss objekt sein. Es wird erwartet, dass es sich bei der Nutzlast um eine ganzzahlige 64-Bit-Zahl ohne Vorzeichen handelt.
Vor Windows Vista: Nicht verfügbar.
Format Definiert das Format der Eigenschaftendaten. Wenn Sie beispielsweise Format("w") in eine Zeichenfolgeneigenschaft einschließen, wird angegeben, dass die Zeichenfolge eine breite Zeichenfolge ist. Mögliche Werte:
Begriff BESCHREIBUNG
c
Zeigt den Eigenschaftswert als ASCII-Zeichen an. Sie können diesen Qualifizierer mit uint8-Datentypen verwenden.
s
Behandeln Sie das Array von Zeichen als null-endende Zeichenfolge. Die Zeichenfolge ist eine Breitzeichenzeichenfolge, wenn der Datentyp char16 ist. Andernfalls ist die Zeichenfolge eine ASCII-Zeichenfolge.
W
Der Eigenschaftswert ist eine Breitzeichenzeichenfolge. Sie können diesen Qualifizierer mit Zeichenfolgendatentypen verwenden.
x
Zeigt den Eigenschaftswert als Hexadezimalzahl an. Sie können diesen Qualifizierer mit 16-, 32- und 64-Bit-Ganzzahldatentypen verwenden.

 

Zeiger

Gibt an, dass die -Eigenschaft einen Zeigerwert enthält. Die Größe des Zeigerwerts hängt vom Betriebssystem ab, das zum Protokollieren des Ereignisses verwendet wird. Die Nutzlast enthält einen 4-Byte-Wert für 32-Bit-Systeme oder einen 8-Byte-Wert für 64-Bit-Systeme. Der MOF-Datentyp muss objekt sein.

Consumer sollten den Datentyp und den Format-Qualifizierer ignorieren, wenn die Eigenschaft die SizeT-Erweiterung enthält. Verwenden Sie Folgendes, um die Größe der Daten zu bestimmen, die für die Eigenschaft gelesen werden sollen:

Vor Windows Vista: Der PointerSize-Wert ist möglicherweise nicht korrekt. Beispielsweise protokolliert eine 32-Bit-Anwendung auf einem 64-Bit-Computer 4-Byte-Zeiger. Die Sitzung legt pointerSize jedoch auf 8 fest.

Beachten Sie, dass einige Ereignisse PointerType anstelle von Pointer verwenden. Verwenden Sie pointerType nicht.

StringTermination Gibt an, wie die Zeichenfolgeneigenschaft beendet wird. StringTermination("NullTerminated") gibt beispielsweise an, dass die Zeichenfolgeneigenschaft null-terminated ist. Mögliche Werte:
Gezählt

Die Länge der Zeichenfolge wird am Anfang der Zeichenfolge als USHORT-Wert eingebettet.

NotCounted

Die Zeichenfolge ist nicht NULL-endend, und die Länge der Zeichenfolge wird nicht am Anfang der Zeichenfolge eingebettet. In diesem Fall sollte die Zeichenfolge das letzte Element sein und den gesamten Platz bis zum Ende der Ereignisdaten belegen.

Nullterminated

Die Zeichenfolge ist NULL-endend. Wenn Sie den StringTermination-Qualifizierer nicht angeben, wird angenommen, dass die Zeichenfolge NULL-beendet ist.

ReverseCounted

Die Länge der Zeichenfolge wird am Anfang der Zeichenfolge als USHORT-Wert im Big-Endian-Format eingebettet.

ValueDescriptions Stellt Beschreibungen für jeden Wert im Qualifizierer Werte bereit. Die Funktionen TdhEnumerateProviderFieldInformation und TdhQueryProviderFieldInformation geben diese Beschreibungen zurück, wenn Sie versuchen, Schlüsselwort (keyword)- und Levelinformationen abzurufen. Die Beschreibungen sind optional. Wenn Sie die Beschreibungen nicht angeben, geben die Funktionen NULL zurück. Weitere Informationen finden Sie unter Angeben von Werten für Ebenen und Aktivieren von Flags für einen Anbieter .
ValueMap Gibt die ganzzahligen Index- oder Flagwerte an, die Zeichenfolgenwerten zugeordnet sind. Wenn Sie diesen Qualifizierer angeben, müssen Sie auch den Value-Qualifizierer und optional den ValueType-Qualifizierer angeben. Beachten Sie, dass ETW die WMI-Option mit Zeichenfolgen für Wertezuordnungswerte nicht unterstützt.

Das folgende Beispiel zeigt die Verwendung der Qualifizierer ValueMap, Values und ValueType.

ValueType("flag"),
ValueMap {"0x01", "0x02", "0x04", "0x08"},
Values {"ValueMapFlag1", "ValueMapFlag2", "ValueMapFlag4", "ValueMapFlag8"}]
Werte Zeichenfolgenwerte. Wenn auch der ValueMap-Qualifizierer angegeben ist, entsprechen die Zeichenfolgen direkt den Werten im ValueMap-Qualifizierer. Andernfalls wird davon ausgegangen, dass der Eigenschaftswert ein nullbasierter Index in den Wertzeichenfolgen ist.
ValueType Gibt an, ob die ValueMap-Werte ganzzahlige Indexwerte oder Bitflagswerte sind. Wenn Sie diesen Qualifizierer nicht angeben, werden ganzzahlige Indexwerte angenommen. Um anzugeben, dass die Werte ganzzahlige Indexwerte sind, verwenden Sie ValueType("index"). Um anzugeben, dass es sich bei den Werten um Bitflagswerte handelt, verwenden Sie ValueType("flag").
WmiDataId Jede Eigenschaft muss den WmiDataId-Qualifizierer enthalten. WmiDataId definiert die Reihenfolge, in der der Consumer die Ereignisdaten liest. Der Wert für WmiDataId beginnt bei 1 und inkrementiert für jede Eigenschaft in der -Klasse. Beispiel: WmiDataId(1).
XMLFragment Gibt an, dass die Daten im XML-Format vorliegen und ohne weitere Formatierung angezeigt werden können.

 

Angeben von Level- und Enable-Flagwerten für einen Anbieter

Um die Ebene zu dokumentieren und Flags zu aktivieren, die ein Controller zum Aktivieren Ihres Anbieters verwenden würde, fügen Sie die Eigenschaften "Level" und "Flags" in Ihre MOF-Klasse ihres Anbieters ein. Bei den Eigenschaftennamen Level und Flags wird die Groß-/Kleinschreibung beachtet. Die Eigenschaften müssen die Werte - und ValueMap-Qualifizierer enthalten, die die mögliche Ebene angeben und Flagwerte aktivieren. Die ValueMap für die Enable-Flagwerte muss Bitwerte (Flag) sein. Der ValueDescriptions-Qualifizierer ist optional, aber Sie sollten ihn verwenden, um Beschreibungen für jeden möglichen Wert bereitzustellen. Die Beschreibungen werden verwendet, wenn jemand die Funktionen TdhEnumerateProviderFieldInformation und TdhQueryProviderFieldInformation aufruft, um die mögliche Ebene abzurufen und Flags (Schlüsselwörter) für den Anbieter zu aktivieren.

Im Folgenden wird eine Anbieterklasse gezeigt, die die möglichen Werte für die Ebene und die Aktivierung von Flags angibt.

[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;
};