初始化中间驱动程序以处理 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 成员设置为 NULL , PowerManagementCapabilitiesEx 成员中报告电源管理功能。
PowerManagementCapabilitiesEx
对于 NDIS 6.20 及更高版本的中间驱动程序,此成员包含 NDIS_PM_CAPABILITIES 结构中的电源管理功能。
注意 对于 NDIS 6.0 和 NDIS 6.1 中间驱动程序, PowerManagementCapabilitiesEx 成员设置为 NULL ,电源管理功能在 PowerManagementCapabilities 成员中报告。
注意 如果基础微型端口适配器不支持电源管理事件, 则 PowerManagementCapabilities 和 PowerManagementCapabilitiesEx 成员将设置为 NULL。
当 NDIS 为 NDIS 中间驱动程序支持的每个虚拟微型端口调用 MiniportInitializeEx 时,驱动程序会通过以下方式调用 NdisMSetMiniportAttributes 来报告其电源管理功能:
根据 NDIS 中间驱动程序的版本,电源管理功能在 NDIS 6.0 的 PowerManagementCapabilities 成员 (和 NDIS 6.1 中间驱动程序) 或 PowerManagementCapabilitiesEx 成员 (中报告,适用于 NDIS 6.20 及更高版本的中间驱动程序) NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES。 如果 NDIS_BIND_PARAMETERS 结构的 PowerManagementCapabilities 或 PowerManagementCapabilitiesEx 成员不为 NULL,则中间驱动程序必须执行以下操作:
保存 PowerManagementCapabilities 的 MinMagicPacketWakeUp、MinPatternWakeUp 和 MinLinkChangeWakeUp 成员的原始值 (NDIS 6.0 和 NDIS 6.1) 或 PowerManagementCapabilitiesEx (NDIS 6.20 及更高版本) 成员。
通过将 MinMagicPacketWakeUp、 MinPatternWakeUp 和 MinLinkChangeWakeUp 成员设置为 NdisDeviceStateUnspecified 来禁用电源管理功能。
在调用 NdisMSetMiniportAttributes 时,将修改后的 NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES 结构的地址作为 MiniportAttributes 参数传递。
中间驱动程序必须在 NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES 结构的 AttributeFlags 成员中设置 NDIS_MINIPORT_ATTRIBUTES_NO_HALT_ON_SUSPEND 标志。 驱动程序必须在调用 NdisMSetMiniportAttributes 时将此结构的地址作为 MiniportAttributes 参数传递。
有关 NDIS 中间驱动程序的初始化要求的详细信息,请参阅 初始化虚拟微型端口。