Funzione WdfRequestFormatRequestUsingCurrentType (wdfrequest.h)

[Si applica a KMDF e UMDF]

Il metodo WdfRequestFormatRequestUsingCurrentType formatta una richiesta di I/O specificata in modo che il driver possa inoltrarlo , non modificato, alla destinazione di I/O locale del driver.

Sintassi

void WdfRequestFormatRequestUsingCurrentType(
  [in] WDFREQUEST Request
);

Parametri

[in] Request

Handle per un oggetto richiesta framework ricevuto dal driver da una delle code di I/O.

Valore restituito

nessuno

Osservazioni

Se il driver fornisce un handle di oggetto non valido, si verifica un controllo di bug.

Quando il driver riceve una richiesta di I/O, a volte si vuole che il driver inoltra la richiesta, non modificata, alla destinazione di I/O locale. Per inoltrare tale richiesta, il driver deve:

  1. Chiamare WdfRequestFormatRequestUsingCurrentType per formattare l'oggetto richiesta in modo che il framework possa passare la richiesta alla destinazione I/O locale del driver.
  2. Chiamare WdfRequestSend per inviare la richiesta alla destinazione di I/O.
Per altre informazioni su WdfRequestFormatRequestUsingCurrentType, vedere Inoltro di richieste di I/O.

Esempio

L'esempio di codice seguente è una funzione di callback EvtIoDefault che inoltra ogni richiesta di I/O ricevuta, senza modifiche, alla destinazione di I/O locale del 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;
}

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Versione KMDF minima 1.0
Versione UMDF minima 2,0
Intestazione wdfrequest.h (include Wdf.h)
Libreria Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
Regole di conformità DDI DriverCreate(kmdf), InvalidReqAccess(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), RequestFormattedValid(kmdf)

Vedi anche

WdfRequestSend

WdfRequestWdmFormatUsingStackLocation