Compartilhar via


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.

Valor de retorno

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
STATUS_INVALID_PARAMETER
Um parâmetro de entrada é inválido.
STATUS_WDF_REQUEST_INVALID_STATE
O driver forneceu um IRP na estrutura WDF_REQUEST_REUSE_PARAMS, mas o objeto de solicitação especificado não foi obtido de WdfRequestCreateFromIrp.
 

Uma verificação de bug ocorre se o driver fornece um identificador de objeto inválido.

Observações

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 recebidos da estrutura, mas não podem definir o sinalizador de WDF_REQUEST_REUSE_SET_NEW_IRP para esses objetos de solicitação.

Nota

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 CompletionRoutine de retorno de chamada que chama WdfRequestReuse para que o driver possa reutilizar uma solicitação alocada por 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(
                                  &params,
                                  WDF_REQUEST_REUSE_NO_FLAGS,
                                  STATUS_SUCCESS
                                  );

    status = WdfRequestReuse(
                             Request,
                             &params
                             );
    ASSERT(NT_SUCCESS(status));
...
}

Requisitos

Requisito Valor
da 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), KmdfIr, KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), ReqSendFail(kmdf)

Consulte também

de CompletionRoutine

WDF_REQUEST_REUSE_PARAMS

WDF_REQUEST_REUSE_PARAMS_INIT

WdfRequestCreate

WdfRequestCreateFromIrp

WdfRequestSetCompletionRoutine