다음을 통해 공유


IRP_MN_QUERY_PNP_DEVICE_STATE

함수, 필터 및 버스 드라이버는 이 요청을 처리할 수 있습니다.

Value47

0x14

주 코드

IRP_MJ_PNP

보낸 경우

PnP 관리자는 디바이스가 처음 시작될 때 전송된 IRP_MN_START_DEVICE 요청에서 디바이스 반환 성공에 대한 드라이버 후 이 IRP를 보냅니다. 이 IRP는 리소스 리밸런싱을 중지한 후 시작 시 전송되지 않습니다. 또한 PnP 관리자는 디바이스용 드라이버가 IoInvalidateDeviceState를 호출할 때 이 IRP를 보냅니다.

PnP 관리자는 임의 스레드의 컨텍스트에서 IRQL PASSIVE_LEVEL 이 IRP를 보냅니다.

입력 매개 변수

None

출력 매개 변수

I/O 상태 블록에 반환됩니다.

I/O 상태 블록

드라이버는 Irp-IoStatus.Status>를 STATUS_SUCCESS 또는 STATUS_UNSUCCESSFUL 같은 적절한 오류 상태 설정합니다.

성공하면 드라이버는 Irp-IoStatus.Information>PNP_DEVICE_STATE 비트 마스크로 설정합니다.

함수 또는 필터 드라이버가 이 IRP를 처리하지 않는 경우 IoSkipCurrentIrpStackLocation을 호출하고, IoCompletion 루틴을 설정하지 않으며, IRP를 다음 드라이버로 전달합니다. 이러한 드라이버는 Irp-IoStatus>를 수정해서는 안 되며 IRP를 완료해서는 안됩니다.

버스 드라이버가 이 IRP를 처리하지 않으면 Irp-IoStatus.Status>를 있는 그대로 두고 IRP를 완료합니다.

작업

이 IRP는 먼저 디바이스 스택의 맨 위에 있는 드라이버가 처리한 다음 스택의 각 하위 드라이버에 의해 처리됩니다.

드라이버가 디바이스의 PnP 상태에 대한 정보가 있는 경우 이 IRP를 처리합니다. 드라이버는 PNP_DEVICE_STATE 비트 마스크에서 플래그를 설정하거나 지울 수 있습니다. 다른 드라이버가 Irp-IoStatus.Information>에서 PNP_DEVICE_STATE 설정한 경우 드라이버는 전체 구조를 덮어쓰지 않고 해당 비트 마스크의 플래그를 수정하는 데 주의해야 합니다.

플러그 앤 플레이 사소한 IRP를 처리하기 위한 일반 규칙은 플러그 앤 플레이 참조하세요.

이 IRP 보내기

시스템에서 사용하도록 예약되었습니다. 드라이버는 이 IRP를 보내지 않아야 합니다.

요구 사항

헤더

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

추가 정보

IoInvalidateDeviceState

PNP_DEVICE_STATE