共用方式為


IWDFDevice::CreateRequest 方法 (wudfddi.h)

[警告: UMDF 2 是最新版的 UMDF,並取代 UMDF 1。 所有新的 UMDF 驅動程式都應該使用 UMDF 2 來撰寫。 未將新功能新增至 UMDF 1,且較新版本的 #DCDE3E1565E4C423483635B96F0B778AF 上不支援 UMDF 1。 通用 Windows 驅動程式必須使用 UMDF 2。 如需詳細資訊,請參閱使用 UMDF 使用者入門。]

CreateRequest 方法會建立未格式化的要求物件。

語法

HRESULT CreateRequest(
  [in, optional] IUnknown      *pCallbackInterface,
  [in, optional] IWDFObject    *pParentObject,
  [out]          IWDFIoRequest **ppRequest
);

參數

[in, optional] pCallbackInterface

架構用來判斷驅動程式在新建立的要求對象上訂閱的對象相關事件回呼函式的 IUnknown 介面指標。 這是選擇性參數。 如果驅動程式不需要通知,則驅動程式可以傳遞 NULL 。 如果驅動程序傳遞有效的指標,架構會在 IObjectCleanup 介面的 IUnknown 介面上呼叫 QueryInterface。 如果架構取得驅動程式的 IObjectCleanup 介面,架構接著可以呼叫驅動程式的 IObjectCleanup::OnCleanup 方法,以通知驅動程式已清除要求物件。

[in, optional] pParentObject

所建立 I/O 要求物件之父物件的 IWDFObject 介面指標。 如果 為 NULL,則裝置物件會變成預設父系。

[out] ppRequest

變數的指標,可接收新要求物件的 IWDFIoRequest 介面指標。

傳回值

如果作業成功,CreateRequest 會傳回S_OK。 否則,此方法會傳回 Winerror.h 中定義的其中一個錯誤碼。

備註

在UMDF驅動程式使用 CreateRequest 所建立的要求物件之前,驅動程式必須格式化要求物件。 若要格式化 I/O 要求對象,驅動程式會呼叫下列其中一種方法:

如果驅動程式呼叫 CreateRequest 來建立要求物件,它不得呼叫要求物件的 IWDFIoRequest::Complete 。 相反地,驅動程式在使用要求物件完成時,必須呼叫 IWDFObject::D eleteWdfObject 。 如需詳細資訊,請參閱 完成 I/O 要求

如果在 pParentObject 參數中指定 NULL,則裝置物件會成為新建立 I/O 要求對象的預設父物件。 如果 UMDF 驅動程式建立 I/O 要求物件,而驅動程式會搭配特定 I/O 佇列物件或其他 I/O 要求物件使用,則驅動程式應該將該佇列或要求物件設定為所建立要求物件的父物件。 刪除父物件時,會刪除建立的要求物件。

範例

下列程式代碼範例示範如何建立要求、格式化讀取要求,以及傳送要求。

HRESULT
CUmdfHidDevice::SendInterruptPipeRead(
    VOID
    )
{
    CComPtr<IWDFDevice> wdfDevice;

    HRESULT hr;

    IWDFFile *pTargetFile = NULL;

    // Allocate a new WDF request to send on the interrupt pipe.
    GetWdfDevice(&wdfDevice);
    hr = wdfDevice->CreateRequest(
                                  static_cast<IObjectCleanup*>(this), 
                                  wdfDevice, 
                                  &m_InterruptReadRequest
                                  );

    if (SUCCEEDED(hr))
    {
        m_InterruptPipe->GetTargetFile(&pTargetFile);
        hr = m_InterruptPipe->FormatRequestForRead(
                                                   m_InterruptReadRequest,
                                                   pTargetFile,
                                                   m_ReadMemory,
                                                   NULL,
                                                   NULL
                                                   );
    }

    // Issue the read to the pipe.
    if (SUCCEEDED(hr))
    {
        hr = m_InterruptReadRequest->Send(m_InterruptPipe, 0, 0);
    }

    return hr;
}

規格需求

需求
終止支援 UMDF 2.0 和更新版本中無法使用。
目標平台 桌面
最低UMDF版本 1.5
標頭 wudfddi.h (包括 Wudfddi.h)
Dll WUDFx.dll

另請參閱

IWDFDevice

IWDFIoRequest

IWDFIoTarget::FormatRequestForIoctl

IWDFIoTarget::FormatRequestForRead

IWDFIoTarget::FormatRequestForWrite

IWDFObject