Método IWDFIoTarget2::FormatRequestForQueryInformation (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 FormatRequestForQueryInformation da formato a una solicitud de E/S para obtener información sobre un archivo, pero no envía la solicitud a un destino de E/S.

Sintaxis

HRESULT FormatRequestForQueryInformation(
  [in]           IWDFIoRequest              *pRequest,
  [in]           WDF_FILE_INFORMATION_CLASS InformationClass,
  [in, optional] IWDFFile                   *pFile,
  [in, optional] IWDFMemory                 *pInformationMemory,
  [in, optional] PWDFMEMORY_OFFSET          pInformationMemoryOffset
);

Parámetros

[in] pRequest

Puntero a la interfaz IWDFIoRequest del objeto de solicitud que representa la solicitud de E/S.

[in] InformationClass

Valor de tipo WDF_FILE_INFORMATION_CLASS que especifica el tipo de información que se va a obtener.

[in, optional] pFile

Puntero a la interfaz IWDFFile del objeto de archivo asociado a la solicitud de E/S. Este parámetro es necesario para destinos de E/S locales y remotos, y es opcional (puede ser NULL) para los destinos de E/S de identificador de archivos.

[in, optional] pInformationMemory

Puntero a la interfaz IWDFMemory de un objeto de memoria. Este objeto representa el búfer de salida, que recibe la información de archivo que especifica el parámetro InformationClass . Este parámetro es opcional y puede ser NULL.

[in, optional] pInformationMemoryOffset

Puntero a una estructura WDFMEMORY_OFFSET que proporciona valores opcionales de desplazamiento y longitud de bytes. El marco usa estos valores para determinar la dirección y la longitud iniciales, dentro del búfer de salida, para la transferencia de datos. Si este puntero es NULL, la transferencia de datos comienza al principio del búfer de salida y el tamaño de la transferencia es el tamaño del búfer.

Valor devuelto

FormatRequestForQueryInformation devuelve S_OK si la operación se realiza correctamente. De lo contrario, el método podría devolver el siguiente valor:

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

Use el método FormatRequestForQueryInformation , seguido del método IWDFIoRequest::Send , para enviar solicitudes de forma sincrónica o asincrónica a un destino de E/S.

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 información de consulta, 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;
    IWDFMemory *pOutMemory;
    WDF_FILE_INFORMATION_CLASS infoClass;

    //
    // Obtain the device, default I/O target, and file object.
    //
    pQueue->GetDevice(&pDevice);
    pDevice->GetDefaultIoTarget(&pTarget);
    pRequest->GetFileObject(&pFile);

    if (WdfRequestQueryInformation==pRequest->GetType())
    {
        //
        // Declare an IWDFIoRequest2 interface pointer and obtain the
        // IWDFIoRequest2 interface from the IWDFIoRequest interface.
        //
        CComQIPtr<IWDFIoRequest2> r2 = pRequest;

        // 
        // Declare an IWDFIoTarget2 interface pointer and obtain the
        // IWDFIoTarget2 interface from the IWDFIoTarget interface.
        //
        CComQIPtr<IWDFIoTarget2> target2(pTarget);

        // 
        // Get the I/O request's output buffer.
        // 
        hr = pWdfRequest2->RetrieveOutputMemory(&pOutMemory);
        if (!SUCCEEDED(hr)) goto Error;

        // 
        // Get the I/O request's parameters.
        // 
        hr = pWdfRequest2->GetQueryInformationParameters(&infoClass,
                                                         NULL);
        if (!SUCCEEDED(hr)) goto Error;

        //
        // Format a query information request and send it to the I/O target.
        //
        hr = target2->FormatRequestForQueryInformation(pRequest,
                                                       infoClass,
                                                       pFile,
                                                       pOutMemory,
                                                       NULL);
        if (!SUCCEEDED(hr)) goto Error;
        hr = pRequest->Send(pTarget,
                            WDF_REQUEST_SEND_OPTION_SYNCHRONOUS,
                            0);
    }
...
Error;
    //
    // Release objects.
    //
    SAFE_RELEASE(pDevice);
    SAFE_RELEASE(pTarget);
    SAFE_RELEASE(pFile);
    SAFE_RELEASE(pOutMemory);
}

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

IWDFIoTarget2

IWDFIoTarget2::FormatRequestForSetInformation