共用方式為


儲存體類別驅動程式的 RemoveDevice 常式

當裝置即將移除時,PnP 管理員會先使用 PnP 查詢移除要求呼叫類別驅動程式的 DispatchPnP 常式, (IRP_MJ_PNP搭配 IRP_MN_QUERY_REMOVE_DEVICE。 在下列任一情況下,儲存體類別驅動程式應該會失敗查詢移除要求:

  • 裝置包含系統分頁檔案或休眠檔案。

  • 驅動程式正在執行長時間的作業,例如,倒轉或格式化磁帶) ,不應取消 (。

  • 裝置有未完成的控制碼, (CREATEs) 。

如果裝置宣告損毀傾印,儲存體類別驅動程式也可能失敗查詢移除要求,因為移除這類裝置會停用損毀傾印。

如果儲存體類別驅動程式傳回STATUS_SUCCESS以回應查詢移除要求,PnP 管理員接著會使用 PnP 移除要求呼叫類別驅動程式的 DispatchPnP 常式, (IRP_MJ_PNP搭配 IRP_MN_REMOVE_DEVICE) 。 儲存體類別驅動程式的 DispatchPnP 常式會呼叫內部 RemoveDevice 常式,或內嵌實作相同的功能。

儲存體類別驅動程式的 RemoveDevice 常式必須執行下列動作:

  • 釋放驅動程式所配置的任何未處理資源,例如記憶體或事件。

  • 刪除驅動程式所建立的符號連結。

  • (FDO) 刪除裝置物件。

  • 將要求轉送至下一個較低的驅動程式。

例如,如果儲存體類別驅動程式在啟動時建立 PDO (,表示分割媒體裝置上的分割區) ,當 PnP 管理員將移除要求傳送至儲存體類別驅動程式時,就已經移除這類 PDO。

即使在刪除裝置物件之後,如果裝置物件有非零的參考計數,裝置物件仍會保存在系統中,直到其參考計數達到零為止,然後以無訊息方式消失。 儲存類別驅動程式在刪除裝置物件之後,不得嘗試使用裝置物件指標。

如需處理移除要求的詳細資訊,請參閱 移除裝置