Udostępnij za pośrednictwem


Liczby (WMI)

W moF liczby to cyfry, które opisują wartości liczbowe. Funkcja MOF udostępnia różne typy danych, które przekładają się na automatyzację, a także umożliwia używanie tych liczb w różnych formatach. W poniższej tabeli wymieniono wartości liczbowe obsługiwane przez narzędzie MOF.

Typ danych Typ automatyzacji Opis
sint8 VT_I2 Podpisana 8-bitowa liczba całkowita.
sint16 VT_I2 Podpisana 16-bitowa liczba całkowita.
sint32 VT_I4 Podpisana 32-bitowa liczba całkowita.
sint64 VT_BSTR Podpisana 64-bitowa liczba całkowita w postaci ciągu. Ten typ jest zgodny z formatem szesnastkowym lub dziesiętnym zgodnie z regułami American National Standards Institute (ANSI).
real32 VT_R4 4-bajtowa wartość zmiennoprzecinkowa zgodna ze standardem Institute of Electrical and Electronics Engineers, Inc. (IEEE).
real64 VT_R8 8-bajtowa wartość zmiennoprzecinkowa zgodna ze standardem IEEE.
uint8 VT_UI1 Niepodpisane 8-bitowe liczby całkowite.
uint16 VT_I4 Niepodpisane 16-bitowe liczby całkowite.
uint32 VT_I4 Niepodpisane 32-bitowe liczby całkowite.
uint64 VT_BSTR Niepodpisane 64-bitowe liczby całkowite w postaci ciągu. Ten typ jest zgodny z formatem szesnastkowym lub dziesiętnym zgodnie z regułami ANSI C.

Mimo że jest elastyczny, kod MOF napotyka pewne zmiany podczas pracy z usługą Automation:

  • Musisz zakodować 64-bitowe liczby całkowite jako ciągi.

    Automatyzacja nie obsługuje 64-bitowego typu całkowitego.

  • Typy automatyzacji nie zawsze odpowiadają rozmiarowi bitów typom danych MOF.

    Na przykład usługa Automation używa VT_I4 do zwrócenia niepodpisanej wartości 16-bitowej. Ta rozbieżność istnieje z powodu problemów z rozszerzeniem podpisywania. Jeśli usługa Automation użyła VT_I2 zamiast VT_I4, wartość 65 536 wydaje się być wartością 1, powodując problemy z typem i zakresem. Podobnie usługa Automation reprezentuje typ uint32 jako VT_I4, ponieważ nie ma większego typu liczby całkowitej zawierającej uint32.

  • Nie trzeba zmieniać żadnej reprezentacji dla 8-bitowych typów liczbowych.

    Usługa Automation obsługuje VT_UI1 bez znaku typu 8-bitowego.

MoF obsługuje długie stałe. Zadeklarujesz długą stałą przy użyciu prostej serii cyfr z opcjonalnym znakiem ujemnym. Długa stała nie może przekraczać rozmiaru zmiennej zadeklarowanej do jej przechowywania. Niektóre przykłady długich stałych to 1000 i 12310.

Funkcja MOF obsługuje również alternatywne formaty liczbowe. W poniższej tabeli wymieniono znaki specjalne, których należy użyć, aby opisać stałe szesnastkowe, binarne i ósemkowe.

Stały Znak specjalny Przykład
Dziesiętny
Żaden
val = 65
Szesnastkowych
Prefiks 0x
val = 0x41
Ósemkowy
Wiodące 0
val = 0101
Dwójkowy
Końcowy B
val = 1000001B

Możesz użyć stałej zmiennoprzecinkowej do reprezentowania notacji naukowej, a także ułamków, jak pokazano poniżej:

3.14
-3.14
-1.2778E+02

Usługa WMI traktuje stałe zmiennoprzecinkowe jako typy VT_R8 dla usługi Automation.

W poniższym przykładzie opisano deklaracje klas i wystąpień, które ilustrują sposób używania każdego z typów danych liczbowych do ustawiania właściwości:

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