Numeri (WMI)

In MOF i numeri sono cifre che descrivono i valori numerici. MOF offre un'ampia gamma di tipi di dati che si traducono in Automazione e consente anche a tali numeri di essere in formati diversi. Nella tabella seguente sono elencati i valori numerici supportati da MOF.

Tipo di dati Tipo di automazione Descrizione
sint8 VT_I2 Intero con segno a 8 bit.
sint16 VT_I2 Intero con segno a 16 bit.
sint32 VT_I4 Intero con segno a 32 bit.
sint64 VT_BSTR Intero a 64 bit firmato in formato stringa. Questo tipo segue il formato esadecimale o decimale in base alle regole anSI (American National Standards Institute).
real32 VT_R4 Valore a virgola mobile a 4 byte che segue lo standard Institute of Electrical and Electronics Engineers, Inc. (IEEE).
real64 VT_R8 Valore a virgola mobile a 8 byte che segue lo standard IEEE.
uint8 VT_UI1 Intero senza segno a 8 bit.
uint16 VT_I4 Intero senza segno a 16 bit.
uint32 VT_I4 Intero senza segno a 32 bit.
uint64 VT_BSTR Intero senza segno a 64 bit in formato stringa. Questo tipo segue il formato esadecimale o decimale in base alle regole ANSI C.

Anche se flessibile, il codice MOF rileva alcune modifiche durante la gestione dell'automazione:

  • È necessario codificare interi a 64 bit come stringhe.

    L'automazione non supporta un tipo integrale a 64 bit.

  • I tipi di automazione non corrispondono sempre alle dimensioni di bit ai tipi di dati MOF.

    Ad esempio, Automazione usa VT_I4 per restituire un valore a 16 bit senza segno. Questa discrepanza esiste a causa di problemi di estensione di firma. Se Automazione usata VT_I2 anziché VT_I4, 65.536 sembra essere il valore 1, causando problemi di tipo e intervallo. Analogamente, Automazione rappresenta il tipo uint32 come VT_I4 perché non esiste alcun tipo intero più grande per contenere uint32.

  • Non è necessario modificare alcuna rappresentazione per i tipi numerali a 8 bit.

    Automazione supporta VT_UI1, un tipo senza segno a 8 bit.

MOF supporta costanti lunghe. Si dichiara una costante lunga usando una semplice serie di cifre con un segno negativo facoltativo. Una costante lunga non può superare le dimensioni della variabile dichiarata per conservarla. Alcuni esempi di costanti lunghe sono 1000 e 12310.

MOF supporta anche formati numerici alternativi. La tabella seguente elenca i caratteri speciali da usare per descrivere costanti esadecimali, binarie e ottali.

Costante Carattere speciale Esempio
Decimal
Nessuno
val = 65
Valore esadecimale
Prefisso 0x
val = 0x41
Ottale
0 iniziale
val = 0101
Binary
Finale B
val = 1000001B

È possibile usare una costante a virgola mobile per rappresentare la notazione scientifica e le frazioni, come illustrato di seguito:

3.14
-3.14
-1.2778E+02

WMI considera costanti a virgola mobile come tipi di VT_R8 per Automazione.

Nell'esempio seguente vengono descritte dichiarazioni di classe e di istanza che illustrano come usare ognuno dei tipi di dati numerici per impostare le proprietà:

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