Funzione WdfRequestAllocateTimer (wdfrequest.h)
[Si applica a KMDF e UMDF]
Il metodo WdfRequestAllocateTimer alloca un timer per una richiesta di I/O specificata.
Sintassi
NTSTATUS WdfRequestAllocateTimer(
[in] WDFREQUEST Request
);
Parametri
[in] Request
Handle per un oggetto richiesta framework.
Valore restituito
WdfRequestAllocateTimer 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. |
|
Impossibile allocare un timer. |
Questo metodo potrebbe anche restituire altri valori NTSTATUS .
Se il driver fornisce un handle di oggetto non valido, si verifica un controllo di bug.
Osservazioni
Se il driver specifica un valore di timeout quando si chiama WdfRequestSend, deve chiamare WdfRequestAllocateTimer prima di chiamare WdfRequestSend. In questo modo, la chiamata a WdfRequestSend non avrà esito negativo se sono presenti risorse di sistema insufficienti per allocare un timer.
Se un timer è già allocato per la richiesta specificata, WdfRequestAllocateTimer restituisce STATUS_SUCCESS.
Esempi
Nell'esempio di codice seguente viene inizializzata una struttura WDF_REQUEST_SEND_OPTIONS, viene allocato un oggetto timer per la richiesta di I/O e quindi viene chiamato WdfRequestSend.
NTSTATUS status;
WDF_REQUEST_SEND_OPTIONS options;
BOOLEAN requestSend;
WDF_REQUEST_SEND_OPTIONS_INIT(
&options,
WDF_REQUEST_SEND_OPTION_TIMEOUT
);
WDF_REQUEST_SEND_OPTIONS_SET_TIMEOUT(
&options,
WDF_ABS_TIMEOUT_IN_SEC(TIME_OUT_VALUE)
);
status = WdfRequestAllocateTimer(
request
);
if (!NT_SUCCESS(status)){
return status;
...
requestSend = WdfRequestSend(
request,
ioTarget,
&options
);
}
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Universale |
versione minima di KMDF | 1.0 |
versione minima di UMDF | 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) |