Compartir a través de


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 controladores UMDF nuevos deben escribirse con 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 con 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 IWDFIoRequest del objeto de solicitud que representa la solicitud de E/S.

[in, optional] pFile

Puntero a la interfaz IWDFFile 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 valores siguientes:

Código devuelto Descripción
E_OUTOFMEMORY
El marco de trabajo no pudo asignar memoria.
 

Este método podría devolver uno de los otros valores que contiene Winerror.h.

Comentarios

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 pueden 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 siguiente ejemplo de código forma parte de una función de devolución de llamada IQueueCallbackDefaultIoHandler::OnDefaultIoHandler . 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 Value
Finalización del soporte técnico No disponible en UMDF 2.0 y versiones posteriores.
Plataforma de destino Escritorio
Versión mínima de UMDF 1,9
Encabezado wudfddi.h (incluya Wudfddi.h)
Archivo DLL WUDFx.dll

Consulte también

IQueueCallbackDefaultIoHandler::OnDefaultIoHandler

IWDFIoRequest::Send

IWDFIoTarget2