Share via


使用者卸載裝置 (UMDF 1)

警告

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 消費者入門

當系統執行時,使用者可以使用下列兩種方式之一移除裝置: 依序移除,這表示使用者會通知系統裝置即將移除 (例如,使用 [解壓縮] 或 [退出硬體] 程式) ;或意外 移除,這表示使用者不需通知系統即可卸載裝置。 例如,如果匯流排支援意外移除 (USB) ,則裝置的驅動程式必須能夠處理裝置的突然跳動。

依序移除
使用者會使用系統的 [解壓縮] 或 [退出硬體] 程式、使用裝置管理員停用裝置,或藉由推送可退出的裝置退出按鈕來要求移除裝置。 架構可讓裝置移除或停用,除非驅動程式已提供 IPnpCallback::OnQueryRemove 回呼函式,而且回呼函式已經移除。

下圖顯示關閉電源和移除中的 UMDF 回呼順序。 順序會從圖形頂端開始,其裝置處於工作電源狀態, (D0) 。

顯示 UMDF 驅動程式的裝置關閉電源和順序移除順序的流程圖。

意外移除
在此案例中,使用者意外地卸載裝置。 在意外移除序列中,UMDF 會呼叫 IPnpCallback::OnSurpriseRemoval 回呼,以通知驅動程式裝置意外移除。 此回呼不保證會以任何特定順序與移除序列中的其他回呼一起發生。

一般而言,驅動程式應該避免存取移除路徑中的硬體。 如果嘗試存取硬體的嘗試無限期等候,則反映器會逾時。 下圖顯示 UMDF 驅動程式的意外移除順序。

顯示 UMDF 驅動程式意外移除順序的流程圖。