启动设备

PnP 管理器向驱动程序发送 IRP_MN_START_DEVICE 请求,以启动新枚举的设备或重启已停止的现有设备以重新平衡资源。

函数和筛选器驱动程序必须设置 IoCompletion 例程,将 IRP_MN_START_DEVICE 请求向下传递设备堆栈,并推迟其启动操作,直到所有较低的驱动程序完成 IRP。 父总线驱动程序(设备堆栈中的底部驱动程序)必须是第一个在设备上执行启动操作的驱动程序,然后其他驱动程序才能访问该设备。

为了确保启动操作的正确排序,Windows 2000 及更高版本的 Windows 上的 PnP 管理器会推迟公开设备接口,并阻止为设备创建请求,直到启动 IRP 成功。

如果设备的驱动程序未通过 IRP_MN_START_DEVICE 请求,PnP 管理器会将 IRP_MN_REMOVE_DEVICE 请求发送到 Windows 2000 及更高版本的 Windows) 上的设备堆栈 (。 为了响应此 IRP,如果设备驱动程序成功启动 IRP) 、撤消 AddDevice 操作并从设备堆栈分离,则 (撤消其启动操作。 PnP 管理器将此类设备标记为“启动失败”。

本部分涵盖了以下主题:

在函数驱动程序中启动设备

在筛选器驱动程序中启动设备

在总线驱动程序中启动设备

启动设备的设计指导原则