Condividi tramite


Metodo IWDFIoTarget2::FormatRequestForFlush (wudfddi.h)

[Avviso: UMDF 2 è la versione più recente di UMDF e sostituisce UMDF 1. Tutti i nuovi driver UMDF devono essere scritti usando UMDF 2. Non vengono aggiunte nuove funzionalità a UMDF 1 ed è disponibile un supporto limitato per UMDF 1 nelle versioni più recenti di Windows 10. I driver di Windows universali devono usare UMDF 2. Per altre info, vedi Introduzione con UMDF.]

Il metodo FormatRequestForFlush compila una richiesta di I/O per un'operazione di scaricamento, ma non invia la richiesta a una destinazione di I/O.

Sintassi

HRESULT FormatRequestForFlush(
  [in]           IWDFIoRequest *pRequest,
  [in, optional] IWDFFile      *pFile
);

Parametri

[in] pRequest

Puntatore all'interfaccia IWDFIoRequest dell'oggetto richiesta che rappresenta la richiesta di I/O.

[in, optional] pFile

Puntatore all'interfaccia IWDFFile dell'oggetto file associato alla richiesta di I/O. Questo parametro è facoltativo e può essere NULL, ma è necessario per la destinazione di I/O predefinita.

Valore restituito

FormatRequestForFlush restituisce S_OK se l'operazione ha esito positivo. In caso contrario, il metodo potrebbe restituire uno dei valori seguenti:

Codice restituito Descrizione
E_OUTOFMEMORY
Il framework non è riuscito ad allocare memoria.
 

Questo metodo potrebbe restituire uno degli altri valori contenuti da Winerror.h.

Commenti

Alcuni driver devono scaricare i buffer memorizzati nella cache presenti in un driver inferiore o nel dispositivo. Ad esempio, i driver presenti in uno stack di driver per un dispositivo seriale o un dispositivo di archiviazione potrebbero supportare questa operazione.

Utilizzare il metodo FormatRequestForFlush , seguito dal metodo IWDFIoRequest::Send , per inviare richieste di scaricamento in modo sincrono o asincrono.

Esempio

L'esempio di codice seguente fa parte di una funzione di callback IQueueCallbackDefaultIoHandler::OnDefaultIoHandler . Se la funzione di callback riceve una richiesta di scaricamento, invia la richiesta alla destinazione di I/O predefinita del dispositivo.

void
CMyQueue::OnDefaultIoHandler(
 IWDFIoQueue*  pQueue,
 IWDFIoRequest*  pRequest
    )
{
    HRESULT hr;
    IWDFDevice *pDevice;
    IWDFIoTarget *pTarget;
    IWDFFile *pFile;

    //
    // Obtain the device, default I/O target, and file object.
    //
    pQueue->GetDevice(&pDevice);
    pDevice->GetDefaultIoTarget(&pTarget);
    pRequest->GetFileObject(&pFile);

    if (WdfRequestFlushBuffers==pRequest->GetType())
    {
        // 
        // Declare an IWDFIoTarget2 interface pointer and obtain the
        // IWDFIoTarget2 interface from the IWDFIoTarget interface.
        //
        CComQIPtr<IWDFIoTarget2> target2(pTarget);

        //
        // Format a flush request and send it to the I/O target.
        //
        hr = target2->FormatRequestForFlush(pRequest, 
                                            pFile);

        if (SUCCEEDED(hr))
        {
            hr = pRequest->Send(pTarget,
                                WDF_REQUEST_SEND_OPTION_SYNCHRONOUS,
                                0);
        }
    }
...
    //
    // Release objects.
    //
    SAFE_RELEASE(pDevice);
    SAFE_RELEASE(pTarget);
    SAFE_RELEASE(pFile);
}

Requisiti

Requisito Valore
Fine del supporto Non disponibile in UMDF 2.0 e versioni successive.
Piattaforma di destinazione Desktop
Versione UMDF minima 1,9
Intestazione wudfddi.h (include Wudfddi.h)
DLL WUDFx.dll

Vedi anche

IQueueCallbackDefaultIoHandler::OnDefaultIoHandler

IWDFIoRequest::Send

IWDFIoTarget2