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)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL
DDI 符合性规则 DeleteDevice(wdm)HwStorPortProhibitedDDIs(storport)IrqlIoApcLte(wdm)PnpSurpriseRemove(wdm)RemoveLockCheck(wdm)

另请参阅

IoCreateDevice

IoDisconnectInterrupt