WMI에 데이터 제공

WMI를 사용하면 WMI 공급자를 통해 Windows 관리 가능 개체에 관한 데이터를 사용할 수 있습니다. 공급자는 시스템 구성 요소(예: 프로세스) 또는 계측된 애플리케이션(예: SNMP 또는 IIS)에서 데이터를 검색하고 WMI를 통해 해당 데이터를 관리 애플리케이션에 전달합니다. 예를 들어, 애플리케이션 또는 스크립트가 WMI Win32_Process 클래스를 사용하여 정보를 처리하는 경우 사전 설치 공급자를 통해 데이터를 동적으로 가져옵니다.

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

관리 가능한 개체에 대한 모델 만들기

공급자를 개발하기 전에 WMI를 통해 노출할 관리 가능 개체를 나타내는 데이터 모델을 만듭니다. 공급자가 노출할 데이터 개체를 계획합니다. 예를 들어, 데스크톱 배경의 화면 해상도를 관리할 경우 MOF(관리 개체 형식) 파일에서 데스크톱을 모델링하는 방법을 결정해야 합니다.

유용한 모델을 만들려면 다음을 수행합니다.

  • 실제 시나리오를 결정하고 고객이 관리 가능한 각 개체에 대해 읽고 업데이트해야 할 수 있는 정보(예: 배경 이미지 변경)를 모델링합니다. 다음은 클래스 속성입니다.
  • 고객이 관리 가능한 각 개체로 수행할 수 있는 작업 종류를 결정합니다. 다음은 메서드입니다.

관리 가능한 개체에 대한 모델 구현

관리 가능한 개체에 대한 모델을 구현하려면 각 개체를 나타내는 WMI 클래스가 포함된 MOF 파일을 만듭니다. WMI 클래스를 정의하는 MOF 파일을 만드는 방법에 관한 자세한 내용은 MOF(관리 개체 형식) 클래스 디자인을 참조하세요. COM API를 사용하여 클래스와 메서드를 만들 수 있지만 공급자 및 해당 클래스의 등록은 일반적으로 MOF 파일에 포함됩니다. 자세한 내용은 WMI 공급자 개발을 참조하세요.

참고

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

 

MOF 파일을 만든 후 Mofcomp.exe 도구를 사용하여 컴파일합니다. 이것은 MOF 파일의 오류를 알리고 MOF 파일에 정의된 WMI 클래스를 WMI 리포지토리 에 추가하여 공급자가 클래스를 사용할 수 있도록 합니다.

구현할 공급자 유형 결정

WMI는 제공된 정보의 특성과 공급자가 지원하는 작업을 결정하는 특정 수의 공급자 유형을 지원합니다.

공급자 유형은 다음과 같습니다.

대부분의 공급자는 인스턴스 공급자 및 메서드 공급자입니다. 인스턴스 공급자는 가장 일반적인 공급자이며 지정된 클래스의 인스턴스를 제공합니다. 메서드 공급자는 하나 이상의 클래스의 메서드를 구현합니다. 공급자 유형에 관한 자세한 내용은 WMI 공급자 개발을 참조하세요.

공급자에 대한 호스팅(구현) 모델 결정

WMI 공급자는 COM 개체로 구현된 이진 파일입니다. 즉, 각 공급자에는 특정 프로세스 및 보안 컨텍스트 내에서 실행할 수 있는 DLL 파일이 있습니다. 이는 WMI에서 호스팅 모델이라고 하는 것입니다. WMI에는 공급자를 호스트하는 다양한 방법이 있지만 가장 일반적인 방법은 NetworkServiceHost 보안 컨텍스트에서 결합된 공급자 모델(WMI 프로세스에서 실행)을 사용하는 것입니다. WMI 공급자는 결합 또는 분리로 분류될 수 있습니다.

결합 또는 분리 공급자라는 용어는 WMI에서 제공한 WMI WMIPRVSE.EXE 프로세스와 관련하여 공급자가 실행 중인 호스트 프로세스를 결정합니다. 공급자가 노출하는 관리 데이터와 공급자가 사용하는 API 또는 애플리케이션을 시스템에서 항상 사용할 수 있는지 여부를 확인하는 것이 가장 좋습니다. 공급자가 사용하는 API 또는 애플리케이션을 항상 사용할 수 있는 경우(시스템에서 실행) 이 공급자는 결합된 공급자여야 하며 아닌 경우에는 분리 공급자여야 합니다. 호스팅 모델에 관한 자세한 내용은 공급자 호스팅 및 보안을 참조하세요.

