Tal (WMI)
I MOF är tal siffror som beskriver numeriska värden. MOF tillhandahåller en mängd olika datatyper som översätts till Automation och tillåter även att dessa tal har olika format. I följande tabell visas de numeriska värden som MOF stöder.
Datatyp | Automationstyp | Beskrivning |
---|---|---|
sint8 | VT_I2 | Signerat 8-bitars heltal. |
sint16 | VT_I2 | Signerat 16-bitars heltal. |
sint32 | VT_I4 | Signerat 32-bitars heltal. |
sint64 | VT_BSTR | Signerat 64-bitars heltal i strängform. Den här typen följer hexadecimalt eller decimalformat enligt ANSI-reglerna (American National Standards Institute). |
real32 | VT_R4 | 4-bytes flyttalsvärde som följer IEEE-standarden (Institute of Electrical and Electronics Engineers, Inc. ). |
real64 | VT_R8 | 8 byte flyttalsvärde som följer IEEE-standarden. |
uint8 | VT_UI1 | Osignerat 8-bitars heltal. |
uint16 | VT_I4 | Osignerat 16-bitars heltal. |
uint32 | VT_I4 | Osignerat 32-bitars heltal. |
uint64 | VT_BSTR | Osignerat 64-bitars heltal i strängform. Den här typen följer hexadecimalt eller decimalformat enligt ANSI C-regler. |
Även om MOF-koden är flexibel kan det uppstå vissa ändringar när du hanterar Automation:
Du måste koda 64-bitars heltal som strängar.
Automation stöder inte en 64-bitars integraltyp.
Automationstyper motsvarar inte alltid bitstorleken för MOF-datatyper.
Automation använder till exempel VT_I4 för att returnera ett osignerat 16-bitarsvärde. Den här avvikelsen finns på grund av problem med sign-extension. Om Automation använde VT_I2 i stället för VT_I4, verkar 65 536 vara värdet 1, vilket orsakar typ- och intervallproblem. På samma sätt representerar Automation uint32 typ som VT_I4 eftersom det inte finns någon större heltalstyp som ska innehålla uint32.
Du behöver inte ändra någon representation för 8-bitars taltyper.
Automation stöder VT_UI1, en osignerad 8-bitarstyp.
MOF stöder långa konstanter. Du deklarerar en lång konstant med en enkel serie siffror med ett valfritt negativt tecken. En lång konstant får inte överskrida storleken på variabeln som deklareras innehålla den. Några exempel på långa konstanter är 1000 och 12310.
MOF stöder även alternativa numeriska format. I följande tabell visas de specialtecken som du måste använda för att beskriva hexadecimala, binära och oktala konstanter.
Konstant | Specialtecken | Exempel |
---|---|---|
Decimal |
Ingen |
val = 65 |
Hexadecimal |
0x-prefix |
val = 0x41 |
Oktalt |
Inledande 0 |
val = 0101 |
Binär |
Avslutande B |
val = 1000001B |
Du kan använda en flyttalskonstant för att representera såväl vetenskaplig notation som bråktal, som du ser härnäst:
3.14
-3.14
-1.2778E+02
WMI betraktar flyttalskonstanter som VT_R8 typer för Automation.
I följande exempel beskrivs klass- och instansdeklarationer som visar hur du använder var och en av de numeriska datatyperna för att ange egenskaper:
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;
};