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 diferentes formatos. A tabela a seguir lista os valores numéricos suportados pelo MOF.
Tipo de dados | Tipo de automação | Descrição |
---|---|---|
sint8 | VT_I2 | Inteiro de 8 bits assinado. |
sint16 | VT_I2 | Inteiro de 16 bits assinado. |
sint32 | VT_I4 | Inteiro de 32 bits assinado. |
sint64 | VT_BSTR | Inteiro de 64 bits assinado em forma de cadeia de caracteres. Este tipo segue o formato hexadecimal ou decimal de acordo com as regras C do American National Standards Institute (ANSI). |
real32 | VT_R4 | Valor de ponto flutuante de 4 bytes que segue o padrão do Institute of Electrical and Electronics Engineers, Inc. |
real64 | VT_R8 | Valor de ponto flutuante de 8 bytes que segue o padrão IEEE. |
uint8 | VT_UI1 | Inteiro de 8 bits não assinado. |
uint16 | VT_I4 | Inteiro de 16 bits não assinado. |
uint32 | VT_I4 | Inteiro de 32 bits não assinado. |
uint64 | VT_BSTR | Inteiro de 64 bits não assinado em forma de cadeia de caracteres. Este tipo segue o formato hexadecimal ou decimal de acordo com as regras ANSI C. |
Embora flexível, o código MOF encontra algumas mudanças ao lidar com automação:
Você deve codificar inteiros de 64 bits como cadeias de caracteres.
A automação não suporta um tipo integral de 64 bits.
Os tipos de automação nem sempre correspondem em tamanho de bit aos tipos de dados MOF.
Por exemplo, a automação usa VT_I4 para retornar um valor de 16 bits não assinado. Essa discrepância existe devido a problemas de extensão de sinal. Se a Automação usasse VT_I2 em vez de VT_I4, 65.536 pareceria ser o valor 1, causando problemas de tipo e intervalo. Da mesma forma, Automação representa o tipo de uint32 como VT_I4 porque não existe nenhum tipo inteiro maior para conter uint32.
Não é necessário alterar nenhuma representação para tipos de numeração de 8 bits.
A automação suporta VT_UI1, um tipo de 8 bits não assinado.
MOF suporta 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 que é declarada para mantê-la. Alguns exemplos de constantes longas são 1000 e 12310.
O MOF também suporta 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 | Caráter especial | Exemplo |
---|---|---|
Decimal |
Nenhum |
val = 65 |
Hexadecimal |
Prefixo 0x |
val = 0x41 |
Octal |
Liderando 0 |
val = 0101 |
Binário |
Trailing B |
val = 1000001B |
Você pode usar uma constante de vírgula flutuante para representar 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 VT_R8 tipos 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;
};