결합된 공급자를 만드는 방법에 관한 자세한 내용은 공급자를 작성하여 WMI에 데이터 제공을 참조하고 애플리케이션에서 분리된 공급자를 통합하는 방법은 애플리케이션에서 공급자 통합을 참조하세요.

결합된 공급자는 in-process(in-proc) 또는 out-of-process(out-of-proc)로 설명할 수 있습니다. 결합된 공급자가 in-proc 공급자인 경우 공유 WMIPRVSE.EXE WMI 호스팅 프로세스에서 실행되며 COM in-proc 서버(.dll)로 구현됩니다. 공급자가 out-of-proc 공급자인 경우 클라이언트 또는 이벤트의 요청에 따라 WMI에서 시작되지만 분리된 프로세스로 실행되고 실행 파일(.exe)으로 구현됩니다.

공급자 구현

공급자는 다음과 같은 방법으로 구현할 수 있습니다.

  • Visual Studio에서 ATL 마법사 사용

    ATL 마법사는 결합된 공급자를 구현하는 공급자 코드를 생성합니다. ATL 마법사를 사용할 때 in-proc(.dll) 또는 out-of-proc(.exe) 공급자 런타임 모델을 만들도록 지정할 수 있습니다.

  • 공급자를 포함할 COM 개체 정의

    공급자 코드는 C++로 작성됩니다. 자세한 내용은 공급자를 작성하여 WMI에 데이터 제공을 참조하세요.

  • .NET Framework의 Microsoft.Management.Infrastructure 네임스페이스에서 클래스를 사용하여 관리 코드를 사용해 공급자를 만듭니다. (System.Management.Instrumentation 네임스페이스는 더 이상 지원되지 않습니다.)

    이 프로세스는 분리된 공급자를 만듭니다.

WMI 및 시스템에 공급자 등록

소비자의 공급자를 사용하기 전에 WMI 시스템 및 Windows COM 하위 시스템에 등록해야 합니다.

MOF 파일에는 동일한 클래스에 대해 여러 유형의 공급자가 포함될 수 있습니다. 예를 들어, 인스턴스 또는 메서드 공급자와 같은 공급자 이름이 등록됩니다. 자세한 내용은 공급자 등록을 참조하세요.

공급자 테스트

공급자 코드가 등록되면 서로 다른 소비자(예: 스크립트, .NET 관리 코드 및 C++ 소비자)의 공급자를 사용하여 공급자를 올바르게 테스트하는 것이 중요합니다.

다음 작업을 수행하여 공급자를 테스트합니다.

  • MSFT_WmiProvider_OperationEvent 이벤트 알림을 추적하여 공급자가 제대로 로드되는지 확인합니다. 이러한 이벤트는 공급자 로드 실패에 대해 알려줍니다. 도움이 될 수 있는 기타 문제 해결 클래스는 Win32_ProcessStartTraceWin32_ProcessStopTrace다. 공급자 문제 해결에 관한 자세한 내용은 공급자 디버깅공급자 구성 및 클래스 문제 해결을 참조하세요.
  • 공급자가 인스턴스 또는 메서드 공급자인 경우 코드 논리를 따르는 데 혼동이 없도록 각 공급자 기능을 하나씩 테스트해야 합니다.
  • 인스턴스 공급자의 경우 공급자의 모든 인터페이스(열거형, 가져오기, 배치 및 삭제)를 호출하는 클라이언트 애플리케이션 또는 스크립트를 만듭니다. 공급자가 아무것도 구현하지 않더라도 "지원되지 않음" 메시지를 반환합니다. WMI 반환 코드에 반환 값이 이미 정의되어 있을 수 있습니다.
  • 원하는 보안 컨텍스트가 계획대로 작동하는지 확인하려면 비관리자 보안 컨텍스트에서 공급자 지원 작업을 호출합니다. 이 공급자는 가장을 지원해야 합니다. 올바른 보안 자격 증명이 없는 사용자가 데이터를 업데이트하거나 메서드를 실행하는 작업을 수행하려는 경우 공급자는 적절한 오류 메시지와 함께 액세스를 거부해야 합니다.
  • 공급자 보안에 관한 자세한 내용은 공급자 보안을 참조하세요.

WMI 공급자 개발

공급자 호스팅 및 보안

공급자를 작성하여 WMI에 데이터 제공

션에 공급자 통합

공급자 등록

WMI 클라이언트 애플리케이션 문제 해결

공급자 보안

64비트 플랫폼에서 데이터 가져오기 및 제공