Função WdfRequestAllocateTimer (wdfrequest.h)
[Aplica-se a KMDF e UMDF]
O método WdfRequestAllocateTimer aloca um temporizador para uma solicitação de E/S especificada.
Sintaxe
NTSTATUS WdfRequestAllocateTimer(
[in] WDFREQUEST Request
);
Parâmetros
[in] Request
Um identificador para um objeto de solicitação de estrutura.
Retornar valor
WdfRequestAllocateTimer retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, esse método pode retornar um dos seguintes valores:
Código de retorno | Descrição |
---|---|
|
Um parâmetro de entrada é inválido. |
|
Não foi possível alocar um temporizador. |
Esse método também pode retornar outros valores NTSTATUS.
Um bug marcar ocorrerá se o driver fornecer um identificador de objeto inválido.
Comentários
Se o driver especificar um valor de tempo limite ao chamar WdfRequestSend, ele deverá chamar WdfRequestAllocateTimer antes de chamar WdfRequestSend. Isso garante que a chamada para WdfRequestSend não falhará se não houver recursos suficientes do sistema para alocar um temporizador.
Se um temporizador já estiver alocado para a solicitação especificada, WdfRequestAllocateTimer retornará STATUS_SUCCESS.
Exemplos
O exemplo de código a seguir inicializa uma estrutura WDF_REQUEST_SEND_OPTIONS , aloca um objeto de temporizador para a solicitação de E/S e, em seguida, chama 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
);
}
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Universal |
Versão mínima do KMDF | 1.0 |
Versão mínima do UMDF | 2,0 |
Cabeçalho | wdfrequest.h (inclua Wdf.h) |
Biblioteca | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
Regras de conformidade da DDI | DriverCreate(kmdf), InvalidReqAccess(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |