IWDFIoTarget2::FormatRequestForQueryInformation 方法 (wudfddi.h)

[警告: UMDF 2 是最新版本的 UMDF,并取代 UMDF 1。 所有新的 UMDF 驱动程序都应使用 UMDF 2 编写。 不会向 UMDF 1 添加任何新功能,并且较新版本的 Windows 10 上对 UMDF 1 的支持有限。 通用 Windows 驱动程序必须使用 UMDF 2。 有关详细信息,请参阅使用 UMDF 入门。]

FormatRequestForQueryInformation 方法格式化 I/O 请求以获取有关文件的信息,但它不会将请求发送到 I/O 目标。

语法

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

参数

[in] pRequest

指向表示 I/O 请求的请求对象的 IWDFIoRequest 接口的指针。

[in] InformationClass

一个WDF_FILE_INFORMATION_CLASS类型的值,指定要获取的信息类型。

[in, optional] pFile

指向与 I/O 请求关联的文件对象的 IWDFFile 接口的指针。 此参数对于本地和远程 I/O 目标是必需的,并且是可选的, (对于文件句柄 I/O 目标,可以为 NULL) 。

[in, optional] pInformationMemory

指向内存对象的 IWDFMemory 接口的指针。 此对象表示输出缓冲区,该缓冲区接收 InformationClass 参数指定的文件信息。 此参数是可选的,可以为 NULL

[in, optional] pInformationMemoryOffset

指向提供可选字节偏移量和长度值的 WDFMEMORY_OFFSET 结构的指针。 框架使用这些值来确定输出缓冲区内数据传输的起始地址和长度。 如果此指针为 NULL,则数据传输从输出缓冲区的开头开始,传输大小为缓冲区大小。

返回值

如果操作成功,FormatRequestForQueryInformation 将返回S_OK。 否则,方法可能会返回以下值:

返回代码 说明
E_OUTOFMEMORY
框架无法分配内存。
 

此方法可能返回 Winerror.h 包含的其他值之一。

注解

使用 FormatRequestForQueryInformation 方法(后跟 IWDFIoRequest::Send 方法)以同步或异步方式将请求发送到 I/O 目标

示例

以下代码示例是 IQueueCallbackDefaultIoHandler::OnDefaultIoHandler 回调函数的一部分。 如果回调函数收到查询信息请求,则会将请求发送到设备的默认 I/O 目标。

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);
}

要求

要求
结束支持 在 UMDF 2.0 及更高版本中不可用。
目标平台 桌面
最低 UMDF 版本 1.9
标头 wudfddi.h (包括 Wudfddi.h)
DLL WUDFx.dll

另请参阅

IWDFIoTarget2

IWDFIoTarget2::FormatRequestForSetInformation