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
當驅動程式傳遞 WdfIoQueueDispatchSequential 或 WdfIoQueueDispatchParallel,CreateIoQueue 的 DispatchType 參數來建立非受控佇列時, CreateIoQueue 只有在驅動程式的佇列回呼物件至少實作上述其中一個介面,並透過 pCallbackInterface 指向的 IUnknown 介面表示支援這類介面時,才能傳回S_OK。
當驅動程式傳遞 WdfIoQueueDispatchManualDispatchType 以建立手動佇列時,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 |