Driver-Defined WMI 資料項目
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。
資料類型 | 資料格式 | 以位元組為單位的對齊方式 () |
---|---|---|
string |
USHORT,指定以位元組為單位的字串長度,後面接著 Unicode 字串資料。 字串資料可以選擇性地包含終止 0,後面接著填補。 如果是,字串長度必須包含終止 0 和填補。 驅動程式可以使用 MaxLen 限定詞來指定字串字元的最大長度。 指定最大字串長度的驅動程式可以使用固定大小緩衝區來保存字串。 如果字串嚴格小於緩衝區的大小,則驅動程式可以使用零填補字串的其餘部分。 |
2 |
boolean |
一個位元組值,其中 0 為 FALSE,且任何非零值為 TRUE |
1 |
sint8 |
帶正負號的 8 位元整數 |
1 |
uint8 |
不帶正負號的 8 位元整數 |
1 |
sint16 |
帶正負號的 16 位元整數 |
2 |
uint16 |
不帶正負號的 16 位元整數 |
2 |
sint32 |
帶正負號的 32 位元整數 |
4 |
uint32 |
不帶正負號的 32 位元整數 |
4 |
sint64 |
帶正負號的 64 位元整數 |
8 |
uint64 |
不帶正負號的 64 位元整數 |
8 |
datetime |
指定絕對日期或時間間隔的固定長度 25 個字元 Unicode 字串。 datetime值的格式如下: yyyymmddhhmmss.mmmmmmsutc 其中: yyyy 是 4 位數年份 mm 是 2 位數月份 dd 是當月的 2 位數日期 hh 是根據 24 小時制的小時 mm 是分鐘 ss 是秒數 mmmmmm 是微秒數 s 是加號 (+) 或減號 (-) ,指出 utc 是通用時間座標的正或負數位移;或冒號 (:) ,表示 datetime 值是間隔。 utc 是通用時間座標的分鐘數位移。 如果 utc 是零 (000) , 則 datetime 值是間隔。 值必須以零填補。 不重要的欄位可以填入星號 (*) 。 |
2 |