Teilen über


MOF-Qualifizierer für die Ereignisablaufverfolgung

Verwenden Sie die in diesem Abschnitt definierten Qualifizierer beim Erstellen ihrer -Anbieter-MOF-Klasse, Ereignis MOF-Klasse, Ereignistyp MOF-Klasseund die Eigenschaften der MOF-Klasse des Ereignistyps. Ein Beispiel, das einige dieser Qualifizierer enthält, finden Sie unter Veröffentlichen des Ereignisschemas.

MoF-Klassenqualifizierer des Anbieters

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

Kennzeichner Datentyp Beschreibung
GUID- Zeichenfolgen- 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.

 

MoF-Ereignisklassenqualifizierer

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).

Kennzeichner Datentyp Beschreibung
GUID- Zeichenfolgen- Erforderlich. Zeichenfolgen-GUID, die eine Ereignisklasse identifiziert. Beispiel: Guid("{3F92E6E0-9886-434e-85DB-0D11D3904C0A}"). Ereignisanbieter verwenden die GUID, um die EVENT_TRACE_HEADER festzulegen. Guid Mitglied, sodass Consumer die Klasse von Ereignissen bestimmen können, die sie empfangen.
EventVersion- ganze Zahl Dieser Qualifizierer ist optional für die neueste Version einer Ereignisablaufverfolgungsklasse und ist 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 normalerweise eine neue Version der Klasse erstellen, benennen Sie die vorherige Version auch in <Klassenname>_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).

Kennzeichner Wert Beschreibung
EventType- ganze Zahl Erforderlich. Identifiziert die Ereignistypklasse. 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 mit ganzen Zahlen an, z. B. EventType{12,15}.
EventTypeName- Zeichenfolgen- Wahlfrei. 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.

