Condividi tramite


EVT_WDF_IO_ALLOCATE_RESOURCES_FOR_RESERVED_REQUEST funzione di callback (wdfio.h)

[Si applica solo a KMDF]

La funzione di callback EvtIoAllocateResourcesForReservedRequest assegna risorse specifiche della richiesta che il driver può usare per elaborare una richiesta di I/O in futuro. Il framework pre-alloca l'oggetto richiesta specificato per l'uso futuro in situazioni di memoria ridotta.

Sintassi

EVT_WDF_IO_ALLOCATE_RESOURCES_FOR_RESERVED_REQUEST EvtWdfIoAllocateResourcesForReservedRequest;

NTSTATUS EvtWdfIoAllocateResourcesForReservedRequest(
  [in] WDFQUEUE Queue,
  [in] WDFREQUEST Request
)
{...}

Parametri

[in] Queue

Handle per un oggetto coda di I/O.

[in] Request

Handle a un oggetto request creato dal framework per l'uso durante le future situazioni di bassa memoria.

Valore restituito

La funzione di callback EvtIoAllocateResourcesForReservedRequest deve restituire STATUS_SUCCESS o un altro valore di stato per cui NT_SUCCESS(stato) è TRUE se la funzione non rileva errori. In caso contrario, questa funzione deve restituire un valore di stato per il quale NT_SUCCESS(stato) è uguale a FALSE.

Commenti

Un driver può registrare una funzione di callback EvtIoAllocateResourcesForReservedRequest quando chiama WdfIoQueueAssignForwardProgressPolicy.

Se il driver registra una funzione di callback EvtIoAllocateResourcesForReservedRequest , il framework chiama la funzione immediatamente dopo la creazione di un oggetto request che riserva per situazioni di memoria ridotta.

La funzione di callback può allocare risorse che il driver richiederà per elaborare una richiesta in un secondo momento, se il framework usa la richiesta riservata a causa di una situazione di memoria ridotta.

Per allocare memoria per le risorse specifiche della richiesta, una funzione evtIoAllocateResourcesForReservedRequest callback potrebbe chiamare WdfObjectAllocateContext, specificando l'handle dell'oggetto richiesta specificato dal parametro Request .

In alternativa, il driver potrebbe chiamare WdfDeviceInitSetRequestAttributes prima di chiamare WdfDeviceCreate. Di conseguenza, il framework allocherà spazio di contesto per ogni oggetto richiesta riservata quando crea l'oggetto .

Se il driver alloca lo spazio di contesto dell'oggetto per gli oggetti richiesta riservati, il driver deve reinizializzare lo spazio del contesto al termine di una richiesta di I/O che usa un oggetto request riservato. Il framework non reinizializza lo spazio di contesto degli oggetti richiesta riservati dopo l'uso.

Se il driver chiama WdfDeviceInitSetRequestAttributes e specifica una funzione di callback EvtCleanupCallback o EvtDestroyCallback per gli oggetti di richiesta, il framework chiama queste funzioni di callback solo quando elimina le code di I/O associate.

I gestori delle richieste del driver possono chiamare WdfRequestIsReserved per determinare se vengono usati oggetti di richiesta riservati.

Per altre informazioni su come usare lo spazio di contesto dell'oggetto, vedere Framework Object Context Space.

Se la funzione di callback alloca correttamente le risorse, deve restituire STATUS_SUCCESS.

Se si verifica un errore di allocazione delle risorse, ad esempio una situazione di memoria ridotta, la funzione di callback deve restituire un valore di stato di errore. In questo caso, il framework arresta l'allocazione di oggetti richiesta riservati e usa il valore restituito della funzione callback come valore restituito per WdfIoQueueAssignForwardProgressPolicy.

Per altre informazioni sulla funzione di callback EvtIoAllocateResourcesForReservedRequest , vedere Garanzia dello stato di avanzamento delle operazioni di I/O.

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Versione KMDF minima 1,9
Intestazione wdfio.h (includere Wdf.h)
IRQL <=DISPATCH_LEVEL

Vedi anche

EvtIoAllocateRequestResources

WdfIoQueueAssignForwardProgressPolicy

WdfRequestIsReserved