Compartir a través de


Números (WMI)

En MOF, los números son dígitos que describen valores numéricos. MOF proporciona una variedad de tipos de datos que se traducen en Automatización y también permite que esos números estén en diferentes formatos. En la tabla siguiente se enumeran los valores numéricos que admite MOF.

Tipo de dato Tipo de automatización Descripción
sint8 VT_I2 Entero de 8 bits con signo.
sint16 VT_I2 Entero de 16 bits con signo.
sint32 VT_I4 Entero de 32 bits con signo.
sint64 VT_BSTR Entero de 64 bits con signo en forma de cadena. Este tipo sigue el formato hexadecimal o decimal según las reglas del American National Standards Institute (ANSI).
real32 VT_R4 Valor de punto flotante de 4 bytes que sigue el estándar Institute of Electrical and Electronics Engineers, Inc. (IEEE).
real64 VT_R8 Valor de punto flotante de 8 bytes que sigue el estándar IEEE.
uint8 VT_UI1 Entero de 8 bits sin signo.
uint16 VT_I4 Entero de 16 bits sin signo.
uint32 VT_I4 Entero de 32 bits sin signo.
uint64 VT_BSTR Entero de 64 bits sin signo en forma de cadena. Este tipo sigue el formato hexadecimal o decimal según las reglas de ANSI C.

Aunque es flexible, el código MOF encuentra algunos cambios al tratar con Automation:

  • Debe codificar enteros de 64 bits como cadenas.

    La automatización no admite un tipo entero de 64 bits.

  • Los tipos de automatización no siempre corresponden en tamaño de bits a tipos de datos MOF.

    Por ejemplo, Automation usa VT_I4 para devolver un valor de 16 bits sin signo. Esta discrepancia existe debido a problemas de extensión de signo. Si Automation usa VT_I2 en lugar de VT_I4, 65 536 parecería ser el valor 1, lo que provoca problemas de tipo y intervalo. Del mismo modo, Automation representa el tipo de uint32 como VT_I4 porque no existe ningún tipo entero mayor que contenga uint32.

  • No es necesario cambiar ninguna representación para los tipos de números de 8 bits.

    Automation admite VT_UI1, un tipo de 8 bits sin signo.

MOF admite constantes largas. Se declara una constante larga mediante una serie simple de dígitos con un signo negativo opcional. Una constante larga no puede superar el tamaño de la variable que se declara para contenerla. Algunos ejemplos de constantes largas son 1000 y 12310.

MOF también admite formatos numéricos alternativos. En la tabla siguiente se enumeran los caracteres especiales que debe usar para describir constantes hexadecimales, binarias y octales.

Constante Carácter especial Ejemplo
Decimal
Ninguno
val = 65
Hexadecimal
Prefijo 0x
val = 0x41
Octal
0 inicial
val = 0101
Binario
Final B
val = 1000001B

Puede usar una constante de punto flotante para representar notación científica, así como fracciones, como se muestra a continuación:

3.14
-3.14
-1.2778E+02

WMI considera constantes de punto flotante como tipos de VT_R8 para Automation.

En el ejemplo siguiente se describen las declaraciones de clase e instancia que muestran cómo usar cada uno de los tipos de datos numéricos para establecer propiedades:

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;
 };