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

Consulte también

IQueueCallbackDefaultIoHandler::OnDefaultIoHandler

IWDFIoRequest::Send

IWDFIoTarget2