初始化中间驱动程序以处理 PnP 和电源管理事件

若要处理即插即用 (PnP) 和电源管理事件,NDIS 中间驱动程序必须执行以下操作:

  • 当 NDIS 调用中间驱动程序的 ProtocolBindAdapterEx 函数时, BindParameters 参数指向包含基础微型端口适配器功能的 NDIS_PM_CAPABILITIES 结构。 电源管理功能在以下成员之一中报告:

    • PowerManagementCapabilities

      对于 NDIS 6.0 和 NDIS 6.1 中间驱动程序,此成员包含NDIS_PNP_CAPABILITIES结构中的电源管理功能。 有关此结构的详细信息,请参阅 OID_PNP_CAPABILITIES

      注意 对于 NDIS 6.20 及更高版本的中间驱动程序, PowerManagementCapabilities 成员设置为 NULLPowerManagementCapabilitiesEx 成员中报告电源管理功能。

    • PowerManagementCapabilitiesEx

      对于 NDIS 6.20 及更高版本的中间驱动程序,此成员包含 NDIS_PM_CAPABILITIES 结构中的电源管理功能。

      注意 对于 NDIS 6.0 和 NDIS 6.1 中间驱动程序, PowerManagementCapabilitiesEx 成员设置为 NULL ,电源管理功能在 PowerManagementCapabilities 成员中报告。

注意 如果基础微型端口适配器不支持电源管理事件, 则 PowerManagementCapabilitiesPowerManagementCapabilitiesEx 成员将设置为 NULL

  • 当 NDIS 为 NDIS 中间驱动程序支持的每个虚拟微型端口调用 MiniportInitializeEx 时,驱动程序会通过以下方式调用 NdisMSetMiniportAttributes 来报告其电源管理功能:

    1. 根据 NDIS 中间驱动程序的版本,电源管理功能在 NDIS 6.0 的 PowerManagementCapabilities 成员 (和 NDIS 6.1 中间驱动程序) 或 PowerManagementCapabilitiesEx 成员 (中报告,适用于 NDIS 6.20 及更高版本的中间驱动程序) NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES。 如果 NDIS_BIND_PARAMETERS 结构的 PowerManagementCapabilitiesPowerManagementCapabilitiesEx 成员不为 NULL,则中间驱动程序必须执行以下操作:

      • 保存 PowerManagementCapabilitiesMinMagicPacketWakeUpMinPatternWakeUpMinLinkChangeWakeUp 成员的原始值 (NDIS 6.0 和 NDIS 6.1) 或 PowerManagementCapabilitiesEx (NDIS 6.20 及更高版本) 成员。

      • 通过将 MinMagicPacketWakeUpMinPatternWakeUpMinLinkChangeWakeUp 成员设置为 NdisDeviceStateUnspecified 来禁用电源管理功能。

      • 在调用 NdisMSetMiniportAttributes 时,将修改后的 NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES 结构的地址作为 MiniportAttributes 参数传递。

    2. 中间驱动程序必须在 NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES 结构的 AttributeFlags 成员中设置 NDIS_MINIPORT_ATTRIBUTES_NO_HALT_ON_SUSPEND 标志。 驱动程序必须在调用 NdisMSetMiniportAttributes 时将此结构的地址作为 MiniportAttributes 参数传递。

    有关 NDIS 中间驱动程序的初始化要求的详细信息,请参阅 初始化虚拟微型端口