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.