KMDF 드라이버용 WMI 소개

[KMDF에만 적용]

Kernel-Mode Driver Framework는 WMI( Windows Management Instrumentation )에 정보를 제공하는 드라이버를 지원합니다. 이러한 드라이버는 WMI 클라이언트에 데이터를 제공하기 때문에 WMI 데이터 공급자 라고 하며, WMI에서 정보를 수신하도록 등록된 애플리케이션입니다.

WMI 데이터 공급자는 다음 중 하나 이상을 나타낼 수 있는 WMI 데이터 블록을 지원합니다.

  • 드라이버가 WMI 클라이언트로 보내거나 받는 디바이스별 데이터를 포함하는 데이터 항목입니다.

  • 드라이버가 WMI 클라이언트를 대신하여 실행하는 메서드(함수)

  • 드라이버가 디바이스별 이벤트에 대한 알림을 수신하도록 등록된 WMI 클라이언트에 보내는 이벤트입니다.

WMI 데이터 블록은 .mof 파일에서 WMI 클래스 로 지정됩니다. 각 WMI 데이터 블록은 GUID로 식별됩니다.

모든 드라이버는 WMI가 디바이스 클래스에 대해 정의하는 모든 표준 WMI 데이터 블록을 지원해야 합니다. 이러한 WMI 데이터 블록은 Wmicore.mof에 정의되어 있습니다.

드라이버는 .mof 파일에서 정의하는 WMI 데이터 블록을 지원할 수도 있습니다. 사용자 지정된 WMI 데이터 블록을 정의하고 게시하는 방법을 알아보려면 다음 섹션을 참조하세요.

프레임워크 WMI 개체 및 콜백 함수

프레임워크는 드라이버가 WMI 데이터 공급자를 구현하는 데 사용할 수 있는 두 개의 개체를 정의합니다. WMI 공급자 개체는 드라이버가 제공하는 WMI 데이터 블록에 대한 스키마를 나타냅니다. WMI instance 개체는 특정 공급자와 연결된 데이터 블록의 instance 나타냅니다. 드라이버는 이러한 두 개체가 정의하는 다음 이벤트 콜백 함수를 구현하여 WMI 클라이언트와 통신합니다.

EvtWmiProviderFunctionControl
WMI 데이터 수집 및 WMI 이벤트 전송에 대한 드라이버 지원을 사용하거나 사용하지 않도록 설정합니다.

EvtWmiInstanceQueryInstance
WMI 공급자의 instance 데이터를 WMI 클라이언트에 전달합니다.

EvtWmiInstanceSetInstanceEvtWmiInstanceSetItem
드라이버의 데이터 블록에 있는 정보를 클라이언트에서 제공하는 값으로 설정합니다.

EvtWmiInstanceExecuteMethod
클라이언트의 요청에 따라 드라이버 제공 메서드를 실행합니다.

WMI를 구현하는 샘플 드라이버

FIREFLY, PCIDRV 및 Toaster 샘플 드라이버는 WMI 데이터 공급자입니다.