Числа (WMI)
В MOF числа — это цифры, описывающие числовые значения. MOF предоставляет различные типы данных, которые преобразуют в автоматизацию, а также позволяют использовать эти числа в разных форматах. В следующей таблице перечислены числовые значения, поддерживаемые MOF.
Тип данных | Тип автоматизации | Описание |
---|---|---|
sint8 | VT_I2 | Подписанное 8-разрядное целое число. |
sint16 | VT_I2 | Подписанное 16-разрядное целое число. |
sint32 | VT_I4 | Подписанное 32-разрядное целое число. |
sint64 | VT_BSTR | Подписанное 64-разрядное целое число в строковой форме. Этот тип следует шестнадцатеричным или десятичным форматам в соответствии с правилами C Американского национального института стандартов (ANSI). |
real32 | VT_R4 | 4-байтовое значение с плавающей запятой, которое следует стандарту Ieee (IEEE) Института электротехнических инженеров и электроники. |
real64 | VT_R8 | Значение с плавающей запятой 8 байтов, которое соответствует стандарту IEEE. |
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, то 6555 536, как представляется, будет значением 1, вызывая проблемы с типом и диапазоном. Аналогичным образом служба автоматизации представляет тип 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;
};