WMI 資料或事件區塊類別定義中的資料項目可以是下列其中一項:
基本資料類型,例如字串或無符號整數。
內嵌類別。 內嵌類別僅用作另一個類別定義中的資料項目,不會公開為資料區塊或事件區塊。
基本資料類型或內嵌類別的固定長度或可變長度陣列。
將數據區塊傳送至 WMI 時,驅動程式必須在 8 位元組界限上對齊區塊的開頭。 區塊中的所有後續資料項目都必須在資料類型的對應對齊方式上對齊。 布林值或 uint8 應該在 1 位元組界限上對齊。 sint16、uint16 或字串專案應該在 2 位元組界限上對齊,依此類推。 陣列應根據陣列的基底類型進行對齊。 位元組陣列應該在位元組界限上對齊,uint64 陣列應該在 8 位元組界限上對齊,依此類推。 內嵌類應根據內嵌類的自然對齊方式進行對齊,內嵌類被定義為內嵌類中最大的元素。 例如,如果內嵌類別具有 uint64,則類別應該在 8 位元組界限上對齊。 WMI 資料項目對齊方式遵循與 Microsoft C 編譯器上的 /Zp8 開關相同的慣例。
驅動程式撰寫者不一定需要在區塊中定義除了必需專案 InstanceName 和 Active 以外的資料專案。 例如,空的事件區塊可以作為事件發生的通知,而無需其他資料。 或者,資料區塊可能僅列舉實例名稱以回應 IRP_MN_QUERY_ALL_DATA 請求。
下表列出可用來定義 WMI 資料或事件區塊中專案的 MOF 資料類型。 如需 MOF 資料類型的詳細資訊,請參閱 Microsoft Windows SDK。
| 數據類型 | 數據格式 | 對齊方式 (以位元組為單位) |
|---|---|---|
字串 |
指定字串長度(以位元組為單位)的 USHORT,後面接著 Unicode 字串資料。 字串資料可以選擇性地包含結尾 0,後面接著填補。 如果是,字串長度必須包含結尾的 0 和填充。 驅動程式可以使用 MaxLen 限定詞來指定字串字元的長度上限。 指定字串長度上限的驅動程式可以使用固定大小的緩衝區來保存字串。 如果字串嚴格小於緩衝區的大小,則驅動程式可以用零填補字串的其餘部分。 |
2 |
布爾值 |
一個位元組的數值,其中 0 表示 FALSE,任何非零數值表示 TRUE。 |
1 |
sint8 |
帶正負號的8位整數 |
1 |
uint8 |
不帶正負號的8位整數 |
1 |
int16 |
有符號的16位整數 |
2 |
uint16 |
不帶正負號的16位整數 |
2 |
sint32 |
帶正負號的32位整數 |
4 |
uint32 |
不帶正負號的32位整數 |
4 |
sint64 |
帶正負號的64位整數 |
8 |
uint64 |
不帶正負號的64位整數 |
8 |
datetime |
固定長度的 25 個字元 Unicode 字串,指定絕對日期或時間間隔。 日期時間值具有下列格式: yyyymmddhhmmss.mmmmmmsutc 地點: yyyy 是 4 位數的年份 mm 是 2 位數的月份 dd 是月份的 2 位數日期 hh 是24小時制中的小時 mm 是分鐘 SS 是秒 mmmmmm 是微秒數 s 是加號 (+) 或減號 (-),表示 UTC 是與世界時座標的正偏移還是負偏移;或冒號 (:),表示 日期時間 值是間隔。 UTC 是與世界時座標的偏移量(以分鐘為單位)。 如果 UTC 為零 (000) ,則 日期時間 值是間隔。 值必須以零填補。 不重要的欄位可以用星號 (*) 填入。 |
2 |