MOF(Managed Object Format) 클래스 디자인

WMI 공급자는 MOF(Managed Object Format) 파일 및 DLL 파일로 구성됩니다. MOF 파일은 공급자 구현이 데이터를 제공하는 클래스를 정의합니다.

MOF 클래스 정의는 mofcomp 유틸리티로 컴파일되고 CIM(Common Information Model) 리포지토리라고도 하는 WMI 리포지토리에 저장됩니다. 클래스를 만드는 덜 일반적인 방법은 WMI용 COM API 메서드를 사용하는 것입니다.

참고

WMI에 오류가 있어서 다시 시작될 경우 관리형 개체에 대한 모든 WMI 클래스 정의가 WMI 리포지토리로 복원되도록 하려면 MOF 파일에 있는 #pragma autorecover 전처리기 명령을 사용합니다.

 

이 항목에서 다루는 섹션은 다음과 같습니다.

관리할 개체 정의

관리할 엔터프라이즈 부분을 식별한 후 관리할 개체를 정의합니다. 정의에는 필요한 데이터가 포함되어야 하며 관련 비즈니스 규칙을 정확하게 구현할 수 있습니다. 세분화된 수준에서 개체를 정의할 수 있지만 정의에 포함된 세부 정보 수준과 유용할 만큼 충분한 세부 정보를 제공해야 하는 경우를 결정하는 것이 가장 좋습니다. 프로세스 초기에 바로 가기를 사용하면 시간이 절약될 수 있지만 나중에 더 많은 작업을 유발할 수 있습니다.

DMTF(분산 관리 태스크 포스) 웹 사이트의 CIM 자습서에는 설계 프로세스에 대한 훌륭한 정보가 포함되어 있습니다. 자세한 내용은 www.dmtf.org를 참조하세요.

스키마 디자인을 개발하고 구현할 때 다음 요소를 고려합니다.

  • 한정자

    한정자는 클래스, 개체, 속성, 메서드 및 매개 변수를 설명하는 방법에 대한 정보를 제공하며 클래스 및 속성 정의에 적용됩니다. MOF 코드에서 한정자는 대괄호로 묶고 [키] 또는 [연결]을 포함할 수 있습니다. 자세한 내용은 한정자 추가WMI 한정자를 참조하세요.

  • 네임스페이스

    네임스페이스는 클래스 및 개체를 그룹화하고 범위 및 표시 유형을 제어하는 논리 단위입니다. 일반적으로 네임스페이스에는 특정 환경에서 관리되는 개체를 나타내는 클래스 및 개체 집합이 포함됩니다. 자세한 내용은 WMI 내에서 계층 구조 만들기를 참조하세요.

  • Object

    모델링된 개체는 스키마의 물리적 또는 논리적 요소일 수 있습니다. 예를 들어 하드 디스크 드라이브와 같은 실제 디스크 드라이브 또는 실제 디스크의 파티션일 수 있는 논리 디스크를 모델링할 수 있습니다. 클래스를 사용하여 실제 디스크 드라이브를 모델링한 다음, 해당 클래스를 확장해 논리 디스크를 모델링하는 설계는 각 디스크 유형에 대해 별도의 클래스를 만들려고 시도하는 것보다 확장성이 좋습니다.

  • 데이터

    데이터는 동적 또는 정적일 수 있습니다. 데이터가 동적인 경우 해당 데이터에 대한 클래스 공급자를 만들어야 합니다.

    사용자가 데이터를 수정할 수 있도록 하려면 사용자가 호출하는 메서드를 사용해야만 속성을 직접 쓸 수 있는지 또는 수정이 가능한지 여부를 결정해야 합니다.

속성 또는 메서드 정의

일반적으로 WMI 클래스 속성은 C++ 클래스의 속성과 비슷합니다. 코드가 데이터 조각에 대해 구현하는 유일한 작업이 값을 가져오거나 값을 설정하는 경우 데이터를 WMI 클래스의 속성으로 정의해야 합니다.

WMI 메서드는 일반적으로 관리되는 개체의 상태를 변경하는 작업을 수행합니다. 예를 들어 작업이 하드웨어 개체의 작업을 사용하거나 사용하지 않도록 설정하는 경우 메서드는 읽기/쓰기 속성을 만드는 것이 좋습니다. 하드웨어 상태를 표시하는 속성을 만들 수도 있습니다.

클래스 또는 인스턴스를 만들 때 주석을 포함할 수 있습니다. 이 기술을 사용하여 클래스를 문서화하거나 프로그래밍 기술을 설명합니다. 자세한 내용은 클래스 만들기를 참조하세요. 또한 데이터를 추가하여 데이터 개체의 목적을 한정할 수 있습니다. 자세한 내용은 한정자 추가를 참조하세요.

개체를 서로 연결

개체를 서로 연결하는 방법에는 별도의 개체와 개체를 연결하는 연결 개체를 만들거나 한 개체를 다른 개체에 포함하는 두 가지 방법이 있습니다. CIM은 포함 개체를 지원하지 않으므로 CIM 규격이 되려면 첫 번째 메서드를 사용해야 합니다. 그러나 WMI는 포함 개체를 지원하므로 두 메서드 중 하나를 사용하여 개체 간의 관계를 나타냅니다. 포함된 개체의 예제는 Win32 클래스에서 찾을 수 있습니다. 예를 들어 Win32_SecurityDescriptor가 포함 개체 Win32_ACE이며 다른 포함 개체가 Win32_Trustee입니다.

개체 간 관계를 나타내는 방법을 결정할 때 다음 사항을 고려합니다.

WMI 공급자 개발

WMI에 데이터 제공

MOF 데이터 형식