EVT_WDF_IO_ALLOCATE_RESOURCES_FOR_RESERVED_REQUEST Rückruffunktion (wdfio.h)
[Gilt nur für KMDF]
Die EvtIoAllocateResourcesForReservedRequest Rückruffunktion weist anforderungsspezifische Ressourcen zu, die der Treiber für die zukünftige Verarbeitung einer E/A-Anforderung verwenden kann. Das Framework stellt das angegebene Anforderungsobjekt für die zukünftige Verwendung in Situationen mit geringem Arbeitsspeicher vor.
Syntax
EVT_WDF_IO_ALLOCATE_RESOURCES_FOR_RESERVED_REQUEST EvtWdfIoAllocateResourcesForReservedRequest;
NTSTATUS EvtWdfIoAllocateResourcesForReservedRequest(
[in] WDFQUEUE Queue,
[in] WDFREQUEST Request
)
{...}
Die Parameter
[in] Queue
Ein Handle zu einem E/A-Warteschlangenobjekt.
[in] Request
Ein Handle zu einem Anforderungsobjekt, das das Framework für die Verwendung in zukünftigen Situationen mit geringem Arbeitsspeicher erstellt hat.
Rückgabewert
Die EvtIoAllocateResourcesForReservedRequest Rückruffunktion muss STATUS_SUCCESS oder einen anderen Statuswert zurückgeben, für den NT_SUCCESS(Status) TRUE ist, wenn die Funktion keine Fehler aufweist. Andernfalls muss diese Funktion einen Statuswert zurückgeben, für den NT_SUCCESS(Status) FALSE-entspricht.
Bemerkungen
Ein Treiber kann eine EvtIoAllocateResourcesForReservedRequest Rückruffunktion registrieren, wenn sie WdfIoQueueAssignForwardProgressPolicyaufruft.
Wenn Ihr Treiber eine EvtIoAllocateResourcesForReservedRequest Rückruffunktion registriert, ruft das Framework die Funktion unmittelbar nach dem Erstellen eines Anforderungsobjekts auf, das für Situationen mit geringem Arbeitsspeicher reserviert wird.
Die Rückruffunktion kann Ressourcen zuordnen, die ihr Treiber zur späteren Verarbeitung einer Anforderung benötigt, wenn das Framework die reservierte Anforderung aufgrund einer Situation mit geringem Arbeitsspeicher verwendet.
Um Speicher für anforderungsspezifische Ressourcen zuzuweisen, kann eine EvtIoAllocateResourcesForReservedRequest Rückruffunktion möglicherweise WdfObjectAllocateContext-aufrufen, wobei das Anforderungsobjekthandle angegeben wird, das der Request Parameter angibt.
Alternativ oder zusätzlich ruft Ihr Treiber möglicherweise WdfDeviceInitSetRequestAttributes- auf, bevor WdfDeviceCreateaufgerufen wird. Daher weist das Framework kontextbereich für jedes reservierte Anforderungsobjekt zu, wenn es das Objekt erstellt.
Wenn Ihr Treiber Objektkontextbereich für reservierte Anforderungsobjekte zuweist, muss der Treiber den Kontextbereich erneut initialisieren, wenn eine E/A-Anforderung abgeschlossen wird, die ein reserviertes Anforderungsobjekt verwendet. Das Framework initialisiert den Kontextbereich reservierter Anforderungsobjekte nach der Verwendung nicht erneut.
Wenn Ihr Treiber WdfDeviceInitSetRequestAttributes aufruft und ein EvtCleanupCallback- oder EvtDestroyCallback- Rückruffunktion für seine Anforderungsobjekte angibt, ruft das Framework diese Rückruffunktionen nur für die reservierten Anforderungsobjekte auf, wenn sie die zugeordneten E/A-Warteschlangen löscht.
Die Anforderungshandler des Treibers können WdfRequestIsReserved- aufrufen, um festzustellen, ob reservierte Anforderungsobjekte verwendet werden.
Weitere Informationen zur Verwendung des Objektkontextbereichs finden Sie unter Framework Object Context Space.
Wenn die Rückruffunktion Ressourcen erfolgreich zuordnet, sollte sie STATUS_SUCCESS zurückgeben.
Wenn ein Ressourcenzuordnungsfehler auftritt, z. B. eine Situation mit geringem Arbeitsspeicher, muss die Rückruffunktion einen Fehlerstatuswert 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 EvtIoAllocateResourcesForReservedRequest Rückruffunktion finden Sie unter Garantie des Fortschritts von E/A-Vorgängen.
Anforderungen
Anforderung | Wert |
---|---|
Zielplattform | universell |
Minimale KMDF-Version | 1.9 |
Kopfzeile | wdfio.h (einschließen Wdf.h) |
IRQL | <=DISPATCH_LEVEL |