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 支持的详细信息。