數位 (WMI)
在 MOF 中,數位是描述數值的數位。 MOF 提供各種資料類型,可轉譯為自動化,也允許這些數位的格式不同。 下表列出 MOF 支援的數值。
資料類型 | 自動化類型 | 描述 |
---|---|---|
sint8 | VT_I2 | 帶正負號的 8 位整數。 |
sint16 | VT_I2 | 帶正負號的 16 位整數。 |
sint32 | VT_I4 | 帶正負號的 32 位整數。 |
sint64 | VT_BSTR | 字串形式的帶正負號 64 位整數。 此類型會根據美國標準局 (ANSI) C 規則,遵循十六進位或十六進位格式。 |
real32 | VT_R4 | 4 位元組浮點數,緊接在電子工程師協會 inc. (IEEE) 標準之後。 |
real64 | VT_R8 | 遵循 IEEE 標準的 8 位元組浮點值。 |
uint8 | VT_UI1 | 不帶正負號的 8 位整數。 |
uint16 | VT_I4 | 不帶正負號的 16 位整數。 |
uint32 | VT_I4 | 不帶正負號的 32 位整數。 |
uint64 | VT_BSTR | 字串形式的無符號 64 位整數。 此類型會遵循 ANSI C 規則的十六進位或十進位格式。 |
雖然有彈性,但 MOF 程式碼在處理自動化時會遇到一些變更:
您必須將 64 位整數編碼為字串。
自動化不支援 64 位整數類型。
自動化類型不一定會以位大小對應至 MOF 資料類型。
例如,自動化會使用 VT_I4 傳回不帶正負號的 16 位值。 因為簽署延伸模組問題,所以存在這種差異。 如果自動化使用VT_I2而不是VT_I4,則 65,536 會顯示為值 1,造成類型和範圍問題。 同樣地,自動化會將 uint32 類型表示為VT_I4,因為沒有較大的整數類型可包含 uint32。
您不需要變更 8 位數位類型的任何標記法。
自動化支援VT_UI1,這是未帶正負號的 8 位類型。
MOF 支援長常數。 您可以使用具有選擇性負號的簡單數位系列來宣告長常數。 長常數不能超過宣告為保存變數的大小。 長常數的一些範例為 1000 和 12310。
MOF 也支援替代數值格式。 下表列出您必須用來描述十六進位、二進位和八進位常數的特殊字元。
常數 | 特殊字元 | 範例 |
---|---|---|
Decimal |
無 |
val = 65 |
十六進位 |
0x 前置詞 |
val = 0x41 |
八進位 |
前置 0 |
val = 0101 |
Binary |
尾端 B |
val = 1000001B |
您可以使用浮點常數來代表科學標記法和分數,如下所示:
3.14
-3.14
-1.2778E+02
WMI 會將浮點常數視為 自動化VT_R8 類型。
下列範例描述類別和實例宣告,說明如何使用每個數值資料類型來設定屬性:
Class NumericDataClass
{
[key] uint8 Duint8;
SInt8 Dchar;
UInt16 Dtword;
Sint16 Dinst16;
UInt32 Ddword;
Sint32 Dinst1;
Sint32 Dinst2;
Sint32 Dinst3;
Sint32 Dinst4;
Sint32 Dinst5;
Real32 Dfloat;
Real64 Ddouble1;
Real64 Ddouble2;
};
instance of NumericDataClass
{
Duint8 = 122;
Dchar = -128;
Dtword = 30;
Dinst16 = -1445;
Ddword = 6987777;
Dinst1 = -455589;
Dinst2 = 23;
Dinst3 = 03; // Base 8
Dinst4 = 0xFe; // Base 16
Dinst5 = 11b; // Base 2
Dfloat = 3.1478;
Ddouble1 = 99987.3654;
Ddouble2 = 2.3e-2;
};