Kennzeichner 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 der BitMap- Qualifizierer ebenfalls angegeben wird, entsprechen die Zeichenfolgen direkt den Werten im BitMap- Qualifizierer. Andernfalls wird davon ausgegangen, dass der Eigenschaftswert ein 1-basierter Index in den Wertzeichenfolgen ist (Bit 1 entspricht der ersten Zeichenfolge in der Liste).
Erweiterungs- Enthält zusätzliche Informationen zur Nutzung (Interpretation) der Daten. Bei dem 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 Objektsein. Es wird erwartet, dass die Nutzlast eine GUID- Struktur ist.
IPAddr und IPAddrV4
Die Daten sind eine IP V4-Adresse. Der MOF-Datentyp muss Objektsein. Die Nutzlast wird erwartet, dass sie nicht signiert ist. Jedes Byte des nicht signierten Long-Werts stellt einen der vier Teile der IP-Adresse dar (p1.p2.p3.p4). Das Byte mit niedriger Reihenfolge enthält den Wert für p1, das nächste Byte enthält 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 Objektsein. Die Nutzlast wird als IN6_ADDR Struktur erwartet.
Vor Windows Vista: Die IPAddrV6-Erweiterung wird nicht unterstützt.
NoPrint
Gibt an, dass der Verbraucher diese Daten nicht drucken soll.
Port
Die Daten identifizieren eine Portnummer. Der MOF-Datentyp muss Objektsein. Die Nutzlast wird erwartet, dass sie nicht signiert ist.
RString
Neuzeilenzeichen wurden durch Leerzeichen ersetzt. Die Nutzlast wird erwartet, dass es sich um eine null-beendete ANSI-Zeichenfolge handelt.
RWString
Neuzeilenzeichen wurden durch Leerzeichen ersetzt. Die Nutzlast wird als null-beendete, breite Zeichenfolge erwartet.
Sid
Die Daten stellen eine binäre BLOB-SID dar. Der MOF-Datentyp muss Objektsein.
Die SID weist eine variable Länge auf. Der Wert in den ersten 4 Byte (ULONG-) gibt an, ob das Blob eine SID enthält. Wenn die ersten 4 Byte (ULONG-) des Blobs ungleich Null ist, enthält das Blob eine SID. Der erste Teil des BLOB enthält die TOKEN_USER (die Struktur wird 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 zum Bytezeiger hinzu (der PointerSize Member 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 Objektsein.
Consumer sollten den Datentyp und Format- Qualifizierer ignorieren, wenn die Eigenschaft die SizeT Erweiterung enthält. Um die Größe der für die Eigenschaft zu lesenden Daten zu bestimmen, verwenden Sie Folgendes:
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 wird jedoch PointerSize- auf 8 festgelegt.
Variant
Die Daten stellen ein BLOB dar. Die ersten vier Bytes (uint32) geben die Größe des Blobs an. Der MOF-Datentyp muss Objektsein.
WmiTime
Übersetzt den Zeitstempel in die Systemzeit. Der MOF-Datentyp muss Objektsein. Die Nutzlast wird als nicht signierte 64-Bit-Ganzzahl erwartet.
Vor Windows Vista: Nicht verfügbar.
Format- Definiert das Format der Eigenschaftendaten. Beispiel: "Format("w") für eine Zeichenfolgeneigenschaft gibt an, dass die Zeichenfolge eine breite Zeichenfolge ist. Mögliche Werte sind:
Ausdruck 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-beendete Zeichenfolge. Die Zeichenfolge ist eine breite Zeichenfolge, wenn der Datentyp char16ist; andernfalls ist die Zeichenfolge eine ASCII-Zeichenfolge.
w
Der Eigenschaftswert ist eine breite Zeichenfolge. Sie können diesen Qualifizierer mit Zeichenfolge Datentypen verwenden.
x
Zeigt den Eigenschaftswert als hexadezimale Zahl an. Sie können diesen Qualifizierer mit 16-, 32- und 64-Bit-Ganzzahl-Datentypen 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 Objektsein.

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

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 wird jedoch PointerSize- auf 8 festgelegt.

Beachten Sie, dass einige Ereignisse PointerType- anstelle von Zeiger-verwenden; verwenden Sie PointerType-nicht.

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

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

NotCounted-

Die Zeichenfolge ist nicht null-beendet, und die Länge der Zeichenfolge wird nicht am Anfang der Zeichenfolge eingebettet. In diesem Fall sollte die Zeichenfolge das letzte Element sein und alle Leerzeichen bis zum Ende der Ereignisdaten belegen.

NullTerminated-

Die Zeichenfolge wird null beendet. Wenn Sie den StringTermination Qualifizierer nicht angeben, wird davon ausgegangen, dass die Zeichenfolge null beendet wird.

ReverseCounted-

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

ValueDescriptions- Enthält Beschreibungen für jeden Wert im Werte Qualifizierer. Die funktionen TdhEnumerateProviderFieldInformation und TdhQueryProviderFieldInformation funktionen geben diese Beschreibungen zurück, wenn Sie versuchen, Schlüsselwort- und Ebeneninformationen abzurufen. Die Beschreibungen sind optional. Wenn Sie die Beschreibungen nicht angeben, geben die Funktionen NULL-zurück. Weitere Informationen finden Sie unter Angeben von Ebenen und Aktivieren von Kennzeichenwerten 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 die Werte Qualifizierer und optional den ValueType Qualifizierer angeben. Beachten Sie, dass ETW die WMI-Option nicht unterstützt, Zeichenfolgen für Wertezuordnungswerte zu verwenden.

Das folgende Beispiel zeigt, wie Sie die Qualifizierer ValueMap, Values und ValueType verwenden.

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 Bitkennzeichnungswerte 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 die Werte Bitkennzeichnungswerte sind, 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 Schritten für jede Eigenschaft in der Klasse. Beispielsweise WmiDataId(1).
XMLFragment- Gibt an, dass die Daten im XML-Format vorliegen und ohne weitere Formatierung angezeigt werden können.

 

Angeben von Ebenen und Aktivieren von Flags für einen Anbieter

Um die Ebene zu dokumentieren und Flags zu aktivieren, die ein Controller zum Aktivieren Ihres Anbieters verwenden würde, schließen Sie die Eigenschaften "Level" und "Flags" in die MOF-Klasse ihres Anbieters ein. Bei den Namen der Eigenschaft "Level" und "Flags" wird die Groß-/Kleinschreibung beachtet. Die Eigenschaften müssen die Values und ValueMap Qualifizierern enthalten, die die mögliche Ebene angeben und Flagwerte aktivieren. Die ValueMap- für die Aktivierungskennzeichnungswerte müssen Bitwerte (Flag) sein. Die ValueDescriptions Qualifizierer ist optional, sie sollten jedoch verwendet werden, um Beschreibungen für jeden möglichen Wert bereitzustellen. Die Beschreibungen werden verwendet, wenn jemand die funktionen TdhEnumerateProviderFieldInformation und TdhQueryProviderFieldInformation Funktionen aufruft, um die möglichen Ebenen abzurufen und Flags (Schlüsselwörter) für den Anbieter zu aktivieren.

Im Folgenden finden Sie eine Anbieterklasse, die die mögliche Ebene angibt und Flagswerte aktiviert.

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