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