Partilhar via


Reutilizando objetos de solicitação de estrutura

Para melhorar o desempenho, os drivers baseados em estrutura que criam e enviam muitas solicitações assíncronas quase idênticas para um destino de E/S podem reutilizar objetos de solicitação em vez de criar um novo objeto de solicitação para cada solicitação. Um driver pode reutilizar um objeto de solicitação após a conclusão da solicitação.

Se um driver tiver criado um objeto de solicitação chamando WdfRequestCreate ou WdfRequestCreateFromIrp, ele poderá reutilizar a solicitação chamando WdfRequestReuse. Um driver também pode reutilizar objetos de solicitação que recebeu da estrutura em suas filas de E/S, mas não pode alterar o IRP que o objeto de solicitação recebida contém.

Se você tiver cuidado para evitar situações que causem os valores retornados malsucedidos descritos em WdfRequestReuse, seu driver poderá chamar WdfRequestReuse de dentro de uma função de retorno de chamada CompletionRoutine . (A função de retorno de chamada CompletionRoutine tem um valor retornado VOID e, portanto, não pode relatar erros.)

Se o driver fornecer uma função de retorno de chamada CompletionRoutine para um objeto de solicitação que ele reutiliza, o driver deverá chamar WdfRequestSetCompletionRoutine depois de chamar WdfRequestReuse.