다음을 통해 공유


IRP_MN_DISABLE_COLLECTION

수집 비용이 많이 드는 데이터 블록 중 하나 이상을 등록하는 모든 WMI 드라이버는 이 IRP를 처리해야 합니다. 드라이버는 WmiSystemControl 을 호출하거나 WMI 요청 처리에 설명된 대로 IRP 자체를 처리 하여 WMI IRP를 처리할 수 있습니다.

드라이버가 WmiSystemControl 을 호출하여 IRP_MN_DISABLE_COLLECTION 요청을 처리하는 경우 WMI는 해당 드라이버의 DpWmiFunctionControl 루틴을 호출합니다.

주 코드

IRP_MJ_SYSTEM_CONTROL

보낸 경우

WMI는 드라이버가 수집 비용이 많이 들고 데이터 수집이 사용하도록 설정된 데이터 블록에 대한 데이터 누적을 중지하도록 드라이버에 요청하기 위해 이 IRP를 보냅니다.

WMI는 임의 스레드 컨텍스트에서 IRQL = PASSIVE_LEVEL 이 IRP를 보냅니다.

입력 매개 변수

Parameters.WMI.ProviderId 는 요청에 응답해야 하는 드라이버의 디바이스 개체를 가리킵니다. 이 포인터는 IRP에서 드라이버의 I/O 스택 위치에 있습니다.

Parameters.WMI.DataPath 는 데이터 누적을 중지해야 하는 데이터 블록을 식별하는 GUID를 가리킵니다.

출력 매개 변수

없음

I/O 상태 블록

드라이버가 WmiSystemControl을 호출하여 IRP를 처리하는 경우 WMI는 I/O 상태 블록에서 Irp-IoStatus.Status>Irp-IoStatus.Information>를 설정합니다.

그렇지 않으면 드라이버는 Irp-IoStatus.Status>를 STATUS_SUCCESS 또는 다음과 같은 적절한 오류 상태 설정합니다.

STATUS_WMI_GUID_NOT_FOUND

STATUS_INVALID_DEVICE_REQUEST

성공하면 드라이버는 Irp-IoStatus.Information>를 0으로 설정합니다.

작업

드라이버는 데이터 블록을 등록하거나 업데이트할 때 드라이버가 WMI에 전달하는 WMIREGGUID 또는 WMIGUIDREGINFO 구조의 Flags 멤버에서 WMIREG_FLAG_EXPENSIVE 설정하여 수집 비용이 많이 드는 데이터 블록을 등록합니다. 드라이버는 수집을 사용하도록 설정하는 명시적 요청을 받을 때까지 이러한 블록에 대한 데이터를 누적할 필요가 없습니다.

드라이버가 WmiSystemControl을 호출하여 WMI IRP를 처리하는 경우 해당 루틴은 드라이버의 DpWmiFunctionControl 루틴을 호출하거나 드라이버가 루틴을 정의하지 않으면 STATUS_SUCCESS 반환합니다.

드라이버가 IRP_MN_DISABLE_COLLECTION 요청 자체를 처리하는 경우 Parameters.WMI.ProviderId 가 드라이버가 IoWMIRegistrationControl에 전달한 포인터와 동일한 디바이스 개체를 가리키는 경우에만 처리해야 합니다. 그렇지 않으면 드라이버가 다음 하위 드라이버에 요청을 전달해야 합니다.

요청을 처리하기 전에 드라이버는 Parameters.WMI.DataPath 가 드라이버가 지원하는 GUID를 가리키는지 여부를 결정해야 합니다. 그렇지 않은 경우 드라이버는 IRP에 실패하고 STATUS_WMI_GUID_NOT_FOUND 반환해야 합니다. 데이터 블록이 유효하지만 WMIREG_FLAG_EXPENSIVE 등록되지 않은 경우 드라이버는 STATUS_SUCCESS 반환하고 추가 작업을 수행할 수 없습니다.

마지막 데이터 소비자가 해당 블록에 대한 컬렉션을 사용하지 않도록 설정할 때 WMI가 데이터 블록에 대한 단일 사용 안 함 요청을 보내기 때문에 드라이버에서 데이터 수집이 이미 비활성화되었는지 여부를 검사 필요가 없습니다. WMI는 활성화할 중간 요청 없이 다른 사용 안 함 요청을 보내지 않습니다.

요구 사항

헤더

Wdm.h(Wdm.h, Ntddk.h 또는 Ntifs.h 포함)

추가 정보

DpWmiFunctionControl

IoWMIRegistrationControl

IRP_MN_ENABLE_COLLECTION

WMILIB_CONTEXT

WMIREGGUID

WMIGUIDREGINFO

WmiSystemControl