WMI 라이브러리를 사용하여 블록 등록

드라이버는 WMI 라이브러리를 사용하여 동적 instance 이름을 사용하지 않거나 PDO 또는 드라이버 정의 기본 이름 문자열을 기반으로 정적 instance 이름을 사용하는 블록을 등록하는 경우 IRP_MN_REGINFO 및 IRP_MN_REGINFO_EX 요청을 처리할 수 있습니다. 이 경우 드라이버는 다음과 같습니다.

  1. 드라이버의 디바이스 개체에 대한 포인터, WMILIB_CONTEXT 구조체에 대한 포인터 및 IRP에 대한 포인터를 사용하여 WmiSystemControl을 호출합니다.

    WMILIB_CONTEXT 구조체는 등록할 블록 수(GuidCount)를 나타내며 GUID, 인스턴스 수 및 해당 블록과 관련된 등록 플래그를 지정하는 WMIGUIDREGINFO 구조체(GuidList) 목록을 가리킵니다. 또한 드라이버의 필수 및 선택적 DpWmiXxx 콜백 루틴에 대한 진입점을 정의합니다.

  2. WMI가 드라이버의 DpWmiQueryReginfo 루틴을 호출할 때 드라이버는 드라이버의 레지스트리 경로, 해당 MOF 리소스 이름, 모든 블록과 관련된 등록 플래그 및 WMI가 드라이버의 데이터 블록 인스턴스 이름을 지정하는 데 사용하는 정보를 지정합니다. 이 정보는 드라이버의 AddDevice 루틴에 전달된 물리적 디바이스 개체에 대한 포인터이거나 정적 instance 이름을 기반으로 하는 문자열일 수 있습니다.

드라이버는 WmiSystemControl을 호출하기 전에 WMILIB_CONTEXT 구조에서 DpWmiXxx 콜백 루틴의 진입점을 초기화해야 하지만 WMI가 드라이버의 DpWmiQueryReginfo 루틴을 호출할 때까지 WMILIB_CONTEXT 구조에서 GuidCountGuidList의 초기화를 연기할 수 있습니다.