Поделиться через


Числа (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;
 };