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 之前,驱动程序必须释放驱动程序在其设备扩展中为其提供存储的某些资源。 例如,如果驱动程序将指向其中断对象的指针 () 存储在设备扩展中,则必须在调用 IoDeleteDevice 之前调用 IoDisconnectInterrupt。
对于给定的设备对象,驱动程序只能调用 IoDeleteDevice 一次。
当驱动程序调用 IoDeleteDevice 时,如果没有对目标设备对象的未完成引用,I/O 管理器将删除该对象。 但是,如果保留任何未完成的引用,I/O 管理器会将设备对象标记为“删除挂起”,并在释放引用时删除设备对象。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从 Windows 2000 开始可用。 |
目标平台 | 通用 |
标头 | wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
DDI 符合性规则 | DeleteDevice (wdm) 、 HwStorPortProhibitedDDI (storport) 、 IrqlIoApcLte (wdm) 、 PnpSurpriseRemove (wdm) 、 RemoveLockCheck (wdm) |