Plug & Play Neben-IRPs

In diesem Abschnitt werden die PnP-IRPs beschrieben, die an Treiber gesendet werden. Alle PnP-IRPs verfügen über den Hauptfunktionscode IRP_MJ_PNP und einen Nebenfunktionscode, der die jeweilige PnP-Anforderung angibt.

Dieser Abschnitt enthält Referenzinformationen zu den einzelnen IRPs. Unter Plug & Play finden Sie eine Beschreibung der Reihenfolge, in der die IRPs gesendet werden, eine Diskussion über den Umgang mit IRPs in DispatchPnP-Routinen und eine allgemeine Erläuterung der PnP-Konzepte und -Terminologie.

Für jeden IRP und jede Art von Treiber ist entweder ein Treiber erforderlich, um das IRP zu verarbeiten, kann optional das IRP verarbeiten oder darf die IRP nicht verarbeiten. Lesen Sie die folgende Tabelle, um zu ermitteln, welche IRPs Ihr Treiber verarbeiten wird, und lesen Sie dann die Referenzseiten, um Informationen zu den einzelnen IRPs zu erhalten. Die IRPs werden in der Tabelle in funktionaler Reihenfolge und in alphabetischer Reihenfolge auf den IRP-Referenzseiten aufgeführt.

Wenn ein IRP in der Tabelle für einen bestimmten Treiber mit "Nein" gekennzeichnet ist, darf dieser Treiber die IRP nicht verarbeiten. Der Treiber muss das IRP an den nächsten Treiber im Gerätestapel übergeben, wie auf der Referenzseite für das IRP beschrieben.

Der PnP-Manager sendet diese IRPs. PnP-Treiber können einige dieser IRPs senden, aber nur die in diesem Abschnitt beschriebenen.

Im Folgenden finden Sie die Nebenfunktionscodes für PnP-IRPs und die Treibertypen, die sie behandeln:

PnP-IRP-Nebenfunktionscode Wert Funktions- oder Filtertreiber für nichtbusige Geräte Funktionstreiber für Busgerät (für Bus-FDO) Bustreiber oder Busfiltertreiber (für untergeordnete PDOs)
IRP_MN_START_DEVICE 0x00 Erforderlich Erforderlich Erforderlich
IRP_MN_QUERY_REMOVE_DEVICE 0x01 Erforderlich Erforderlich Erforderlich
IRP_MN_REMOVE_DEVICE 0x02 Erforderlich Erforderlich Erforderlich
IRP_MN_CANCEL_REMOVE_DEVICE 0x03 Erforderlich Erforderlich Erforderlich
IRP_MN_STOP_DEVICE 0x04 Erforderlich Erforderlich Erforderlich
IRP_MN_QUERY_STOP_DEVICE 0x05 Erforderlich Erforderlich Erforderlich
IRP_MN_CANCEL_STOP_DEVICE 0x06 Erforderlich Erforderlich Erforderlich
IRP_MN_QUERY_DEVICE_RELATIONS 0x07
- BusRelationen x Optional (1) Erforderlich Nein (2)
- EjectionRelations x Nein Nein Optional
- RemovalRelations x Optional Optional Nein
- TargetDeviceRelation x Nein No Erforderlich
IRP_MN_QUERY_INTERFACE 0x08 Optional Optional Erforderlich (1)
IRP_MN_QUERY_CAPABILITIES 0x09 Optional Optional oder Erforderlich
IRP_MN_QUERY_RESOURCES 0x0A Nein Nein Erforderlich (1)
IRP_MN_QUERY_RESOURCE_REQUIREMENTS 0x0B Nein Nein Erforderlich (1)
IRP_MN_QUERY_DEVICE_TEXT 0x0C Nein Nein Erforderlich (1)
IRP_MN_FILTER_RESOURCE_REQUIREMENTS 0x0D Optional (1) Optional (1) Nein
IRP_MN_READ_CONFIG 0x0F Nein Nein Erforderlich (1)
IRP_MN_WRITE_CONFIG 0x10 Nein Nein Erforderlich (1)
IRP_MN_EJECT 0x11 Nein No Erforderlich
IRP_MN_SET_LOCK 0x12 Nein Nein Erforderlich (1)
IRP_MN_QUERY_ID 0x13
- BusQueryDeviceID x Nein No Erforderlich
- BusQueryHardwareIDs x Nein Nein Optional
- BusQueryCompatibleIDs x Nein Nein oder Optional
- BusQueryInstanceID x Nein Nein Optional
- BusQueryContainerID x Nein Nein Erforderlich (3)
IRP_MN_QUERY_PNP_DEVICE_STATE 0x14 Optional Optional Optional
IRP_MN_QUERY_BUS_INFORMATION 0x15 Nein Nein Erforderlich (1)
IRP_MN_DEVICE_USAGE_NOTIFICATION 0x16 Erforderlich (1) Erforderlich (1) Erforderlich (1)
IRP_MN_SURPRISE_REMOVAL 0x17 Erforderlich Erforderlich Erforderlich
IRP_MN_DEVICE_ENUMERATED 0x19 Nein Nein Erforderlich (1)

(1) In bestimmten Situationen erforderlich oder optional. Weitere Informationen finden Sie auf der Referenzseite für die IRP.

(2) Busfiltertreiber können eine Abfrage für BusRelations verarbeiten.

(3) Wird in Windows 7 und höheren Versionen von Windows unterstützt.