PnP 驱动程序设计指导原则
即插即用提供:
自动和动态识别已安装的硬件
硬件资源分配 (重新分配)
加载适当的驱动程序
驱动程序与 PnP 系统交互的接口
驱动程序和应用程序了解硬件环境中更改的机制
若要支持 PnP,驱动程序必须遵循以下准则:
它必须包含 DispatchPnP 例程。
此调度例程必须 IRP_MJ_PNP 请求和关联的次要函数代码。 有关详细信息,请参阅 DispatchPnP 例程。
它不得搜索硬件。
PnP 管理器负责确定硬件设备是否存在。 当 PnP 管理器检测到设备时,它会通过调用驱动程序的 AddDevice 例程来通知 驱动程序。 在系统启动时,或者用户向正在运行的系统添加设备或从正在运行的系统中删除设备时,都可以检测到硬件。
它不得分配硬件资源。
PnP 驱动程序必须为 PnP 管理器提供设备可能使用的资源列表。 PnP 管理器负责将资源分配给每个设备,并通知驱动程序每个设备在发送请求时IRP_MN_START_DEVICE分配。 因此,驱动程序必须能够处理硬件资源的各种配置。
某些驱动程序不受系统提供的端口或类驱动程序的 PnP 和电源管理的详细信息影响。 例如,SCSI 端口驱动程序使 SCSI 微型端口驱动程序与电源和 PnP 系统的许多细节隔离,因此 SCSI 微型端口驱动程序不需要直接处理电源和 PnP IRP。 对于此类驱动程序,请参阅特定于驱动程序的文档,详细了解所需的 PnP 支持。