數位 (WMI)
在MOF中,數位是描述數值的數位。 MOF 提供各種數據類型,這些數據類型會轉譯成自動化,也允許這些數位的格式不同。 下表列出MOF支援的數值。
數據類型 | 自動化類型 | 描述 |
---|---|---|
sint8 | VT_I2 | 帶正負號的8位整數。 |
int16 | VT_I2 | 帶正負號的16位整數。 |
sint32 | VT_I4 | 帶正負號的32位整數。 |
sint64 | VT_BSTR | 字串格式為帶正負號的64位整數。 根據美國國家標準研究所 (ANSI) C 規則,此類型遵循十六進位或十進位格式。 |
real32 | VT_R4 | 4 位元組浮點值,緊隨電氣電子工程師研究所(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,造成類型和範圍問題。 同樣地,Automation 會將 uint32 類型表示為 VT_I4,因為沒有較大的整數類型可包含 uint32。
您不需要變更 8 位數位類型的任何表示法。
自動化支援VT_UI1,這是未帶正負號的8位類型。
MOF 支援長常數。 您可以使用具有選擇性負號的簡單數位系列來宣告長常數。 長常數不能超過宣告為保存變數的大小。 長常數的一些範例為 1000 和 12310。
MOF 也支援替代數值格式。 下表列出您必須用來描述十六進位、二進位和八進位常數的特殊字元。
不斷 | 特殊字元 | 例 |
---|---|---|
十進位 |
沒有 |
val = 65 |
十六進位 |
0x 前置詞 |
val = 0x41 |
八進位 |
前置 0 |
val = 0101 |
二元的 |
尾端 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;
};