영어로 읽기

다음을 통해 공유


숫자(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;
 };