Partager via


Nombres (WMI)

Dans MOF, les nombres sont des chiffres qui décrivent des valeurs numériques. MOF fournit différents types de données qui se traduisent en Automation, et permet également à ces nombres d’être dans différents formats. Le tableau suivant liste les valeurs numériques que MOF prend en charge.

Type de données Type Automation Description
sint8 VT_I2 Entier signé 8 bits.
sint16 VT_I2 Entier signé 16 bits.
sint32 VT_I4 Entier signé 32 bits.
sint64 VT_BSTR Entier signé 64 bits sous forme de chaîne. Ce type suit le format hexadécimal ou décimal selon les règles C de l’American National Standards Institute (ANSI).
real32 VT_R4 Valeur à virgule flottante sur 4 octets qui suit la norme IEEE (Institute of Electrical and Electronics Engineers, Inc.).
real64 VT_R8 Valeur à virgule flottante sur 8 octets qui suit la norme IEEE.
uint8 VT_UI1 Entier non signé 8 bits.
uint16 VT_I4 Entier non signé 16 bits.
uint32 VT_I4 Entier non signé 32 bits.
uint64 VT_BSTR Entier non signé 64 bits sous forme de chaîne. Ce type suit le format hexadécimal ou décimal selon les règles C de l’ANSI.

Bien que flexible, le code MOF rencontre certains changements lorsqu’il traite avec Automation :

  • Vous devez encoder les entiers 64 bits sous forme de chaînes.

    Automation ne prend pas en charge un type intégral 64 bits.

  • Les types Automation ne correspondent pas toujours, en taille de bits, aux types de données MOF.

    Par exemple, Automation utilise VT_I4 pour retourner une valeur non signée 16 bits. Cette différence est due à des problèmes d’extension de signature. Si Automation a utilisé VT_I2 au lieu de VT_I4, 65 536 semble être la valeur 1, ce qui entraîne des problèmes de type et de plage. De même, Automation représente le type uint32 en tant que VT_I4, car il n’existe aucun type d’entier plus grand pour contenir uint32.

  • Vous n’avez pas besoin de modifier une représentation pour les types de chiffres 8 bits.

    Automation prend en charge VT_UI1, un type non signé 8 bits.

MOF prend en charge les constantes longues. Vous déclarez une constante longue à l’aide d’une simple série de chiffres avec un signe négatif facultatif. Une constante longue ne peut pas dépasser la taille de la variable qui est déclarée pour la contenir. 1000 et 12310 sont des exemples de constantes longues.

MOF prend également en charge d’autres formats numériques. Le tableau suivant liste les caractères spéciaux que vous devez utiliser pour décrire les constantes hexadécimales, binaires et octales.

Constant Caractère spécial Exemple
Decimal
None
val = 65
Valeur hexadécimale
Préfixe 0x
val = 0x41
Octal
0 de début
val = 0101
Binaire
B de fin
val = 1000001B

Vous pouvez utiliser une constante à virgule flottante pour représenter la notation scientifique ainsi que les fractions, comme indiqué ci-après :

3.14
-3.14
-1.2778E+02

WMI considère les constantes à virgule flottante comme des types VT_R8 pour Automation.

L’exemple suivant décrit les déclarations de classe et d’instance qui illustrent comment utiliser chacun des types de données numériques pour définir des propriétés :

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