WMI 공급자 개발
공급자는 WMI와 관리되는 개체 간의 중개자 역할을 하는 COM(Component Object Model) 개체입니다. 예를 들어 응용 프로그램 또는 스크립트가 WMI Win32_LogicalDisk 클래스를 사용하여 디스크 데이터를 요청하는 경우 사전 설치된 Win32 공급자를 통해 데이터를 동적으로 가져옵니다.
WMI를 통해 다른 응용 프로그램에 데이터를 제공하려는 경우 COM 서버를 쓰거나 Visual Studio의 WMI ATL 마법사를 통해 관리되지 않는 코드 공급자를 만들 수 있습니다. .NET Framework에서 WMI를 사용하여 관리 코드 공급자를 쓸 수 있습니다. 이 섹션의 항목에서는 관리되지 않는 COM 공급자를 작성하는 프로세스를 설명합니다.
참고
WMI에 오류가 있고 다시 시작되는 경우 관리되는 개체에 대한 모든 WMI 클래스 정의가 WMI 리포지토리로 복원되도록 하려면 MOF(Managed Object Format) 파일에서 #pragma 자동 복구 전처리기 명령을 사용합니다.
공급자는 MOF(Managed Object Format) 스키마에 정의된 클래스와 공급자의 함수를 수행하는 DLL 파일로 구성됩니다. 예를 들어 Win32 공급자의 클래스를 정의하는 MOF는 CIMWin32.mof이고 DLL은 CIMWin32.dll입니다. 둘 다 %windir%\System32\Wbem에 있습니다.
공급자에 대한 MOF 스키마에는 여러 공급자 유형이 포함될 수 있습니다. 예를 들어 이벤트 로그 공급자에는 Ntevt.mof라는 하나의 MOF 파일에 인스턴스, 메서드 및 이벤트 공급자 형식이 있습니다. 관련 공급자에 대한 모든 클래스 및 등록 스키마는 클래스당 하나의 파일을 만드는 대신 하나의 파일로 어셈블하는 것이 좋습니다.
사전 설치된 공급자를 사용하는 것 외에도 하드웨어 디바이스 또는 소프트웨어 작업에 대한 정보를 제공하는 사용자 고유의 공급자를 만들 수 있습니다.
다음 표에서는 공급자를 만드는 기본 작업을 나열합니다.
Task | 설명 |
---|---|
MOF(Managed Object Format) 클래스 디자인 | WMI를 통해 관리하려는 엔터티에 대한 모델을 개발하고 스키마를 설명하는 MOF(Managed Object Format) 파일을 만듭니다. |
공급자를 작성하여 WMI에 데이터 제공 | WMI에 결합된 가장 기본적인 공급자를 만듭니다. |
응용 프로그램에 공급자 통합 | 매번 실행되지 않는 경우 공급자를 응용 프로그램 내 구성 요소로 포함합니다. |
공급자 등록 | COM 및 WMI에 공급자를 등록합니다. |
공급자 초기화 |
IWbemProviderInit 및 IWbemProviderInitSink 인터페이스를 구현합니다. |
WMI 호출 | 공급자에서 WMI 인터페이스를 호출합니다. |
클라이언트 가장 | 클라이언트 응용 프로그램에 액세스하도록 보안을 설정합니다. |
공급자 업데이트 | 필요에 따라 공급자를 개선합니다. |
공급자 업로드 | 종료 중 또는 공급자가 유휴 상태일 때 메모리에서 공급자를 제거합니다. |
공급자 디버깅 및 공급자 구성 및 문제 해결 클래스 | WMI에서 제공하는 기능을 사용하여 공급자를 디버그합니다. |
64비트 컴퓨터에서 데이터 가져오기 및 제공 | 32비트 응용 프로그램 호환성 공급자가 필요한지 또는 64비트 공급자가 두 클라이언트에 데이터를 제공할 수 있는지 평가합니다. |
다음 항목에서는 다양한 유형의 공급자를 작성하는 데 필요한 단계에 대해 설명합니다.