Freigeben über


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

IRP_MJ_PNP

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)

Weitere Informationen

IO_RESOURCE_REQUIREMENTS_LIST