IWDFIoRequest2::GetQueryInformationParameters 方法 (wudfddi.h)

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

GetQueryInformationParameters 方法检索与 WdfRequestQueryInformation 类型 I/O 请求关联的参数。

语法

void GetQueryInformationParameters(
  [out, optional] WDF_FILE_INFORMATION_CLASS *pInformationClass,
  [out, optional] SIZE_T                     *pSizeInBytes
);

参数

[out, optional] pInformationClass

指向驱动程序分配的变量的指针,该变量接收 WDF_FILE_INFORMATION_CLASS类型的值。 此指针是可选的,可以为 NULL

[out, optional] pSizeInBytes

指向驱动程序分配的变量的指针,该变量接收文件信息的大小(以字节为单位)。 此指针是可选的,可以为 NULL

返回值

备注

如果请求类型为 WdfRequestQueryInformation,驱动程序可以调用 GetQueryInformationParameters 以获取与 I/O 请求关联的参数。 pInformationClass 参数标识驱动程序应提供的文件信息的类型,pSizeInBytes 参数指定将接收信息的缓冲区的大小。 驱动程序可以调用 IWDFIoRequest2::RetrieveOutputBuffer 来获取缓冲区地址。

驱动程序必须验证指定的缓冲区大小是否足以接收请求的文件信息。

示例

以下代码示例是 IQueueCallbackDefaultIoHandler::OnDefaultIoHandler 回调函数的一部分。 如果回调函数收到查询信息请求,它将检索请求的参数。 如果驱动程序支持指定类型的信息,则会将信息复制到请求的输出缓冲区中。

void
CMyQueue::OnDefaultIoHandler(
    IWDFIoQueue*  pQueue,
    IWDFIoRequest*  pRequest
    )
{
    HRESULT hr;
    WDF_FILE_INFORMATION_CLASS infoClass;
    SIZE_T bufSize;
    PFILE_BASIC_INFORMATION buffer;

 if (WdfRequestQueryInformation==pRequest->GetType())
    {
        //
        // Declare an IWDFIoRequest2 interface pointer and obtain the
        // IWDFIoRequest2 interface from the IWDFIoRequest interface.
        //
        CComQIPtr<IWDFIoRequest2> r2 = pRequest;
        // 
        // Get the I/O request's parameters.
        // 
        r2->GetQueryInformationParameters(&infoClass,
                                          &bufSize);
        // 
        // This driver supports only FileBasicInformation.
        // 
        if (infoClass != FileBasicInformation)
        {
            hr = HRESULT_FROM_NT(STATUS_NOT_SUPPORTED);
            goto exit;
        }
        // 
        // Validate buffer size.
        // 
        if (bufferCb != sizeof(FILE_BASIC_INFORMATION))
        {
            hr = HRESULT_FROM_NT(STATUS_BUFFER_TOO_SMALL);
            goto exit;
        }
        // 
        // Get output buffer.
        // 
        hr = r2->RetrieveOutputBuffer(sizeof(FILE_BASIC_INFORMATION), 
                                      (PVOID*) &buffer,
                                      &bufferCb);
        if (SUCCEEDED(hr))
        {
            // 
            // Copy file information to output buffer.
            // 
            CopyMemory(buffer,
                       &g_FileInfo,
                       sizeof(FILE_BASIC_INFORMATION));
            r2->SetInformation(sizeof(FILE_BASIC_INFORMATION));
        }
 ...
    }
...
exit:
...
}

要求

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

另请参阅

IWDFIoRequest2

IWDFIoRequest2::GetSetInformationParameters