Share via


WMI 내에서 계층 구조 만들기

WMI 네임스페이스는 클래스 및 인스턴스 집합의 범위를 정의하는 프로그래밍 개체입니다. WMI 공급자 클래스는 네임스페이스 내에서 정의해야 합니다.

네임스페이스는 SMS 환경 같은 다양한 관리형 환경을 설명합니다. 스키마의 클래스와 인스턴스는 관리형 환경의 구성 요소를 정의하므로, 모든 새 스키마에는 새 네임스페이스가 필요합니다. 예를 들어 root\cimv2 네임스페이스에는 Win32 스키마에 정의된 클래스 및 인스턴스는 물론 Win32 스키마의 상속 대상인 부모 CIM(Common Information Model) 클래스도 포함되어 있습니다. CIM 클래스는 DMTF(분산 관리 태스크 포스)에 의해 정의됩니다.

참고

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

 

WMI는 네임스페이스를 __Namespace 시스템 클래스 또는 __Namespace에서 파생된 모든 클래스의 인스턴스로 정의합니다. __Namespace 시스템 클래스에는 부모 네임스페이스의 범위 내에서 고유해야 하는 Name이라는 단일 속성이 있습니다. Name 속성에는 문자로 시작하는 문자열도 포함되어야 합니다. 문자열에 있는 다른 모든 문자는 문자, 숫자 또는 밑줄일 수 있습니다. 모든 문자는 대/소문자를 구분하지 않습니다.

부모 WMI 네임스페이스는 자식 네임스페이스의 고유한 이름을 결정하는 것 외에, 다른 공급자가 클래스의 정적 인스턴스를 실수로 수정하는 일을 방지하는 역할도 합니다. 예를 들어 다른 공급자의 기존 네임스페이스 아래에 새 네임스페이스를 중첩하는 것이 편리할 수 있습니다. 그러나 원래 공급자는 새 스키마와 일치하도록 모든 클래스 인스턴스를 업데이트하려 할 수 있습니다. 이렇게 하면 원래 공급자가 네임스페이스의 모든 하위 자식을 삭제하게 됩니다. 이것은 대상 네임스페이스에는 적합한 작업일 수 있지만, 자식 네임스페이스에 있는 관련 없는 클래스 인스턴스(사용자의 고유한 공급자 클래스)에 영향을 줄 수 있습니다.

따라서 대부분의 경우 자신이 직접 제어하지 않는 네임스페이스와 별개인 네임스페이스를 만들고 등록하는 것이 좋습니다. 클래스가 일반 CIM 클래스 또는 회사의 다른 클래스에서만 파생되는 경우에는 특히 더 그렇습니다. 사용자의 네임스페이스는 다음과 같이 Root 네임스페이스 아래에 있을 수 있습니다.

Root/myCompany/myProduct

반대로 새 클래스가 다른 공급자의 클래스에서 파생되는 경우에는 해당 공급자의 하위 네임스페이스에 클래스를 저장해야 할 수 있습니다. 이렇게 되면 원래 공급자가 새 클래스를 실수로 삭제할 수 있습니다.

WMI는 네임스페이스를 만드는 다양한 방법을 제공합니다.

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