숫자(WMI)
MOF에서 숫자는 숫자 값을 설명하는 숫자입니다. MOF에는 Automation으로 변환되는 다양한 데이터 형식이 있으며 이러한 숫자를 다양한 형식으로도 사용할 수 있습니다. 다음 표에는 MOF에서 지원하는 숫자 값이 나열되어 있습니다.
데이터 형식 | Automation 유형 | 설명 |
---|---|---|
sint8 | VT_I2 | 부호 있는 8비트 정수 |
sint16 | VT_I2 | 부호 있는 16비트 정수 |
sint32 | VT_I4 | 부호 있는 32비트 정수 |
sint64 | VT_BSTR | 문자열 형식의 부호 있는 64비트 정수 이 형식은 ANSI(미국 국립 표준 연구소) C 규칙에 따른 16진수 또는 10진수 형식을 따릅니다. |
real32 | VT_R4 | IEEE(Institute of Electrical and Electronics Engineers, Inc.) 표준을 따르는 4바이트 부동 소수점 값입니다. |
real64 | VT_R8 | IEEE 표준을 따르는 8바이트 부동 소수점 값입니다. |
uint8 | VT_UI1 | 부호 없는 8비트 정수 |
uint16 | VT_I4 | 부호 없는 16비트 정수 |
uint32 | VT_I4 | 부호 없는 32비트 정수 |
uint64 | VT_BSTR | 문자열 형식의 부호 없는 64비트 정수 이 형식은 ANSI C 규칙에 따른 16진수 또는 10진수 형식을 따릅니다. |
MOF 코드는 유연하지만 Automation으로 처리할 때 몇 가지 변경 사항이 발생합니다.
64비트 정수는 문자열로 인코딩해야 합니다.
Automation은 64비트 정수 형식을 지원하지 않습니다.
Automation 형식이 항상 비트 크기에서 MOF 데이터 형식과 일치하는 것은 아닙니다.
예를 들어, Automation은 VT_I4를 사용하여 부호 없는 16비트 값을 반환합니다. 이런 차이가 있는 것은 서명 확장 문제 때문입니다. Automation이 VT_I4 대신 VT_I2를 사용한다면 65,536이 값 1로 표시되어 형식 및 범위 문제가 발생할 것입니다. 마찬가지로 Automation은 uint32를 포함하는 더 큰 정수 형식이 없기 때문에 uint32 형식을 VT_I4로 나타냅니다.
8비트 숫자 형식 표현을 변경할 필요가 없습니다.
Automation은 부호 없는 8비트 형식인 VT_UI1 지원합니다.
MOF는 긴 상수를 지원합니다. 선택적 음수 부호가 있는 간단한 일련의 숫자를 사용하여 긴 상수를 선언합니다. 긴 상수는 보유하도록 선언된 변수의 크기를 초과할 수 없습니다. 긴 상수의 몇 가지 예는 1000 및 12310입니다.
MOF는 대체 숫자 형식도 지원합니다. 다음 표에는 16진수, 2진수 및 8진수 상수를 설명하는 데 사용해야 하는 특수 문자가 나열되어 있습니다.
상수 | 특수 문자 | 예 |
---|---|---|
Decimal |
None |
val = 65 |
16진수 |
0x 접두사 |
val = 0x41 |
Octal |
줄 간격 0 |
val = 0101 |
이진 |
후행 B |
val = 1000001B |
다음과 같이 부동 소수점 상수를 사용하여 과학적 표기법과 분수를 나타낼 수 있습니다.
3.14
-3.14
-1.2778E+02
WMI는 부동 소수점 상수를 Automation의 VT_R8 형식으로 간주합니다.
다음 예제에서는 각 숫자 데이터 형식을 사용하여 속성을 설정하는 방법을 보여주는 클래스 및 인스턴스 선언에 대해 설명합니다.
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;
};