IRP_MN_STOP_DEVICE

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

0x04

主代码

IRP_MJ_PNP

发送时

PnP 管理器发送此 IRP 以停止设备,以便它可以重新配置设备的硬件资源。

在 Windows 2000 及更高版本中,仅当之前的 IRP_MN_QUERY_STOP_DEVICE 成功完成时,PnP 管理器才会发送此 IRP。

在 Windows 98/Me 上,当禁用设备以及设备堆栈失败 IRP_MN_START_DEVICE 请求时,PnP 管理器还会发送此 IRP。 如果启动失败,PnP 管理器会发送此 IRP,而无需前面的 IRP_MN_QUERY_STOP_DEVICE 请求。

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

输入参数

输出参数

I/O 状态块

驱动程序必须将 Irp-IoStatus.Status> 设置为 STATUS_SUCCESS。

Operation

此 IRP 首先由设备堆栈顶部的驱动程序处理,然后向下传递到堆栈中的每个较低驱动程序。

为了响应此 IRP,Windows 2000 及更高版本的驱动程序会停止设备并释放设备使用的任何硬件资源,例如 I/O 端口和中断。

在 Windows 2000 及更高版本中,停止 IRP 仅用于释放设备的硬件资源,以便可以重新配置它们。 重新配置资源后,设备将重启。 停止 IRP 不是删除 IRP 的前兆。 有关将 PnP IRP 发送到设备的顺序的详细信息,请参阅即插即用

在 Windows 98/Me 上,在启动失败后以及禁用设备时,也会使用停止 IRP。 在这些操作系统上运行的 WDM 驱动程序应停止设备、使任何传入 I/O 失败,并禁用和取消注册任何用户模式接口。

驱动程序不得使此 IRP 失败。 如果驱动程序无法释放设备的硬件资源,则必须使上述查询停止 IRP 失败。

有关处理停止 IRP 的详细信息,请参阅停止 设备

发送此 IRP

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

要求

标头

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

另请参阅

IRP_MN_QUERY_STOP_DEVICE

IRP_MN_START_DEVICE

IoSetDeviceInterfaceState

IoRegisterDeviceInterface