IWDFDevice::CreateIoQueue 方法 (wudfddi.h)
[警告: UMDF 2 是最新版的 UMDF,並取代 UMDF 1。 所有新的UMDF驅動程式都應該使用UMDF 2撰寫。 未將新功能新增至 UMDF 1,而且較新版本的 Windows 10 上,UMDF 1 的支援有限。 通用 Windows 驅動程式必須使用 UMDF 2。 如需詳細資訊,請參閱使用 UMDF 使用者入門。]
CreateIoQueue 方法會設定與裝置相關聯的預設 I/O 佇列,或為裝置建立次要 I/O 佇列。
語法
HRESULT CreateIoQueue(
[in, optional] IUnknown *pCallbackInterface,
[in] BOOL bDefaultQueue,
[in] WDF_IO_QUEUE_DISPATCH_TYPE DispatchType,
[in] BOOL bPowerManaged,
[in] BOOL bAllowZeroLengthRequests,
[out] IWDFIoQueue **ppIoQueue
);
參數
[in, optional] pCallbackInterface
架構用來判斷驅動程式在佇列上訂閱的事件回呼函式的 IUnknown 介面指標。 這些是架構在發生相關事件時所呼叫的函式。
針對UMDF 1.9版和更新版本,使用循序或平行分派方法的I/O 佇列需要此參數,而且選擇性 (可為使用手動分派方法之 I/O 佇列的 NULL) 。 對於 1.9 之前的 UMDF 版本,所有分派方法都需要此參數。
[in] bDefaultQueue
BOOL 值,指定是要設定預設 I/O 佇列,還是為裝置建立次要 I/O 佇列。 TRUE 表示設定預設 I/O 佇列; FALSE 表示要建立次要 I/O 佇列。
[in] DispatchType
WDF_IO_QUEUE_DISPATCH_TYPE型別值,識別驅動程式如何從 I/O 佇列接收要求。
[in] bPowerManaged
BOOL 值,指定 I/O 佇列是否為電源管理。 TRUE 表示架構會使用 隨插即用 (PnP) 和裝置的電源狀態,自動協調 I/O 佇列的分派;FALSE 表示沒有自動協調的分派。
[in] bAllowZeroLengthRequests
BOOL 值,指定架構是否將零長度的 I/O 要求直接放在驅動程式要處理的 I/O 佇列中。 TRUE 表示驅動程式應該接收長度為零的緩衝區的讀取和寫入要求,也就是說,架構會自動將這些要求類型直接放在驅動程式的 I/O 佇列中。 FALSE 表示架構完成長度為零的 I/O 要求,而不是將它們放在 I/O 佇列中。
[out] ppIoQueue
變數的指標,接收新建立之 I/O 佇列物件或預設 I/O 佇列物件的 IWDFIoQueue 介面指標。
傳回值
CreateIoQueue 會傳回下列其中一個值:
傳回碼 | 描述 |
---|---|
|
已成功建立 I/O 佇列。 |
|
I/O 佇列是以下列其中一種方式設定:
|
CreateIoQueue 也可能傳回其他 HRESULT 值。
備註
驅動程式為 pCallbackInterface 參數提供的 IUnknown 介面可以支援數個佇列回呼函式。 架構會在提供的 IUnknown 介面上多次呼叫 QueryInterface 方法,以擷取驅動程式支援的介面方法。 當應用程式執行與支援介面方法相關的動作 (例如 I/O 讀取要求) 時,架構會呼叫方法 (,例如 IQueueCallbackRead::OnRead 方法) 通知驅動程式。 架構會針對下列介面呼叫 QueryInterface :
IQueueCallbackDefaultIoHandler
當驅動程式針對 CreateIoQueue的 DispatchType 參數傳遞 WdfIoQueueDispatchSespatchSequential 或 WdfIoQueueDispatchParallel 來建立非受控佇列時,CreateIoQueue 只有在驅動程式的佇列回呼物件至少實作上述其中一個介面時,才能傳回S_OK,並指出透過 pCallbackInterface 指向的 IUnknown 介面支援這類介面。
當驅動程式傳遞 WdfIoQueueDispatchManual for DispatchType 來建立手動佇列時,只有在驅動程式的佇列回呼物件未實作或指出支援上述任何回呼介面時, CreateIoQueue 才能傳回S_OK。 如需驅動程式回呼對象的詳細資訊,請參閱 建立回呼物件。
架構也會在提供的 IUnknown 介面上呼叫 QueryInterface,以判斷驅動程式是否支援下列任何介面:
架構也會在提供的 IUnknown 介面上呼叫 QueryInterface,以判斷驅動程式是否支援 IQueueCallbackStateChange 介面。 驅動程式的佇列回呼物件可以選擇性地實作,並指出僅支援手動佇列的 IQueueCallbackStateChange 。 驅動程式的佇列回呼物件不得實作並指出循序或平行佇列的 IQueueCallbackStateChange 支援。
範例
如需如何使用 CreateIoQueue 方法的程式代碼範例,請參閱 IWDFDriver::CreateDevice。
規格需求
需求 | 值 |
---|---|
終止支援 | 在 UMDF 2.0 和更新版本中無法使用。 |
目標平台 | 桌面 |
最低UMDF版本 | 1.5 |
標頭 | wudfddi.h (包含 Wudfddi.h) |
Dll | WUDFx.dll |