IRP_MN_CANCEL_REMOVE_DEVICE

所有 PnP 驱动程序都必须处理此 IRP。

0x03

主代码

IRP_MJ_PNP

发送时

PnP 管理器发送此 IRP,通知设备的驱动程序不会删除该设备。

PnP 管理器在 IRQL PASSIVE_LEVEL系统线程上下文中发送此 IRP。

输入参数

输出参数

I/O 状态块

驱动程序必须将 Irp-IoStatus.Status> 设置为此 IRP 的STATUS_SUCCESS。 如果驱动程序未通过此 IRP,设备将处于不一致状态。

Operation

此 IRP 必须先由设备的父总线驱动程序处理,然后由设备堆栈中的每个更高级别的驱动程序处理。

为了响应此 IRP,驱动程序会将设备返回到接收 IRP_MN_QUERY_REMOVE_DEVICE 请求之前的状态。

如果驱动程序收到此 IRP 时设备已启动,驱动程序只需将状态设置为成功并将 IRP 传递给下一个驱动程序 (或完成 IRP(如果驱动程序是总线驱动程序) )。 对于此类取消-删除 IRP,函数或筛选器驱动程序无需设置完成例程。 设备可能未处于删除挂起状态,例如,驱动程序在上 一IRP_MN_QUERY_REMOVE_DEVICE失败。

IRP_MN_CANCEL_REMOVE_DEVICE请求完成后,PnP 管理器使用GUID_TARGET_DEVICE_REMOVE_CANCELLED调用任何 EventCategoryTargetDeviceChange 通知回调。 此类回调是通过调用 IoRegisterPlugPlayNotification 在设备上注册的。 PnP 管理器还会通过调用 RegisterDeviceNotification 调用在设备上注册通知的任何用户模式组件。

如果文件系统装载在设备上,则必须撤消为响应查询删除通知而执行的任何操作。

有关处理删除 IRP 的详细信息和处理所有即插即用次要 IRP 的一般规则,请参阅即插即用。

发送此 IRP

预留给系统使用。 驱动程序不得发送此 IRP。

要求

标头

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

另请参阅

IoRegisterPlugPlayNotification

IRP_MN_QUERY_REMOVE_DEVICE