警告
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) 不是佇列回呼函式。 因此,它們不會同步處理。