IRP_MN_REMOVE_DEVICE

所有 PnP 驅動程式都必須處理此 IRP。

0x02

主要程式碼

IRP_MJ_PNP

傳送時

PnP 管理員會使用此 IRP 指示驅動程式移除裝置的軟體標記法 (裝置物件,依此類推) 。 PnP 管理員會在裝置以 (依序方式移除時傳送此 IRP,例如,由使用者) 取消或退出硬體程式中的使用者起始、意外地 (使用者從其位置提取裝置,而不需事先警告) ,或當使用者要求更新驅動程式 () 時。

在 Windows 2000 和更新版本的系統上,如果裝置堆疊中的其中一個驅動程式失敗,則 PnP 管理員也會傳送此 IRP,以 IRP_MN_START_DEVICE要求裝置

若要移除裝置,PnP 管理員會在移除 IRP 之前傳送 IRP_MN_QUERY_REMOVE_DEVICE 。 在此情況下,當移除 IRP 送達時,裝置處於移除擱置狀態。 針對 Microsoft Windows 2000 或更新版本上的意外裝置移除,PnP 管理員會在移除 IRP 之前傳送 IRP_MN_SURPRISE_REMOVAL 。 在此情況下,當移除 IRP 送達時,裝置處於意外移除狀態。 驅動程式也可以在裝置啟動之前收到移除的 IRP。 在此情況下,當 IRP 送達時,裝置處於非啟動狀態。

PnP 管理員會在 IRQL PASSIVE_LEVEL在系統執行緒的內容中傳送此 IRP。

輸入參數

輸出參數

I/O 狀態欄塊

驅動程式必須將 Irp-IoStatus.Status > 設定為 STATUS_SUCCESS。 驅動程式不得將此 IRP 失敗。

作業

此 IRP 會先由裝置堆疊頂端的驅動程式處理,然後再由堆疊中的每個較低驅動程式處理。

為了回應此 IRP,驅動程式會執行這類工作,例如關閉裝置電源、移除裝置的軟體標記法 (裝置物件等等) ,以及釋放裝置的任何資源。

如需處理此 IRP 的詳細資訊,請參閱 處理IRP_MN_REMOVE_DEVICE要求。 如需支援裝置移除的一般資訊,請參閱 移除裝置

傳送此 IRP

保留供系統使用。 驅動程式不得傳送此 IRP。

如果匯流排驅動程式偵測到其子裝置的一 (或多個) (子 PDO) 已從電腦實際移除,則匯流排驅動程式會呼叫 IoInvalidateDeviceRelations 向 PnP 管理員報告變更。 接著,PnP 管理員會針對任何已消失的裝置傳送移除 IRP。

規格需求

標頭

Wdm.h (包括 Wdm.h、Ntddk.h 或 Ntifs.h)

另請參閱

IoInvalidateDeviceRelations

IoRegisterPlugPlayNotification

IRP_MN_CANCEL_REMOVE_DEVICE

IRP_MN_QUERY_REMOVE_DEVICE

IRP_MN_SURPRISE_REMOVAL