다음을 통해 공유


IRP_MN_QUERY_BUS_INFORMATION

PnP 관리자는 이 IRP를 사용하여 디바이스의 부모 버스 유형 및 instance 번호를 요청합니다.

버스 드라이버는 PDO(자식 디바이스)에 대해 이 요청을 처리해야 합니다. 함수 및 필터 드라이버는 이 IRP를 처리하지 않습니다.

0x15

주 코드

IRP_MJ_PNP

보낸 경우

PnP 관리자는 디바이스가 열거될 때 이 IRP를 보냅니다.

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

입력 매개 변수

None

출력 매개 변수

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

I/O 상태 블록

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

성공하면 버스 드라이버는 Irp-IoStatus.Information>를 완료된 PNP_BUS_INFORMATION 구조체에 대한 포인터로 설정합니다. 자세한 내용은 "작업" 섹션을 참조하세요. 오류 발생 시 버스 드라이버는 Irp-IoStatus.Information>를 0으로 설정합니다.

함수 및 필터 드라이버는 이 IRP를 처리하지 않습니다.

작업

이 IRP에 대한 응답으로 반환된 정보는 버스의 디바이스에 대한 함수 및 필터 드라이버에서 사용할 수 있습니다. 함수 및 필터 드라이버는 IoGetDeviceProperty 를 호출하여 DevicePropertyBusTypeGuid, DevicePropertyLegacyBusType 또는 DevicePropertyBusNumber를 요청할 수 있습니다. 둘 이상의 버스에서 디바이스를 지원하는 함수 및 필터 드라이버는 이 정보를 사용하여 특정 디바이스가 상주하는 버스를 확인할 수 있습니다.

버스 드라이버는 이 IRP에 대한 응답으로 정보를 반환하는 경우 페이징된 메모리에서 PNP_BUS_INFORMATION 구조를 할당합니다. PnP 관리자는 더 이상 필요하지 않은 구조체를 해제합니다.

PNP_BUS_INFORMATION 구조체의 형식은 다음과 같습니다.

typedef struct _PNP_BUS_INFORMATION {
    GUID BusTypeGuid;
    INTERFACE_TYPE LegacyBusType;
    ULONG BusNumber;
} PNP_BUS_INFORMATION, *PPNP_BUS_INFORMATION;

구조체의 멤버는 다음과 같이 정의됩니다.

BusTypeGuid
버스 드라이버는 디바이스가 있는 버스 유형에 대한 GUID로 BusTypeGuid 를 설정합니다. 표준 버스 유형의 GUID는 Wdmguid.h에 나열됩니다. 드라이버 작성기는 Uuidgen을 사용하여 다른 버스 유형에 대한 GUID를 생성해야 합니다.

LegacyBusType
PnP 버스 드라이버는 LegacyBusType 을 부모 버스의 INTERFACE_TYPE 설정합니다. 인터페이스 형식은 Wdm.h에 정의되어 있습니다. 일부 버스에는 PCMCIABus, PCIBus 또는 PNPISABus와 같은 특정 INTERFACE_TYPE 있습니다. 다른 버스, 특히 USB와 같은 최신 버스의 경우 버스 드라이버는 이 멤버를 PNPBus로 설정합니다.

LegacyBusType은 디바이스와 통신하는 데 사용되는 인터페이스를 지정합니다. 이는 부모 버스의 유형에 해당하거나 일치하지 않을 수 있습니다. 예를 들어 PCI CardBus 컨트롤러에 연결된 CardBus 카드 대한 인터페이스는 PCIBus입니다. 그러나 PCI CardBus 컨트롤러의 PCMCIA 카드 대한 인터페이스는 PCMCIABus입니다.

BusNumber
버스 드라이버는 BusNumber 를 컴퓨터에서 동일한 유형의 다른 버스와 구별하는 숫자로 설정합니다. 버스 번호 매기기 체계는 버스에 따라 다릅니다. 버스 번호는 가상일 수 있지만 IoReportResourceUsage와 같은 레거시 인터페이스에서 사용하는 번호 매기기와 일치해야 합니다.

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

이 IRP 보내기

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

IoGetDeviceProperty를 호출하여 디바이스가 연결된 버스에 대한 정보를 가져옵니다.

요구 사항

헤더

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

추가 정보

IoGetDeviceProperty