Função WdfRequestReuse (wdfrequest.h)
[Aplica-se a KMDF e UMDF]
O método WdfRequestReuse reinicializa um objeto de solicitação de estrutura para que ele possa ser reutilizado.
Sintaxe
NTSTATUS WdfRequestReuse(
[in] WDFREQUEST Request,
[in] PWDF_REQUEST_REUSE_PARAMS ReuseParams
);
Parâmetros
[in] Request
Um identificador para um objeto de solicitação de estrutura.
[in] ReuseParams
Um ponteiro para uma estrutura de WDF_REQUEST_REUSE_PARAMS alocada pelo chamador.
Retornar valor
WdfRequestReuse retornará STATUS_SUCCESS se a operação for bem-sucedida. Caso contrário, esse método poderá retornar um dos seguintes valores:
Código de retorno | Descrição |
---|---|
|
Um parâmetro de entrada é inválido. |
|
O driver forneceu um IRP na estrutura WDF_REQUEST_REUSE_PARAMS , mas o objeto de solicitação especificado não foi obtido de WdfRequestCreateFromIrp. |
Um bug marcar ocorrerá se o driver fornecer um identificador de objeto inválido.
Comentários
Um driver baseado em estrutura pode reutilizar objetos de solicitação de estrutura criados por chamadas anteriores para WdfRequestCreate ou WdfRequestCreateFromIrp. Os drivers também podem reutilizar objetos de solicitação que receberam da estrutura, mas não podem definir o sinalizador WDF_REQUEST_REUSE_SET_NEW_IRP para esses objetos de solicitação.
Observação
Os drivers devem ter cuidado ao reutilização de objetos de solicitação recebidos da estrutura. A reutilização dessa solicitação redefine o sinalizador de cancelamento do IRP subjacente e pode impedir que um driver de chamada cancele a solicitação.
Um driver pode reutilizar um objeto de solicitação após a conclusão da solicitação original. Depois que um driver tiver chamado WdfRequestReuse, o conteúdo da solicitação deverá ser reinicializado. O driver pode especificar alguns parâmetros de solicitação na estrutura WDF_REQUEST_REUSE_PARAMS .
Se você quiser que a solicitação reutilizado tenha uma função de retorno de chamada CompletionRoutine , o driver deverá chamar WdfRequestSetCompletionRoutine depois de chamar WdfRequestReuse.
Para obter mais informações sobre WdfRequestReuse, consulte Reutilizando objetos de solicitação da estrutura.
Exemplos
O exemplo de código a seguir faz parte de uma função de retorno de chamada CompletionRoutine que chama WdfRequestReuse para que o driver possa reutilizar uma solicitação alocada pelo 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));
...
}
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 de DDI | DriverCreate(kmdf), InvalidReqAccess(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), ReqSendFail(kmdf) |