IRP_MN_QUERY_RESOURCE_REQUIREMENTS
Der PnP-Manager verwendet diese IRP, um die Liste der Ressourcenanforderungen eines Geräts abzurufen.
Bustreiber müssen diese Anforderung für ihre untergeordneten Geräte verarbeiten, die Hardwareressourcen benötigen. Busfiltertreiber können diese Anforderung verarbeiten. Funktions- und Filtertreiber verarbeiten diese IRP nicht.
Wert
0x0B
Hauptcode
Sendebedingungen
Der PnP-Manager sendet diese IRP, wenn ein Gerät aufgelistet wird, bevor Ressourcen einem Gerät zugewiesen werden, und wenn ein Treiber meldet, dass sich die Ressourcenanforderungen seines Geräts geändert haben.
Der PnP-Manager sendet diese IRP bei IRQL PASSIVE_LEVEL in einem beliebigen Threadkontext.
Eingabeparameter
Keine
Ausgabeparameter
Wird im E/A-status-Block zurückgegeben.
E/A-Statusblock
Ein Treiber, der diese IRP verarbeitet, legt Irp-IoStatus.Status> auf STATUS_SUCCESS oder einen entsprechenden Fehler status fest.
Bei Erfolg legt ein Treiber Irp-IoStatus.Information> auf einen Zeiger auf einen IO_RESOURCE_REQUIREMENTS_LIST fest, der die angeforderten Informationen enthält. Bei einem Fehler legt der Treiber Irp-IoStatus.Information> auf Null fest.
Vorgang
Wenn ein Bustreiber als Reaktion auf diese IRP eine Ressourcenanforderungsliste zurückgibt, weist er eine IO_RESOURCE_REQUIREMENTS_LIST aus dem ausgelagerten Speicher zu. Der PnP-Manager gibt den Puffer frei, wenn er nicht mehr benötigt wird.
Wenn ein Gerät keine Hardwareressourcen benötigt, schließt der Bustreiber des Geräts die IRP (IoCompleteRequest) ab, ohne Irp-IoStatus.Status> oder Irp-IoStatus.Information> zu ändern.
Wenn ein Busfiltertreiber diese IRP verarbeitet, ändert er die vom Bustreiber erstellte Liste der Ressourcenanforderungen. Ein Busfiltertreiber ändert die Liste auf dem IRP-Weg zum Sichern des Gerätestapels. Ein Busfiltertreiber muss die Reihenfolge der Ressourcen in der Ressourcenanforderungsliste beibehalten und darf keine Ressourcentags ändern, die er nicht verarbeitet. Wenn ein Busfiltertreiber die Größe der Ressourcenbedarfsliste ändert, muss der Treiber eine neue Struktur aus dem Auslagerungsspeicher zuordnen und die vorherige Struktur freigeben. Wenn ein Busfiltertreiber der Liste eine neue Ressourcenanforderung hinzufügt und die Ressource dem Gerät zugewiesen ist, muss der Treiber die neue Ressource aus dem IRP_MN_START_DEVICE IRP herausfiltern, damit sie nicht an den Bustreiber übergeben wird.
Funktions- und Nicht-Bus-Filtertreiber verarbeiten diese IRP nicht. Sie übergeben es an den nächstniedrigen Treiber ohne Änderungen an Irp-IoStatus>.
Die allgemeinen Regeln für die Behandlung Plug & Play untergeordneten IRPs finden Sie unter Plug & Play.
Senden dieses IRP
Ist für das System reserviert. Treiber dürfen diese IRP nicht senden.
Anforderungen
Header |
Wdm.h (einschließlich Wdm.h, Ntddk.h oder Ntifs.h) |