Funzione WdfRequestReuse (wdfrequest.h)
[Si applica a KMDF e UMDF]
Il metodo WdfRequestReuse reinizializza un oggetto richiesta framework in modo che possa essere riutilizzato.
Sintassi
NTSTATUS WdfRequestReuse(
[in] WDFREQUEST Request,
[in] PWDF_REQUEST_REUSE_PARAMS ReuseParams
);
Parametri
[in] Request
Handle per un oggetto richiesta del framework.
[in] ReuseParams
Puntatore a una struttura WDF_REQUEST_REUSE_PARAMS allocata dal chiamante.
Valore restituito
WdfRequestReuse restituisce STATUS_SUCCESS se l'operazione ha esito positivo. In caso contrario, questo metodo potrebbe restituire uno dei valori seguenti:
Codice restituito | Descrizione |
---|---|
|
Un parametro di input non è valido. |
|
Il driver ha fornito un IRP nella struttura WDF_REQUEST_REUSE_PARAMS , ma l'oggetto richiesta specificato non è stato ottenuto da WdfRequestCreateFromIrp. |
Se il driver fornisce un handle di oggetto non valido, si verifica un controllo di bug.
Commenti
Un driver basato su framework può riutilizzare gli oggetti di richiesta del framework creati dalle chiamate precedenti a WdfRequestCreate o WdfRequestCreateFromIrp. I driver possono anche riutilizzare gli oggetti richiesta ricevuti dal framework, ma non possono impostare il flag di WDF_REQUEST_REUSE_SET_NEW_IRP per tali oggetti richiesta.
Nota
I driver devono prestare attenzione quando si riutilizzano gli oggetti richiesta ricevuti dal framework. Il riutilizzo di una richiesta di questo tipo reimposta il flag di annullamento dell'IRP sottostante e può impedire a un driver chiamante di annullare la richiesta.
Un driver può riutilizzare un oggetto richiesta dopo il completamento della richiesta originale. Dopo che un driver ha chiamato WdfRequestReuse, il contenuto della richiesta deve essere reinizializzato. Il driver può specificare alcuni parametri di richiesta nella struttura WDF_REQUEST_REUSE_PARAMS .
Se si vuole che la richiesta riutilizzata disponga di una funzione di callback CompletionRoutine , il driver deve chiamare WdfRequestSetCompletionRoutine dopo aver chiamato WdfRequestReuse.
Per altre informazioni su WdfRequestReuse, vedere Riutilizzo degli oggetti richiesta framework.
Esempio
L'esempio di codice seguente fa parte di una funzione di callback CompletionRoutine che chiama WdfRequestReuse in modo che il driver possa riutilizzare una richiesta allocata dal driver.
VOID
MyRequestCompletionRoutine(
IN WDFREQUEST Request,
IN WDFIOTARGET Target,
PWDF_REQUEST_COMPLETION_PARAMS CompletionParams,
IN WDFCONTEXT Context
)
{
WDF_REQUEST_REUSE_PARAMS params;
NTSTATUS status;
...
WDF_REQUEST_REUSE_PARAMS_INIT(
¶ms,
WDF_REQUEST_REUSE_NO_FLAGS,
STATUS_SUCCESS
);
status = WdfRequestReuse(
Request,
¶ms
);
ASSERT(NT_SUCCESS(status));
...
}
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Versione KMDF minima | 1.0 |
Versione UMDF minima | 2,0 |
Intestazione | wdfrequest.h (include Wdf.h) |
Libreria | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
Regole di conformità DDI | DriverCreate(kmdf), InvalidReqAccess(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), ReqSendFail(kmdf) |