共用方式為


使用者拔除裝置 (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 驅動程式的意外移除順序流程圖。