Números (WMI)
No MOF, os números são dígitos que descrevem valores numéricos. O MOF fornece uma variedade de tipos de dados que se traduzem em Automação e também permite que esses números estejam em formatos diferentes. A tabela a seguir lista os valores numéricos aos quais o MOF dá suporte.
Tipo de dados | Tipo de automação | Descrição |
---|---|---|
sint8 | VT_I2 | Inteiro de 8 bits com sinal. |
sint16 | VT_I2 | Inteiro de 16 bits com sinal. |
sint32 | VT_I4 | Inteiro de 32 bits com sinal. |
sint64 | VT_BSTR | Inteiro de 64 bits com sinal no formato de cadeia de caracteres. Esse tipo segue o formato hexadecimal ou decimal de acordo com as regras do ANSI (American National Standards Institute). |
real32 | VT_R4 | Valor de ponto flutuante de 4 bytes que segue o padrão do Institute of Electric and Electronics Engineers, Inc. (IEEE). |
real64 | VT_R8 | Valor de ponto flutuante de 8 bytes que segue o padrão IEEE. |
uint8 | VT_UI1 | Inteiro de 8 bits sem sinal. |
uint16 | VT_I4 | Inteiro de 16 bits sem sinal. |
uint32 | VT_I4 | Inteiro de 32 bits sem sinal. |
uint64 | VT_BSTR | Inteiro de 64 bits sem sinal no formato de cadeia de caracteres. Esse tipo segue o formato hexadecimal ou decimal de acordo com as regras do ANSI C. |
Embora flexível, o código MOF encontra algumas alterações ao lidar com a Automação:
Você deve codificar inteiros de 64 bits como cadeias de caracteres.
A automação não dá suporte a um tipo integral de 64 bits.
Os tipos de automação nem sempre correspondem no tamanho do bit aos tipos de dados MOF.
Por exemplo, a Automação usa VT_I4 para retornar um valor de 16 bits sem sinal. Essa discrepância existe devido a problemas de extensão de sinal. Se a Automação usar VT_I2 em vez de VT_I4, 65.536 parecerá ser o valor 1, causando problemas de tipo e intervalo. Da mesma forma, a Automação representa o tipo uint32 como VT_I4 porque não existe um tipo inteiro maior para conter uint32.
Você não precisa alterar nenhuma representação para tipos numerais de 8 bits.
A automação dá suporte a VT_UI1, um tipo de 8 bits sem sinal.
O MOF dá suporte a constantes longas. Você declara uma constante longa usando uma série simples de dígitos com um sinal negativo opcional. Uma constante longa não pode exceder o tamanho da variável declarada para mantê-la. Alguns exemplos de constantes longas são 1000 e 12310.
O MOF também dá suporte a formatos numéricos alternativos. A tabela a seguir lista os caracteres especiais que você deve usar para descrever constantes hexadecimais, binárias e octais.
Constante | Caractere especial | Exemplo |
---|---|---|
Decimal |
Nenhum |
val = 65 |
Hexadecimal |
Prefixo 0x |
val = 0x41 |
Octal |
0 à esquerda |
val = 0101 |
Binário |
B à direita |
val = 1000001B |
Você pode usar uma constante de ponto flutuante para representar uma notação científica, bem como frações, conforme mostrado a seguir:
3.14
-3.14
-1.2778E+02
O WMI considera constantes de ponto flutuante como tipos de VT_R8 para Automação.
O exemplo a seguir descreve declarações de classe e instância que ilustram como usar cada um dos tipos de dados numéricos para definir propriedades:
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;
};