WMI 공급자 MOF(Managed Object Format) 파일 및 DLL 파일로 구성됩니다. MOF 파일은 공급자 구현이 데이터를 제공하는 클래스를 정의합니다.
MOF 클래스 정의는 mofcomp 유틸리티에 의해 컴파일되고 CIM(공용 정보 모델) 리포지토리라고도 하는 WMI 리포지토리저장됩니다. 클래스를 만드는 덜 일반적인 방법은 WMI 대한COM API의 메서드를 사용하는 것입니다.
메모
관리 객체의 모든 WMI 클래스 정의가 WMI 오류가 발생하여 WMI가 오류로 인해 다시 시작될 때 WMI 리포지토리에 복원되도록 하려면 MOF 파일에서 #pragma autorecover 전처리기 명령을 사용합니다.
이 항목에서는 다음 섹션에 대해 설명합니다.
- 관리할 개체 정의
- 속성 또는 메서드 정의
- 개체를 서로 관련시키기
- 관련 항목
관리할 개체 정의
관리할 엔터프라이즈 부분을 식별한 후 관리할 개체를 정의합니다. 정의에는 필요한 데이터가 포함되어야 하며 관련 비즈니스 규칙을 정확하게 구현할 수 있습니다. 세분화된 수준에서 개체를 정의할 수 있지만 정의에 포함된 세부 수준과 유용할 만큼 충분한 세부 정보를 제공해야 하는 경우를 결정하는 것이 가장 좋습니다. 프로세스 초기의 바로 가기는 시간을 절약할 수 있지만 나중에 더 많은 작업이 발생할 수 있습니다.
DMTF(Distributed Management Task Force) 웹 사이트의 CIM 자습서에는 디자인 프로세스에 대한 훌륭한 정보가 포함되어 있습니다. 자세한 내용은 www.dmtf.org참조하세요.
스키마 디자인을 개발하고 구현할 때 다음 요소를 고려합니다.
한정자
한정자는 클래스, 개체, 속성, 메서드 및 매개 변수를 설명하는 방법에 대한 정보를 제공합니다. 클래스 및 속성 정의에 적용됩니다. MOF 코드에서 한정자는 대괄호로 묶이고 [키] 또는 [연결]을 포함할 수 있습니다. 자세한 내용은 한정자 추가 및 WMI 한정자참조하세요.
Namespace
네임스페이스는 클래스와 개체를 그룹화하고 범위와 표시 유형을 제어하는 논리 단위입니다. 일반적으로 네임스페이스에는 특정 환경의 관리되는 개체를 나타내는 클래스 및 개체 집합이 포함됩니다. 자세한 내용은 WMI내에서 계층 구조 만들기를 참조하세요.
객체
모델링된 개체는 스키마의 물리적 또는 논리적 요소일 수 있습니다. 예를 들어 하드 디스크 드라이브와 같은 실제 디스크 드라이브 또는 실제 디스크의 파티션일 수 있는 논리 디스크를 모델링할 수 있습니다. 클래스를 사용하여 실제 디스크 드라이브를 모델링한 다음 해당 클래스를 확장하여 논리 디스크를 모델링하는 디자인은 각 디스크 유형에 대해 별도의 클래스를 만들려고 시도하는 것보다 확장할 수 있습니다.
데이터
데이터는 동적이거나 정적일 수 있습니다. 데이터가 동적인 경우 해당 클래스 공급자를 만들어야 합니다.
사용자가 데이터를 수정할 수 있도록 하려면 사용자가 호출하는 메서드를 사용해야만 속성을 직접 쓸 수 있는지 또는 수정할 수 있는지를 결정해야 합니다.
속성 또는 메서드 정의
일반적으로 WMI 클래스 속성은 C++ 클래스의 속성과 비슷합니다. 코드가 데이터 조각에 대해 구현하는 유일한 동작이 값을 얻거나 값을 설정하는 경우 데이터는 WMI 클래스의 속성으로 정의되어야 합니다.
WMI 메서드는 일반적으로 관리되는 개체의 상태를 변경하는 작업을 수행합니다. 예를 들어 작업이 하드웨어 개체의 작업을 사용하거나 사용하지 않도록 설정하는 경우 읽기/쓰기 속성을 만드는 데 메서드를 사용하는 것이 좋습니다. 하드웨어의 상태를 표시하는 속성을 만들 수도 있습니다.
클래스 또는 인스턴스를 만들 때 주석을 포함할 수 있습니다. 이 기술을 사용하여 클래스를 문서화하거나 프로그래밍 기술을 설명합니다. 자세한 내용은 메모 만들기참조하세요. 또한 데이터를 추가하여 데이터 개체의 목적을 한정할 수 있습니다. 자세한 내용은 한정자 추가를 참조하세요.
객체를 서로 관련짓기
개체를 서로 연결하는 방법에는 별도의 개체와 개체를 연결하는 연결 개체를 만들거나 한 개체를 다른 개체에 포함하는 두 가지 방법이 있습니다. CIM은 포함된 개체를 지원하지 않으므로 CIM을 준수하려면 첫 번째 메서드를 사용해야 합니다. 그러나 WMI는 포함된 개체를 지원하므로 두 방법 중 하나를 사용하여 개체 간의 관계를 나타냅니다. Win32 클래스포함된 개체의 예를 찾을 수 있습니다. 예를 들어 Win32_SecurityDescriptor에는 포함된 개체 Win32_ACE가 있으며, 이에는 다른 포함된 개체인 Win32_Trustee가 포함되어 있습니다.
개체 간의 관계를 나타내는 방법을 결정할 때 다음을 고려합니다.
- 인스턴스 자체가 유용한 경우 연결이 가장 잘 작동합니다. 예를 들어 Win32_Process 및 Win32_UserAccount. 자세한 내용은 연결 클래스 선언하는참조하세요.
- 부모 개체 외부에 인스턴스가 없는 경우 포함된 개체가 가장 적합합니다. 예를 들어 Win32_SecurityDescriptor 및 Win32_ACE. 자세한 내용은 클래스에 개체 포함에 대해를 참조하십시오.
관련 항목