플러그 앤 플레이 부 IRP
이 섹션에서는 드라이버로 전송되는 PnP IRP에 대해 설명합니다. 모든 PnP IRP에는 IRP_MJ_PNP 주 함수 코드와 특정 PnP 요청을 나타내는 부 함수 코드가 있습니다.
이 섹션에서는 개별 IRP에 대한 참조 정보를 제공합니다. IRP가 전송되는 순서에 대한 설명, DispatchPnP 루틴에서 IRP를 처리하는 방법에 대한 설명 및 PnP 개념 및 용어에 대한 일반적인 논의는 플러그 앤 플레이 참조하세요.
각 IRP 및 각 종류의 드라이버에 대해 드라이버는 IRP를 처리하는 데 필요하거나, 선택적으로 IRP를 처리할 수 있거나, IRP를 처리해서는 안 됩니다. 드라이버에서 처리할 IRP를 식별하려면 아래 표를 참조한 다음, 개별 IRP에 대한 자세한 내용은 참조 페이지를 참조하세요. IRP 참조 페이지에서 IRP는 테이블의 기능 순서와 사전순으로 나열됩니다.
IRP가 특정 드라이버의 테이블에서 "아니요"로 표시된 경우 해당 드라이버는 IRP를 처리해서는 안 됩니다. 드라이버는 IRP에 대한 참조 페이지에 설명된 대로 디바이스 스택의 다음 드라이버에 IRP를 전달해야 합니다.
PnP 관리자는 이러한 IRP를 보냅니다. PnP 드라이버는 이러한 IRP 중 일부를 보낼 수 있지만 이 섹션에서 언급된 IDP만 보낼 수 있습니다.
다음은 PnP IRP에 대한 부 함수 코드와 이를 처리하는 드라이버 형식입니다.
PnP IRP 부 함수 코드 | 값 | 비버스 디바이스에 대한 함수 또는 필터 드라이버 | 버스 디바이스용 함수 드라이버(버스 FDO의 경우) | 버스 드라이버 또는 버스 필터 드라이버(자식 PDO용) |
---|---|---|---|---|
IRP_MN_START_DEVICE | 0x00 | 필수 | 필수 | 필수 |
IRP_MN_QUERY_REMOVE_DEVICE | 0x01 | 필수 | 필수 | 필수 |
IRP_MN_REMOVE_DEVICE | 0x02 | 필수 | 필수 | 필수 |
IRP_MN_CANCEL_REMOVE_DEVICE | 0x03 | 필수 | 필수 | 필수 |
IRP_MN_STOP_DEVICE | 0x04 | 필수 | 필수 | 필수 |
IRP_MN_QUERY_STOP_DEVICE | 0x05 | 필수 | 필수 | 필수 |
IRP_MN_CANCEL_STOP_DEVICE | 0x06 | 필수 | 필수 | 필수 |
IRP_MN_QUERY_DEVICE_RELATIONS | 0x07 | |||
- BusRelations | x | 선택 사항(1) | 필수 | 아니요(2) |
- EjectionRelations | x | 아니요 | 예 | 선택 사항 |
- RemovalRelations | x | 선택 사항 | 선택 사항 | 아니요 |
- TargetDeviceRelation | x | 예 | 예 | 필수 |
IRP_MN_QUERY_INTERFACE | 0x08 | 선택 사항 | 선택 사항 | 필수(1) |
IRP_MN_QUERY_CAPABILITIES | 0x09 | 선택 사항 | 선택 사항 또는 필수 | |
IRP_MN_QUERY_RESOURCES | 0x0A | 예 | 아니요 | 필수(1) |
IRP_MN_QUERY_RESOURCE_REQUIREMENTS | 0x0B | 예 | 아니요 | 필수(1) |
IRP_MN_QUERY_DEVICE_TEXT | 0x0C | 아니요 | 아니요 | 필수(1) |
IRP_MN_FILTER_RESOURCE_REQUIREMENTS | 0x0D | 선택 사항(1) | 선택 사항(1) | 아니요 |
IRP_MN_READ_CONFIG | 0x0F | 아니요 | 예 | 필수(1) |
IRP_MN_WRITE_CONFIG | 0x10 | 아니요 | 아니요 | 필수(1) |
IRP_MN_EJECT | 0x11 | 아니요 | 예 | 필수 |
IRP_MN_SET_LOCK | 0x12 | 예 | 아니요 | 필수(1) |
IRP_MN_QUERY_ID | 0x13 | |||
- BusQueryDeviceID | x | 아니요 | 예 | 필수 |
- BusQueryHardwareIDs | x | 아니요 | 예 | 선택 사항 |
- BusQueryCompatibleIDs | x | 아니요 | 아니요 또는 선택 사항 | |
- BusQueryInstanceID | x | 아니요 | 예 | 선택 사항 |
- BusQueryContainerID | x | 아니요 | 예 | 필수(3) |
IRP_MN_QUERY_PNP_DEVICE_STATE | 0x14 | 선택 사항 | 선택 사항 | 선택 사항 |
IRP_MN_QUERY_BUS_INFORMATION | 0x15 | 예 | 예 | 필수(1) |
IRP_MN_DEVICE_USAGE_NOTIFICATION | 0x16 | 필수(1) | 필수(1) | 필수(1) |
IRP_MN_SURPRISE_REMOVAL | 0x17 | 필수 | 필수 | 필수 |
IRP_MN_DEVICE_ENUMERATED | 0x19 | 예 | 예 | 필수(1) |
(1) 특정 상황에서 필수 또는 선택 사항입니다. 자세한 내용은 IRP에 대한 참조 페이지를 참조하세요.
(2) 버스 필터 드라이버는 BusRelations에 대한 쿼리를 처리할 수 있습니다.
(3) Windows 7 이상 버전의 Windows에서 지원됩니다.