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 Automation 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 datos | 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 del Institute of Electrical and Electronics Engineers, Inc. (IEEE). |
real64 | VT_R8 | Valor de punto flotante de 8 bytes que sigue el estándar de 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:
Los enteros de 64 bits se deben codificar como cadenas.
Automation no admite un tipo integral de 64 bits.
Los tipos de Automation no siempre se corresponden en tamaño de bits a los tipos de datos de 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 usara VT_I2 en lugar de VT_I4, 65 536 parecería ser el valor 1, lo que provoca problemas de tipo y intervalo. De forma similar, Automation representa el tipo uint32 como VT_I4 porque no existe ningún tipo entero mayor que contenga uint32.
No es necesario cambiar ninguna representación de los tipos numéricos 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 |
Binary |
B final |
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;
};