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 開始提供。 |
目標平台 | Universal |
標頭 | 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) |