IoDeleteDevice 函式 (wdm.h)

IoDeleteDevice 例程會從系統移除裝置物件,例如,從系統移除基礎裝置時。

語法

void IoDeleteDevice(
  [in] PDEVICE_OBJECT DeviceObject
);

參數

[in] DeviceObject

要刪除之裝置物件的指標。

傳回值

沒有

言論

處理 PnP IRP_MN_REMOVE_DEVICE 要求時,PnP 驅動程式會呼叫 IoDeleteDevice,以刪除任何相關聯的裝置物件。 如需詳細資訊,請參閱 處理IRP_MN_REMOVE_DEVICE要求

舊版驅動程式應該在卸除或 DriverEntry 例程遇到嚴重初始化錯誤時呼叫此例程,例如無法正確初始化實體裝置。 當驅動程式動態重新設定其裝置時,也會呼叫此例程。 例如,呼叫以重新分割磁碟的磁碟驅動器會呼叫 IoDeleteDevice,以卸載代表要取代之分割區的裝置物件。

驅動程式必須先釋放驅動程式在其裝置擴充功能中提供記憶體的特定資源,才能呼叫 IoDeleteDevice。 例如,如果驅動程式將其中斷物件的指標儲存在裝置擴充功能中,它必須先呼叫 IoDisconnectInterrupt,再呼叫 ioDeleteDevice

驅動程式只能針對指定的裝置物件呼叫 IoDeleteDevice 一次。

當驅動程式呼叫 IoDeleteDevice時,如果沒有未處理的參考,I/O 管理員就會刪除目標裝置物件。 不過,如果有任何未完成的參考仍然存在,I/O 管理員會將裝置對象標示為「刪除擱置中」,並在釋放參考時刪除裝置物件。

要求

要求 價值
最低支援的用戶端 從 Windows 2000 開始提供。
目標平臺 普遍
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
連結庫 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL
DDI 合規性規則 DeleteDevice(wdm)HwStorPortProhibitedDIS(storport)IrqlIoApcLte(wdm)PnpSurpriseRemove(wdm)RemoveLockCheck(wdm)

另請參閱

IoCreateDevice

IoDisconnectInterrupt