Método IWDFIoTarget2::FormatRequestForFlush (wudfddi.h)
[Advertencia: UMDF 2 es la versión más reciente de UMDF y sustituye a UMDF 1. Todos los nuevos controladores UMDF deben escribirse mediante UMDF 2. No se agregan nuevas características a UMDF 1 y hay compatibilidad limitada con UMDF 1 en versiones más recientes de Windows 10. Los controladores universales de Windows deben usar UMDF 2. Para obtener más información, consulta Introducción a UMDF.]
El método FormatRequestForFlush compila una solicitud de E/S para una operación de vaciado, pero no envía la solicitud a un destino de E/S.
Sintaxis
HRESULT FormatRequestForFlush(
[in] IWDFIoRequest *pRequest,
[in, optional] IWDFFile *pFile
);
Parámetros
[in] pRequest
Puntero a la interfaz de IWDFIoRequest del objeto de solicitud que representa la solicitud de E/S.
[in, optional] pFile
Puntero al IWDFFile interfaz del objeto de archivo asociado a la solicitud de E/S. Este parámetro es opcional y puede ser NULL, pero es necesario para el destino de E/S predeterminado.
Valor devuelto
formatRequestForFlush devuelve S_OK si la operación se realiza correctamente. De lo contrario, el método podría devolver uno de los siguientes valores:
Código devuelto | Descripción |
---|---|
|
El marco no pudo asignar memoria. |
Este método podría devolver uno de los otros valores que contiene Winerror.h.
Observaciones
Algunos controladores deben vaciar los búferes almacenados en caché que existen en un controlador inferior o en el dispositivo. Por ejemplo, los controladores que existen en una pila de controladores para un dispositivo serie o un dispositivo de almacenamiento podrían admitir esta operación.
Use el método FormatRequestForFlush, seguido del método IWDFIoRequest::Send, para enviar solicitudes de vaciado de forma sincrónica o asincrónica.
Ejemplos
El ejemplo de código siguiente forma parte de un IQueueCallbackDefaultIoHandler::OnDefaultIoHandler función de devolución de llamada. Si la función de devolución de llamada recibe una solicitud de vaciado, envía la solicitud al destino de E/S predeterminado 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);
}
Requisitos
Requisito | Valor |
---|---|
fin del soporte técnico | No disponible en UMDF 2.0 y versiones posteriores. |
de la plataforma de destino de | Escritorio |
versión mínima de UMDF | 1.9 |
encabezado de | wudfddi.h (incluya Wudfddi.h) |
DLL de | WUDFx.dll |