다음을 통해 공유


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의 초기화를 연기할 수 있습니다.