Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ein Datenelement in einer Klassendefinition von WMI-Daten oder Ereignisblock kann eines der folgenden sein:
Ein grundlegender Datentyp, z. B. eine Zeichenfolge oder eine nicht signierte ganze Zahl.
Eine eingebettete Klasse. Eine eingebettete Klasse wird nur als Datenelement in einer anderen Klassendefinition verwendet und wird nicht als Datenblock oder Ereignisblock verfügbar gemacht.
Ein Array mit fester Länge oder variabler Länge eines grundlegenden Datentyps oder einer eingebetteten Klasse.
Beim Senden eines Datenblocks an WMI muss ein Treiber den Anfang des Blocks an einer Grenze von 8 Byte ausrichten. Alle nachfolgenden Datenelemente im Block müssen an der entsprechenden Ausrichtung für den Datentyp ausgerichtet werden. Ein Bool oder uint8 sollte auf einer 1-Byte-Grenze ausgerichtet sein. Ein sint16-, uint16- oder Zeichenfolgenelement sollte an einer Grenze von 2 Byte ausgerichtet werden usw. Arrays sollten basierend auf dem Basistyp des Arrays ausgerichtet werden. Ein Bytearray sollte an einer Bytegrenze ausgerichtet werden, ein Array von uint64 sollte an einer Grenze von 8 Byte ausgerichtet werden usw. Eine eingebettete Klasse sollte basierend auf der natürlichen Ausrichtung der eingebetteten Klasse ausgerichtet werden, die als das größte Element in der eingebetteten Klasse definiert ist. Wenn beispielsweise eine eingebettete Klasse über eine uint64 verfügt, sollte die Klasse an einer Grenze von 8 Byte ausgerichtet werden. WMI-Datenelementausrichtung folgt den gleichen Konventionen wie der /Zp8-Schalter auf dem Microsoft C-Compiler.
Ein Treiberschreiber muss nicht unbedingt Datenelemente in einem anderen Block als den erforderlichen Elementen InstanceName und Active definieren. Beispielsweise kann ein leerer Ereignisblock als Benachrichtigung dienen, dass ein Ereignis aufgetreten ist, ohne zusätzliche Daten. Oder ein Datenblock kann Instanznamen als Reaktion auf eine IRP_MN_QUERY_ALL_DATA Anforderung einfach aufzählen.
In der folgenden Tabelle sind die MOF-Datentypen aufgeführt, die zum Definieren von Elementen in einem WMI-Daten- oder Ereignisblock verwendet werden können. Weitere Informationen zu MOF-Datentypen finden Sie im Microsoft Windows SDK.
| Datentyp | Datenformat | Ausrichtung (in Bytes) |
|---|---|---|
String |
Eine USHORT, die die Zeichenfolgenlänge in Bytes angibt, gefolgt von den Unicode-Zeichenfolgendaten. Die Zeichenfolgendaten können optional ein Beenden von 0 gefolgt von Abstand enthalten. Wenn ja, muss die Länge der Zeichenfolge den Nullterminator und das Padding enthalten. Treiber können den MaxLen-Qualifizierer verwenden, um die maximale Länge in Zeichen der Zeichenfolge anzugeben. Treiber, die eine maximale Zeichenfolgenlänge angeben, können einen Puffer mit fester Größe verwenden, um die Zeichenfolge aufzunehmen. Wenn die Zeichenfolge streng kleiner als die Größe des Puffers ist, kann der Treiber den Rest der Zeichenfolge mit Nullen auffüllen. |
2 |
Boolean |
Ein 1-Byte-Wert, wobei 0 FALSCH ist und ein beliebiger Wert ungleich Null ist WAHR. |
1 |
|
Signierte 8-Bit-Ganzzahl |
1 |
uint8- |
Nicht signierte 8-Bit-Ganzzahl |
1 |
sint16- |
Signierte 16-Bit-Ganzzahl |
2 |
uint16- |
Nicht signierte 16-Bit-Ganzzahl |
2 |
sint32- |
32-Bit-Ganzzahl |
4 |
uint32- |
Nicht signierte 32-Bit-Ganzzahl |
4 |
sint64- |
64-Bit-Ganzzahl |
8 |
uint64- |
Nicht signierte 64-Bit-Ganzzahl |
8 |
datetime |
Eine 25-stellige Unicode-Zeichenfolge mit fester Länge, die ein absolutes Datums- oder Uhrzeitintervall angibt. Ein Datetime-Wert weist das folgende Format auf: yyyymmddhhmmss.mmmmmmsutc wo: yyyy ist das vierstellige Jahr mm ist der 2-stellige Monat dd ist der 2-stellige Tag des Monats. hh ist die Stunde nach einer 24-Stunden-Uhr mm ist die Minute ss ist die Sekunden mmmmmm ist die Anzahl der Mikrosekunden s ist ein Pluszeichen (+) oder Minuszeichen (-), das angibt, ob utc ein positiver oder negativer Abstand von universalen Zeitkoordinaten ist; oder ein Doppelpunkt (:), der angibt, dass der Datetime-Wert ein Intervall ist. utc ist der Offset in Minuten von Universal Time Coordinates. Wenn utc null (000) ist, ist der Datetime-Wert ein Intervall. Werte müssen mit Nullen aufgefüllt werden. Felder, die nicht signifikant sind, können mit Sternchen (*) gefüllt werden. |
2 |