OID_PNP_CAPABILITIES
OID_PNP_CAPABILITIES OID 请求微型端口驱动程序返回其网络适配器的唤醒功能,或请求中间驱动程序返回中间驱动程序的唤醒功能。 唤醒功能的格式设置为 NDIS_PNP_CAPABILITIES 结构,定义如下:
typedef struct _NDIS_PNP_CAPABILITIES {
ULONG Flags;
NDIS_PM_WAKE_UP_CAPABILITIES WakeUpCapabilities;
} NDIS_PNP_CAPABILITIES, *PNDIS_PNP_CAPABILITIES;
此结构的成员包含以下信息:
如果基础微型端口驱动程序支持一个或多个唤醒功能,则 NDIS 将设置此标志。 协议驱动程序可以测试此标志,以确定基础微型端口驱动程序是否具有唤醒功能。 微型端口驱动程序不应访问此标志。
WakeUpCapabilities
指定微型端口驱动程序网络适配器的唤醒功能的 NDIS_PM_WAKE_UP_CAPABILITIES 结构。 NDIS_PM_WAKE_UP_CAPABILITIES结构定义如下:
typedef struct _NDIS_PM_WAKE_UP_CAPABILITIES {
NDIS_DEVICE_POWER_STATE MinMagicPacketWakeUp;
NDIS_DEVICE_POWER_STATE MinPatternWakeUp;
NDIS_DEVICE_POWER_STATE MinLinkChangeWakeUp;
} NDIS_PM_WAKE_UP_CAPABILITIES, *PNDIS_PM_WAKE_UP_CAPABILITIES;
此结构的成员包含以下信息:
MinMagicPacketWakeUp
指定最小设备电源状态,微型端口驱动程序的网络适配器可在收到神奇数据包时发出唤醒信号。 (幻数据包 是包含接收网络适配器以太网地址的 16 个连续副本的数据包。) 设备电源状态指定为以下 NDIS_DEVICE_POWER_STATE 值之一:
NdisDeviceStateUnspecified
网络适配器不支持 magic-packet 唤醒。
NdisDeviceStateD0
网络适配器可以从设备电源状态 D0 发出幻数据包唤醒信号。 由于 D0 是完全供电状态,因此这不会导致唤醒,但可用作运行时事件。
NdisDeviceStateD1
网络适配器可以从设备电源状态 D1 和 D0 发出幻数据包唤醒信号。
NdisDeviceStateD2
网络适配器可以从设备状态 D2、D1 和 D0 发出幻数据包唤醒信号。
NdisDeviceStateD3
网络适配器可以从设备电源状态 D3、D2、D1 和 D0 发出幻数据包唤醒信号。
MinPatternWakeUp
指定最低设备电源状态,微型端口驱动程序的网络适配器可以在收到包含协议驱动程序指定的模式的网络帧时发出唤醒事件信号。 电源状态指定为以下 NDIS_DEVICE_POWER_STATE 值之一:
NdisDeviceStateUnspecified
网络适配器不支持模式匹配唤醒。
NdisDeviceStateD0
网络适配器可以从设备电源状态 D0 发出模式匹配唤醒信号。 由于 D0 是完全供电状态,因此这不会导致唤醒,但可用作运行时事件。
NdisDeviceStateD1
网络适配器可以从设备电源状态 D1 和 D0 发出模式匹配唤醒信号。
NdisDeviceStateD2
网络适配器可以从设备电源状态 D2、D1 和 D0 发出模式匹配唤醒信号。
NdisDeviceStateD3
网络适配器可以从设备电源状态 D3、D2、D1 和 D0 发出模式匹配唤醒信号。
MinLinkChangeWakeUp
保留。 NDIS 忽略此成员。
对于微型端口驱动程序
微型端口驱动程序完成初始化后,协议驱动程序和 NDIS 都可以使用此 OID 查询微型端口驱动程序,以确定以下内容:
微型端口驱动程序是否可识别 PM。
网络适配器指示网络唤醒事件的功能。
如果微型端口驱动程序返回 NDIS_STATUS_SUCCESS OID_PNP_CAPABILITIES查询,则 NDIS 会将微型端口驱动程序视为 PM 感知。 如果微型端口驱动程序返回 NDIS_STATUS_NOT_SUPPORTED,NDIS 会将微型端口驱动程序视为不识别 PM 的旧微型端口驱动程序。
调用 NdisMSetAttributesEx 时,不支持唤醒功能但可以在电源状态转换中保存和还原其网络适配器状态的微型端口驱动程序可以设置 NDIS_ATTRIBUTE_NO_HALT_ON_SUSPEND 标志。 设置此标志可防止 NDIS 在系统转换为低功耗 (睡眠) 状态之前调用驱动程序的 MiniportHalt 函数。 但是,如果微型端口驱动程序返回 NDIS_STATUS_NOT_SUPPORTED 以响应查询OID_PNP_CAPABILITIES,则 NDIS 会忽略 NDIS_ATTRIBUTE_NO_HALT_ON_SUSPEND 标志,并在系统进入低功耗状态时停止网络适配器。
微型端口驱动程序的网络适配器可以支持唤醒事件的任意组合,包括无唤醒事件。 即使微型端口驱动程序无法发出唤醒事件信号,微型端口驱动程序仍可支持电源管理。 在这种情况下,除了OID_PNP_CAPABILITIES以外,微型端口驱动程序支持的唯一电源管理 OID 是 OID_PNP_QUERY_POWER 和 OID_PNP_SET_POWER。
如果微型端口驱动程序的网络适配器不支持特定的唤醒事件,则微型端口驱动程序应指示 NDIS_PM_WAKE_UP_CAPABILITIES 结构中唤醒事件的 NdisDeviceStateUnspecifiedNDIS_DEVICE_POWER_STATE 值。
OID_PNP_CAPABILITIES仅指示微型端口驱动程序网络适配器的唤醒功能;它不启用此类功能。 OID_PNP_ENABLE_WAKE_UP 用于启用网络适配器的唤醒功能。
对于中间驱动程序
如果基础网络适配器是 PM 感知的,则中间驱动程序应将 NDIS_STATUS_SUCCESS 返回到OID_PNP_CAPABILITIES查询。 在此 OID 返回 的NDIS_PM_WAKE_UP_CAPABILITIES 结构中,中间驱动程序应为每个唤醒功能指定设备电源状态 NdisDeviceStateUnspecified , ( MinMagicPacketWakeUp 或 MinPatternWakeUp) 。 此类响应指示中间驱动程序可识别 PM,但不管理物理设备。
如果基础网络适配器不感知 PM,则中间驱动程序应将 NDIS_STATUS_NOT_SUPPORTED 返回到OID_PNP_CAPABILITIES查询。
注意 有关 NDIS 6.20 及更高版本微型端口驱动程序如何报告电源管理功能的信息,请参阅 报告电源管理功能。
要求
版本 |
在 NDIS 6.0 和 NDIS 6.1 中受支持。 对于 NDIS 6.20 及更高版本,请改用 OID_PM_CURRENT_CAPABILITIES 。 |
标头 |
Ntddndis.h (包括 Ndis.h) |