Freigeben über


IWDFIoTarget2::FormatRequestForFlush-Methode (wudfddi.h)

[Warnung: UMDF 2 ist die neueste Version von UMDF und ersetzt UMDF 1. Alle neuen UMDF-Treiber sollten mit UMDF 2 geschrieben werden. UMDF 1 werden keine neuen Features hinzugefügt, und die Unterstützung für UMDF 1 in neueren Versionen von Windows 10 ist eingeschränkt. Universelle Windows-Treiber müssen UMDF 2 verwenden. Weitere Informationen finden Sie unter Erste Schritte mit UMDF.]

Die FormatRequestForFlush-Methode erstellt eine E/A-Anforderung für einen Leerungsvorgang, sendet die Anforderung jedoch nicht an ein E/A-Ziel.

Syntax

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

Parameter

[in] pRequest

Ein Zeiger auf die IWDFIoRequest-Schnittstelle des Anforderungsobjekts, das die E/A-Anforderung darstellt.

[in, optional] pFile

Ein Zeiger auf die IWDFFile-Schnittstelle des Dateiobjekts, das der E/A-Anforderung zugeordnet ist. Dieser Parameter ist optional und kann NULL sein, ist aber für das E/A-Standardziel erforderlich.

Rückgabewert

FormatRequestForFlush gibt S_OK zurück, wenn der Vorgang erfolgreich ist. Andernfalls gibt die Methode möglicherweise einen der folgenden Werte zurück:

Rückgabecode Beschreibung
E_OUTOFMEMORY
Das Framework konnte arbeitsspeicher nicht zuweisen.
 

Diese Methode gibt möglicherweise einen der anderen Werte zurück, die Winerror.h enthält.

Hinweise

Einige Treiber müssen zwischengespeicherte Puffer leeren, die entweder in einem niedrigeren Treiber oder auf dem Gerät vorhanden sind. Beispielsweise können Treiber, die in einem Treiberstapel für ein serielles Gerät oder ein Speichergerät vorhanden sind, diesen Vorgang unterstützen.

Verwenden Sie die FormatRequestForFlush-Methode gefolgt von der IWDFIoRequest::Send-Methode , um Leerungsanforderungen entweder synchron oder asynchron zu senden.

Beispiele

Das folgende Codebeispiel ist Teil einer IQueueCallbackDefaultIoHandler::OnDefaultIoHandler-Rückruffunktion . Wenn die Rückruffunktion eine Leerungsanforderung empfängt, sendet sie die Anforderung an das Standard-E/A-Ziel des Geräts.

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);
}

Anforderungen

Anforderung Wert
Ende des Supports In UMDF 2.0 und höher nicht verfügbar.
Zielplattform Desktop
UMDF-Mindestversion 1.9
Kopfzeile wudfddi.h (include Wudfddi.h)
DLL WUDFx.dll

Weitere Informationen

IQueueCallbackDefaultIoHandler::OnDefaultIoHandler

IWDFIoRequest::Send

IWDFIoTarget2