다음을 통해 공유


드라이버에서 WMI 지원 초기화

[KMDF에만 적용]

프레임워크 기반 드라이버인 WMI 데이터 블록을 지원하려면 다음을 수행합니다.

  • Wmicore.mof에 정의되지 않은 사용자 지정된 WMI 데이터 공급자의 MOF(관리 개체 형식) 리소스 이름을 등록합니다.

  • 하나 이상의 WMI instance 개체를 만들어 읽거나 쓸 수 있는 데이터 블록을 나타냅니다.

  • 필요에 따라 드라이버가 제공하는 WMI 데이터를 제공하기 위해 하나 이상의 이벤트 콜백 함수를 구현합니다.

  • WMI 클라이언트에서 사용할 수 있도록 각 WMI instance 개체를 등록합니다.

WMI 지원을 초기화하기 위해 KMDF 드라이버는 일반적으로 EvtDriverDeviceAdd 또는 EvtDeviceSelfManagedIoInit 콜백 내에서 다음 단계를 수행합니다.

  1. 사용자 지정된 WMI 데이터 공급자를 지원하는 MOF 파일을 제공하는 드라이버는 드라이버가 데이터 공급자를 나타내는 WMI 공급자 개체를 만들기 전에 WdfDeviceAssignMofResourceName 메서드를 호출하여 MOF 리소스 이름을 등록해야 합니다.

  2. WMI 공급자 구성 구조를 초기화하고 필요에 따라 WDFWMIPROVIDER(WMI 공급자 개체)를 만듭니다.

  3. WMI instance 구성 구조를 초기화하고 WMI instance 개체(WDFWMIINSTANCE)를 만듭니다.

프레임워크는 KMDF 드라이버가 첫 번째 WMI instance 만들 때 기본적으로 WMI 공급자를 만듭니다. 따라서 드라이버에 WMI 공급자가 하나만 필요한 경우 공급자 생성 메서드(WdfWmiProviderCreate)를 호출할 필요가 없습니다. 그러나 이 구조체는 프레임워크가 instance 만들 때 사용하는 공급자에 대한 정보를 제공하므로 드라이버가 공급자 구성 구조를 채워야 합니다.

드라이버가 지원하는 각 WMI 데이터 블록의 단일 instance 만드는 경우 드라이버는 WdfWmiInstanceCreate를 호출하여 WDF_WMI_PROVIDER_CONFIG 구조와 WDF_WMI_INSTANCE_CONFIG 구조를 모두 전달합니다. 이 단일 호출은 모두 단일 프레임워크 제공 WMI 공급자 개체를 구성하고 WMI instance 개체를 만듭니다.

드라이버가 WMI 데이터 블록의 여러 인스턴스를 만드는 경우 드라이버는 WdfWmiProviderCreateWdfWmiInstanceCreate를 모두 호출해야 합니다.

공급자 인스턴스 등록

WMI 클라이언트가 드라이버의 WMI 데이터 블록에 액세스하려면 먼저 드라이버가 해당 공급자 인스턴스를 시스템의 WMI 서비스에 등록해야 합니다. 드라이버는 다음 기술 중 하나를 사용하여 공급자 instance 등록할 수 있습니다.

  • 공급자 instance WDF_WMI_INSTANCE_CONFIG 구조체Register 멤버를 TRUE로 설정합니다.

    드라이버가 등록TRUE로 설정하면 프레임워크는 디바이스가 작동 중(D0) 상태로 처음 들어갈 때 instance 자동으로 등록합니다.

  • WdfWmiInstanceRegister 메서드를 호출합니다.

    드라이버가 WdfWmiInstanceCreate를 호출한 후 WdfWmiInstanceRegister를 호출하는 경우 프레임워크는 디바이스가 작동 중(D0) 상태인 후 instance 등록합니다.

프레임워크는 instance 디바이스가 제거될 때(그리고 EvtDeviceSelfManagedIoCleanup 이벤트 콜백 함수를 호출하기 전에) 각 공급자 instance 자동으로 등록을 취소합니다. 프레임워크가 드라이버의 콜백 함수를 호출하는 순서에 대한 자세한 내용은 PnP 및 전원 관리 시나리오를 참조하세요.

드라이버는 WdfWmiInstanceDeregister를 호출하여 언제든지 instance 등록을 취소할 수 있습니다.