WMI 요청 처리
모든 드라이버는 WMI 요청을 처리하려면 DispatchSystemControl 루틴에 대한 디스패치 테이블 진입점을 설정해야 합니다. 드라이버가 WMI 데이터 공급자로 등록하는 경우 모든 WMI 요청을 처리해야 합니다. 그렇지 않으면 드라이버는 모든 WMI 요청을 다음 하위 드라이버로 전달해야 합니다.
모든 WMI IRP에는 IRP_MJ_SYSTEM_CONTROL 주 코드와 다음 부 코드 중 하나가 있습니다.
IRP_MN_REGINFO, IRP_MN_REGINFO_EX — 드라이버가 IoWMIRegistrationControl을 호출한 후 드라이버의 등록 정보를 쿼리하거나 업데이트합니다.
IRP_MN_QUERY_ALL_DATA, IRP_MN_QUERY_SINGLE_INSTANCE — 모든 인스턴스 또는 지정된 데이터 블록의 단일 instance 대한 쿼리입니다.
IRP_MN_CHANGE_SINGLE_ITEM, IRP_MN_CHANGE_SINGLE_INSTANCE — 드라이버에 데이터 블록의 instance 있는 단일 항목 또는 여러 항목을 변경하도록 요청합니다.
IRP_MN_ENABLE_COLLECTION, IRP_MN_DISABLE_COLLECTION — 드라이버가 수집 비용이 많이 드는 것으로 등록된 블록에 대한 데이터 누적을 시작하거나 해당 블록에 대한 데이터 누적을 중지하도록 드라이버에 요청합니다.
IRP_MN_ENABLE_EVENTS, IRP_MN_DISABLE_EVENTS — 이벤트가 활성화된 동안 이벤트가 발생하는 경우 드라이버에 지정된 이벤트의 알림 보내기를 시작하도록 요청하거나 이러한 이벤트에 대한 알림 보내기를 중지하도록 요청합니다.
IRP_MN_EXECUTE_METHOD - 드라이버에 데이터 블록과 연결된 메서드를 실행하도록 요청합니다.
WMI 커널 모드 구성 요소는 일반적으로 사용자 모드 데이터 소비자가 드라이버 디바이스에 대한 WMI 정보를 요청한 경우 드라이버가 WMI 데이터 공급자로 성공적으로 등록한 후 언제든지 WMI IRP를 보냅니다. 드라이버가 IoWMIRegistrationControl을 호출하여 WMI 데이터 공급자로 등록하는 경우 다음 방법 중 하나로 각 후속 WMI 요청을 처리해야 합니다.
커널 모드 WMI 라이브러리 루틴 WmiSystemControl을 호출합니다. 드라이버는 WmiSystemControl을 호출하여 동적 instance 이름을 사용하지 않는 블록과 단일 기본 이름 문자열 또는 PDO의 디바이스 instance ID에 대한 기본 정적 instance 이름과 관련된 요청을 처리할 수 있습니다. 자세한 내용은 WmiSystemControl을 호출하여 WMI IRP 처리를 참조하세요.
DispatchSystemControl 루틴에서 드라이버가 IoWMIRegistrationControl에 대한 호출에서 전달한 디바이스 개체에 대한 포인터로 태그가 지정된 이러한 요청을 처리하고 완료하고 다른 IRP_MJ_SYSTEM_CONTROL 요청을 다음 하위 드라이버로 전달합니다. 자세한 내용은 DispatchSystemControl 루틴에서 WMI IRP 처리를 참조하세요.
WMI 부 IRP 목록은 WMI 부 IRP를 참조하세요.