다음을 통해 공유


숫자(WMI)

MOF에서 숫자는 숫자 값을 설명하는 숫자입니다. MOF는 Automation으로 변환되는 다양한 데이터 형식을 제공하며 이러한 숫자가 다른 형식일 수도 있습니다. 다음 표에서는 MOF에서 지원하는 숫자 값을 나열합니다.

데이터 형식 자동화 유형 묘사
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비트 정수 계열 형식을 지원하지 않습니다.

  • 자동화 형식이 항상 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진수, 이진 및 8진수 상수에 대해 설명하는 데 사용해야 하는 특수 문자를 나열합니다.

상수 특수 문자 본보기
십진법
없음
val = 65
16 진수
0x 접두사
val = 0x41
진수
선행 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;
 };