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 |
---|---|
|
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 |