IWDFIoTarget2::FormatRequestForQueryInformation 方法 (wudfddi.h)
[警告: UMDF 2 是最新版的 UMDF,並取代 UMDF 1。 所有新的UMDF驅動程式都應該使用UMDF 2撰寫。 未將新功能新增至 UMDF 1,且較新版本的 #D6409C5B834674E82B9D55581FF4CF890 上,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 目標需要此參數,而且是選擇性 (可以是 NULL) 檔句柄 I/O 目標。
[in, optional] pInformationMemory
記憶體物件的 IWDFMemory 介面指標。 這個物件代表輸出緩衝區,該緩衝區會接收 InformationClass 參數所指定的檔案資訊。 這個參數是選擇性的,而且可以是 NULL。
[in, optional] pInformationMemoryOffset
提供選擇性位元組位移和長度值的 WDFMEMORY_OFFSET 結構的指標。 架構會使用這些值來判斷數據傳輸的輸出緩衝區內的開始地址和長度。 如果此指標為 NULL,數據傳輸會從輸出緩衝區的開頭開始,而傳輸大小則是緩衝區大小。
傳回值
FormatRequestForQueryInformation 會在作業成功時傳回S_OK。 否則,方法可能會傳回下列值:
傳回碼 | Description |
---|---|
|
架構無法配置記憶體。 |
這個方法可能會傳回 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 |