IWDFIoTarget2::FormatRequestForSetInformation 方法 (wudfddi.h)
[警告: UMDF 2 是最新版本的 UMDF,取代了 UMDF 1。 所有新的 UMDF 驱动程序都应使用 UMDF 2 编写。 没有将新功能添加到 UMDF 1,并且对较新版本的 Windows 10 上的 UMDF 1 的支持有限。 通用 Windows 驱动程序必须使用 UMDF 2。 有关详细信息,请参阅 UMDF入门 。]
FormatRequestForSetInformation 方法设置有关文件的信息的 I/O 请求的格式,但不会将请求发送到 I/O 目标。
语法
HRESULT FormatRequestForSetInformation(
[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,则数据传输从输入缓冲区的开头开始,传输大小为缓冲区大小。
返回值
如果作成功,FormatRequestForSetInformation 返回S_OK。 否则,该方法可能会返回以下值:
返回代码 | 描述 |
---|---|
|
框架无法分配内存。 |
此方法可能会返回 Winerror.h 包含的其他值之一。
言论
使用 FormatRequestForSetInformation 方法(后跟 IWDFIoRequest::Send 方法)以同步或异步方式将请求发送到 I/O 目标。
例子
以下代码示例是 IQueueCallbackDefaultIoHandler::OnDefaultIoHandler 回调函数的一部分。 如果回调函数收到设置信息请求,它将请求发送到设备的默认 I/O 目标。
void
CMyQueue::OnDefaultIoHandler(
IWDFIoQueue* pQueue,
IWDFIoRequest* pRequest
)
{
HRESULT hr;
IWDFDevice *pDevice;
IWDFIoTarget *pTarget;
IWDFFile *pFile;
IWDFMemory *pInMemory;
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 input buffer.
//
hr = pWdfRequest2->RetrieveInputMemory(&pInMemory);
if (!SUCCEEDED(hr)) goto Error;
//
// Get the I/O request's parameters.
//
hr = pWdfRequest2->GetSetInformationParameters(&infoClass,
NULL);
if (!SUCCEEDED(hr)) goto Error;
//
// Format a query information request and send it to the I/O target.
//
hr = target2->FormatRequestForSetInformation(pRequest,
infoClass,
pFile,
pInMemory,
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 |