Bagikan melalui


Driver-Defined Item Data WMI

Item data dalam definisi kelas data WMI atau blok peristiwa bisa menjadi salah satu hal berikut ini:

  • Jenis data dasar seperti string atau bilangan bulat yang tidak ditandatangani.

  • Kelas yang disematkan. Kelas yang disematkan hanya digunakan sebagai item data dalam definisi kelas lain dan tidak diekspos sebagai blok data atau blok peristiwa.

  • Array panjang tetap atau panjang variabel dari jenis data dasar atau kelas tersemat.

Saat mengirim blok data ke WMI, driver harus menyelaraskan awal blok pada batas 8-byte. Semua item data berikutnya dalam blok harus diratakan pada perataan yang sesuai untuk jenis data. Boolean atau uint8 harus diselaraskan pada batas 1-byte. Item sint16, uint16, atau string harus diselaraskan pada batas 2-byte, dan sebagainya. Array harus diratakan berdasarkan jenis dasar array. Array byte harus diratakan pada batas byte, array uint64 harus diratakan pada batas 8-byte, dan sebagainya. Kelas yang disematkan harus diselaraskan berdasarkan penyelarasan alami kelas tersemat yang didefinisikan menjadi elemen terbesar dalam kelas yang disematkan. Misalnya, jika kelas yang disematkan memiliki uint64, kelas harus diselaraskan pada batas 8-byte. Perataan item data WMI mengikuti konvensi yang sama dengan sakelar /Zp8 pada pengkompilasi Microsoft C.

Penulis driver tidak harus menentukan item data dalam blok selain item yang diperlukan InstanceName dan Active. Misalnya, blok peristiwa kosong dapat berfungsi sebagai pemberitahuan bahwa peristiwa terjadi, tanpa data tambahan. Atau blok data mungkin hanya menghitung nama instans sebagai respons terhadap permintaan IRP_MN_QUERY_ALL_DATA .

Tabel berikut ini mencantumkan jenis data MOF yang dapat digunakan untuk menentukan item dalam data WMI atau blok peristiwa. Untuk informasi selengkapnya tentang jenis data MOF, lihat Microsoft Windows SDK.

Jenis Data Format data Perataan (dalam byte)

string

USHORT yang menentukan panjang string dalam byte, diikuti oleh data string Unicode. Data string dapat secara opsional menyertakan penghentian 0 diikuti dengan padding. Jika demikian, panjang string harus menyertakan penghentian 0 dan padding. Driver dapat menggunakan kualifikasi MaxLen untuk menentukan panjang maksimum dalam karakter string. Driver yang menentukan panjang string maksimum dapat menggunakan buffer ukuran tetap untuk menahan string. Jika string benar-benar lebih kecil dari ukuran buffer, maka driver dapat mengapit sisa string dengan nol.

2

boolean

Nilai satu byte di mana 0 adalah FALSE dan nilai bukan nol apa pun adalah TRUE

1

sint8

Integer 8-bit yang ditandai

1

uint8

Integer 8-bit yang tidak ditandai

1

sint16

Integer 16-bit yang ditandai

2

uint16

Integer 16-bit yang tidak ditandai

2

sint32

Integer 32-bit yang ditandai

4

uint32

Integer 32-bit yang tidak ditandai

4

sint64

Integer 64-bit yang ditandai

8

uint64

Integer 64-bit yang tidak ditandai

8

datetime

String Unicode 25 karakter dengan panjang tetap yang menentukan interval tanggal atau waktu absolut. Nilai tanggalwaktu memiliki format berikut:

yyyymmddhhmmss.mmmmmmsutc

Dimana:

yyyy adalah tahun 4 digit

mm adalah bulan 2 digit

dd adalah hari 2 digit dalam sebulan

hh adalah jam sesuai dengan jam 24 jam

mm adalah menit

ss adalah detik

mmmmmm adalah jumlah mikrosekon

s adalah tanda plus (+) atau tanda minus (-), yang menunjukkan apakah utc adalah offset positif atau negatif dari Universal Time Coordinates; atau titik dua (:), menunjukkan bahwa nilai tanggalwaktu adalah interval.

utc adalah offset dalam hitungan menit dari Universal Time Coordinates. Jika utc adalah nol (000), nilai tanggalwaktu adalah interval.

Nilai harus berlapis nol. Bidang yang tidak signifikan dapat diisi dengan tanda bintang (*).

2