Udostępnij za pośrednictwem


Driver-Defined Elementy danych WMI

Element danych w definicji klasy danych usługi WMI lub bloku zdarzeń może być jednym z następujących elementów:

  • Podstawowy typ danych, taki jak ciąg lub niepodpisane liczby całkowite.

  • Osadzona klasa. Osadzona klasa jest używana tylko jako element danych w innej definicji klasy i nie jest widoczna jako blok danych lub blok zdarzeń.

  • Tablica o stałej długości lub zmiennej długości podstawowego typu danych lub klasy osadzonej.

Podczas wysyłania bloku danych do usługi WMI sterownik musi wyrównać początek bloku na granicy 8-bajtowej. Wszystkie kolejne elementy danych w bloku muszą być wyrównane zgodnie z odpowiednim wyrównaniem dla typu danych. Wartość logiczna lub uint8 powinna być wyrównana do granicy 1-bajtowej. Element sint16, uint16 lub string powinien być wyrównany do granicy 2-bajtowej itd. Tablice powinny być wyrównane na podstawie podstawowego typu tablicy. Tablica bajtów powinna być wyrównana do granicy bajtów. Tablica uint64 powinna być wyrównana do granicy 8-bajtowej itd. Osadzona klasa powinna być wyrównana na podstawie naturalnego wyrównania klasy osadzonej, która jest zdefiniowana jako największy element w klasie osadzonej. Na przykład, jeśli osadzona klasa ma uint64, klasa powinna być wyrównana do granicy 8-bajtowej. Wyrównanie elementu danych WMI jest zgodne z tymi samymi konwencjami co przełącznik /Zp8 w kompilatorze Microsoft C.

Autor sterownika nie musi definiować elementów danych w bloku innym niż wymagane elementy InstanceName i Active. Na przykład pusty blok zdarzeń może służyć jako powiadomienie o wystąpieniu zdarzenia bez dodatkowych danych. Lub blok danych może po prostu wyliczyć nazwy wystąpień w odpowiedzi na żądanie IRP_MN_QUERY_ALL_DATA .

W poniższej tabeli wymieniono typy danych MOF, których można użyć do definiowania elementów w danych lub bloku zdarzeń usługi WMI. Aby uzyskać więcej informacji na temat typów danych MOF, zobacz Zestaw MICROSOFT Windows SDK.

Typ danych Format danych Wyrównanie (w bajtach)

ciąg

Element USHORT określający długość ciągu w bajtach, a następnie dane ciągu Unicode. Dane ciągu mogą opcjonalnie zawierać zakończenie 0, po którym następuje wypełnienie. Jeśli tak, długość ciągu musi zawierać zakończenie 0 i dopełnienie. Sterowniki mogą używać kwalifikatora MaxLen , aby określić maksymalną długość znaków ciągu. Sterowniki, które określają maksymalną długość ciągu, mogą używać buforu o stałym rozmiarze do przechowywania ciągu. Jeśli ciąg jest ściśle mniejszy niż rozmiar buforu, sterownik może wypełnić resztę ciągu zerami.

2

boolean

Wartość jedno bajtowa, w której wartość 0 to FAŁSZ, a każda wartość niezerowa ma wartość TRUE

1

sint8

Podpisana 8-bitowa liczba całkowita

1

uint8 powiedział:

Niepodpisane 8-bitowe liczby całkowite

1

sint16

Podpisana 16-bitowa liczba całkowita

2

uint16

Niepodpisane 16-bitowe liczby całkowite

2

sint32

Podpisana 32-bitowa liczba całkowita

4

uint32

Liczba 32-bitowa bez znaku

4

sint64

Podpisana 64-bitowa liczba całkowita

8

uint64

64-bitowa liczba całkowita bez znaku

8

data/godzina

Ciąg Unicode o stałej długości 25 znaków, który określa bezwzględną datę lub interwał godziny. Wartość daty/godziny ma następujący format:

yyyymmddhhmmss.mmmmmmsutc

gdzie:

yy to 4-cyfrowy rok

mm to 2-cyfrowy miesiąc

dd to 2-cyfrowy dzień miesiąca

hh jest godziną zgodnie z zegarem 24-godzinnym

mm oznacza minutę

ss to sekundy

mmmmmm jest liczbą mikrosekund

s to znak plus (+) lub znak minus (-), wskazujący, czy utc jest dodatnim lub ujemnym przesunięciem z współrzędnych uniwersalnych czasu; lub dwukropek (:) wskazujący, że wartość daty/godziny jest interwałem.

utc to przesunięcie w minutach od Uniwersalnego Czasu Koordynowanego. Jeśli utc to zero (000), wartość data i czas jest interwałem.

Wartości muszą być dopełnione zerami. Pola, które nie są znaczące, mogą być wypełnione gwiazdkami (*).

2