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