IRP_MN_QUERY_RESOURCE_REQUIREMENTS

PnP 관리자는 이 IRP를 사용하여 디바이스의 리소스 요구 사항 목록을 가져옵니다.

버스 드라이버는 하드웨어 리소스가 필요한 자식 디바이스에 대해 이 요청을 처리해야 합니다. 버스 필터 드라이버는 이 요청을 처리할 수 있습니다. 함수 및 필터 드라이버는 이 IRP를 처리하지 않습니다.

0x0B

주 코드

IRP_MJ_PNP

보낸 경우

PnP 관리자는 디바이스가 열거될 때, 디바이스에 리소스를 할당하기 전에, 드라이버가 디바이스의 리소스 요구 사항이 변경되었다고 보고할 때 이 IRP를 보냅니다.

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

입력 매개 변수

None

출력 매개 변수

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

I/O 상태 블록

이 IRP를 처리하는 드라이버는 Irp-IoStatus.Status>를 STATUS_SUCCESS 설정하거나 적절한 오류 상태 설정합니다.

성공하면 드라이버는 Irp-IoStatus.Information>를 요청된 정보가 포함된 IO_RESOURCE_REQUIREMENTS_LIST 대한 포인터로 설정합니다. 오류 발생 시 드라이버는 Irp-IoStatus.Information>를 0으로 설정합니다.

작업

버스 드라이버가 이 IRP에 대한 응답으로 리소스 요구 사항 목록을 반환하는 경우 페이징된 메모리에서 IO_RESOURCE_REQUIREMENTS_LIST 할당합니다. PnP 관리자는 더 이상 필요하지 않은 경우 버퍼를 해제합니다.

디바이스에 하드웨어 리소스가 필요하지 않은 경우 디바이스의 버스 드라이버는 Irp-IoStatus.Status 또는 Irp-IoStatus.Information>를 수정하지 않고 IRP>(IoCompleteRequest)를 완료합니다.

버스 필터 드라이버가 이 IRP를 처리하는 경우 버스 드라이버에서 만든 리소스 요구 사항 목록을 수정합니다. 버스 필터 드라이버는 IRP에서 디바이스 스택을 백업하는 방법의 목록을 수정합니다. 버스 필터 드라이버는 리소스 요구 사항 목록의 리소스 순서를 유지해야 하며 처리하지 않는 리소스 태그를 변경해서는 안 됩니다. 버스 필터 드라이버가 리소스 요구 사항 목록의 크기를 변경하는 경우 드라이버는 페이징된 메모리에서 새 구조를 할당하고 이전 구조를 해제해야 합니다. 버스 필터 드라이버가 목록에 새 리소스 요구 사항을 추가하고 리소스가 디바이스에 할당된 경우 드라이버는 버스 드라이버에 전달되지 않도록 IRP_MN_START_DEVICE IRP에서 새 리소스를 필터링해야 합니다.

함수 및 비버스 필터 드라이버는 이 IRP를 처리하지 않습니다. Irp-IoStatus>를 변경하지 않고 다음 하위 드라이버에 전달합니다.

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

이 IRP 보내기

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

요구 사항

헤더

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

추가 정보

IO_RESOURCE_REQUIREMENTS_LIST