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