Função WdfRequestFormatRequestUsingCurrentType (wdfrequest.h)

[Aplica-se a KMDF e UMDF]

O método WdfRequestFormatRequestUsingCurrentType formata uma solicitação de E/S especificada para que o driver possa encaminhá-la , não modificada, para o destino de E/S local do driver.

Sintaxe

void WdfRequestFormatRequestUsingCurrentType(
  [in] WDFREQUEST Request
);

Parâmetros

[in] Request

Um identificador para um objeto de solicitação de estrutura que o driver recebeu de uma de suas filas de E/S.

Retornar valor

Nenhum

Comentários

Um bug marcar ocorrerá se o driver fornecer um identificador de objeto inválido.

Quando o driver recebe uma solicitação de E/S, às vezes, você deseja que o driver encaminhe a solicitação, não modificada, para seu destino de E/S local. Para encaminhar essa solicitação, o driver deve:

  1. Chame WdfRequestFormatRequestUsingCurrentType para formatar o objeto de solicitação para que a estrutura possa passar a solicitação para o destino de E/S local do driver.
  2. Chame WdfRequestSend para enviar a solicitação para o destino de E/S.
Para obter mais informações sobre WdfRequestFormatRequestUsingCurrentType, consulte Encaminhando solicitações de E/S.

Exemplos

O exemplo de código a seguir é uma função de retorno de chamada EvtIoDefault que encaminha cada solicitação de E/S recebida, sem modificação, para o destino de E/S local do dispositivo.

VOID
MyEvtIoDefault(
    WDFQUEUE Queue,
    WDFREQUEST Request
    )
{
    WDF_REQUEST_SEND_OPTIONS options;
    NTSTATUS status;
    WDF_REQUEST_PARAMETERS params;
    BOOLEAN ret;

    WDF_REQUEST_PARAMETERS_INIT(&params);

    WdfRequestGetParameters(
                            Request,
                            &params
                            );

    WdfRequestFormatRequestUsingCurrentType(Request);

    WDF_REQUEST_SEND_OPTIONS_INIT(
                                  &options,
                                  WDF_REQUEST_SEND_OPTION_SEND_AND_FORGET
                                  );

    ret = WdfRequestSend (
                          Request,
                          WdfDeviceGetIoTarget(WdfIoQueueGetDevice(Queue)),
                          &options
                          );
    if (!ret) {
        status = WdfRequestGetStatus(Request);
        WdfRequestComplete(
                           Request,
                           status
                           );
    }
    return;
}

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), RequestFormattedValid(kmdf)

Confira também

WdfRequestSend

WdfRequestWdmFormatUsingStackLocation