EVT_WDF_IO_ALLOCATE_RESOURCES_FOR_RESERVED_REQUEST Rückruffunktion (wdfio.h)
[Gilt nur für KMDF]
Die Rückruffunktion EvtIoAllocateResourcesForReservedRequest eines Treibers weist anforderungsspezifische Ressourcen zu, die der Treiber für die zukünftige Verarbeitung einer E/A-Anforderung verwenden kann. Das Framework weist das angegebene Anforderungsobjekt für die zukünftige Verwendung in Situationen mit wenig Arbeitsspeicher vorab zu.
Syntax
EVT_WDF_IO_ALLOCATE_RESOURCES_FOR_RESERVED_REQUEST EvtWdfIoAllocateResourcesForReservedRequest;
NTSTATUS EvtWdfIoAllocateResourcesForReservedRequest(
[in] WDFQUEUE Queue,
[in] WDFREQUEST Request
)
{...}
Parameter
[in] Queue
Ein Handle für ein E/A-Warteschlangenobjekt.
[in] Request
Ein Handle für ein Anforderungsobjekt, das das Framework für die Verwendung in zukünftigen Situationen mit wenig Arbeitsspeicher erstellt hat.
Rückgabewert
Die Rückruffunktion EvtIoAllocateResourcesForReservedRequest muss STATUS_SUCCESS oder einen anderen status Wert zurückgeben, für den NT_SUCCESS(status) true ist, wenn die Funktion keine Fehler aufweist. Andernfalls muss diese Funktion einen status Wert zurückgeben, für den NT_SUCCESS(status) false entspricht.
Hinweise
Ein Treiber kann eine EvtIoAllocateResourcesForReservedRequest-Rückruffunktion registrieren, wenn er WdfIoQueueAssignForwardProgressPolicy aufruft.
Wenn Ihr Treiber eine EvtIoAllocateResourcesForReservedRequest-Rückruffunktion registriert, ruft das Framework die Funktion sofort auf, nachdem es ein Anforderungsobjekt erstellt hat, das es für Situationen mit wenig Arbeitsspeicher reserviert.
Die Rückruffunktion kann Ressourcen zuordnen, die Ihr Treiber benötigt, um eine Anforderung später zu verarbeiten, wenn das Framework die reservierte Anforderung aufgrund einer Situation mit wenig Arbeitsspeicher verwendet.
Um Arbeitsspeicher für anforderungsspezifische Ressourcen zuzuweisen, ruft eine EvtIoAllocateResourcesForReservedRequest-Rückruffunktionmöglicherweise WdfObjectAllocateContext auf, wobei das Vom Request-Parameter angegebene Anforderungsobjekthandle angegeben wird.
Alternativ oder zusätzlich kann Ihr Treiber WdfDeviceInitSetRequestAttributes aufrufen, bevor WdfDeviceCreate aufgerufen wird. Daher weist das Framework jedem reservierten Anforderungsobjekt Kontextbereich zu, wenn es das Objekt erstellt.
Wenn Ihr Treiber den Objektkontextbereich für reservierte Anforderungsobjekte zuweist, muss der Treiber den Kontextraum neu initialisieren, wenn er eine E/A-Anforderung abschließt, die ein reserviertes Anforderungsobjekt verwendet. Das Framework initialisiert den Kontextbereich reservierter Anforderungsobjekte nach der Verwendung nicht erneut.
Wenn Ihr Treiber WdfDeviceInitSetRequestAttributesaufruft und eine EvtCleanupCallback - oder EvtDestroyCallback-Rückruffunktion für seine Anforderungsobjekte angibt, ruft das Framework diese Rückruffunktionen nur für seine reservierten Anforderungsobjekte auf, wenn es die zugeordneten E/A-Warteschlangen löscht.
Die Anforderungshandler des Treibers können WdfRequestIsReserved aufrufen, um zu bestimmen, ob reservierte Anforderungsobjekte verwendet werden.
Weitere Informationen zur Verwendung des Objektkontextraums finden Sie unter Framework Object Context Space.
Wenn die Rückruffunktion Ressourcen erfolgreich zuordnet, sollte sie STATUS_SUCCESS zurückgeben.
Wenn ein Fehler bei der Ressourcenzuordnung auftritt, z. B. bei einem geringen Arbeitsspeicher, muss die Rückruffunktion einen Fehler status Wert zurückgeben. In diesem Fall beendet das Framework die Zuweisung reservierter Anforderungsobjekte und verwendet den Rückgabewert der Rückruffunktion als Rückgabewert für WdfIoQueueAssignForwardProgressPolicy.
Weitere Informationen zur Rückruffunktion EvtIoAllocateResourcesForReservedRequest finden Sie unter Garantieren des Vorwärtsfortschritts von E/A-Vorgängen.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | Universell |
KMDF-Mindestversion | 1.9 |
Kopfzeile | wdfio.h (einschließen von Wdf.h) |
IRQL | <=DISPATCH_LEVEL |