指定回呼同步處理模式
警告
UMDF 2 是最新版的 UMDF,並取代 UMDF 1。 所有新的 UMDF 驅動程式都應該使用 UMDF 2 撰寫。 未將新功能新增至 UMDF 1,且較新版本的WINDOWS 10上,UMDF 1 的支援有限。 通用 Windows 驅動程式必須使用 UMDF 2。
封存的 UMDF 1 範例可在Windows 11 22H2 - 2022 年 5 月驅動程式範例更新中找到。
如需詳細資訊,請參閱使用 UMDF 消費者入門。
驅動程式可以指定架構如何呼叫其回呼函式。 驅動程式會先指定裝置的同步處理 (或鎖定) 模式,再呼叫 IWDFDriver::CreateDevice 方法來建立 裝置的裝置物件 。 若要指定同步處理模式,驅動程式應該呼叫 IWDFDeviceInitialize::SetLockingConstraint 方法。 驅動程式會在呼叫IDriverEntry::OnDeviceAdd方法以將裝置新增至系統時,接收IWDFDeviceInitialize介面的指標。
驅動程式可以在IWDFDeviceInitialize::SetLockingConstraint的LockType參數中,從 WDF_CALLBACK_CONSTRAINT 列舉類型指定下列其中一個值,以識別鎖定模式。 指定的條件約束 (或鎖定) 類型取決於硬體裝置可惡意探索的平行處理原則,以及驅動程式可以處理多少。
值 | 意義 |
---|---|
無 (0) |
表示驅動程式中沒有任何回呼函式已同步處理。 |
WdfDeviceLevel (1) |
指出驅動程式中的所有佇列回呼函式都會同步處理。 |
注意 如果驅動程式未呼叫 IWDFDeviceInitialize::SetLockingConstraint 來指定值,架構會將此屬性的預設值設定為 WdfDeviceLevel。
條件約束僅適用于佇列回呼函式,不適用於 隨插即用 (PnP) 和電源管理回呼函式。 佇列回呼函式包含下列各項:
自動分派回呼函式,例如 IQueueCallbackRead::OnRead 和 IQueueCallbackWrite::OnWrite。 如需詳細資訊,請參閱 I/O 佇列事件回呼函式。
佇列狀態變更回呼函式,例如 IQueueCallbackStateChange::OnStateChange。
要求取消回呼函式,例如 IRequestCallbackCancel::OnCancel。
檔案清除和關閉回呼函式,例如 IFileCallbackCleanup::OnCleanupFile 和 IFileCallbackClose::OnCloseFile。
要求完成回呼函式 (IRequestCallbackRequestCompletion::OnCompletion) 不是佇列回呼函式。 因此,它們不會同步處理。