共用方式為


IWDFIoTarget2::FormatRequestForSetInformation 方法 (wudfddi.h)

[警告: UMDF 2 是最新版的 UMDF,並取代 UMDF 1。 所有新的 UMDF 驅動程式都應該使用 UMDF 2 來撰寫。 未將新功能新增至 UMDF 1,且較新版本的 #DCE1D78CBC7F94B989F5FE2E9EA71069C 上不支援 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。 否則,方法可能會傳回下列值:

傳回碼 Description
E_OUTOFMEMORY
架構無法配置記憶體。
 

這個方法可能會傳回 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

另請參閱

IWDFIoTarget2

IWDFIoTarget2::FormatRequestForQueryInformation