Condividi tramite


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
STATUS_INVALID_PARAMETER
Un parametro di input non è valido.
STATUS_INSUFFICIENT_RESOURCES
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)

Vedere anche

WDF_ABS_TIMEOUT_IN_SEC

WDF_REQUEST_SEND_OPTIONS_INIT

WdfRequestSend