Dela via


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