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。
如果微型端口驱动程序的网络适配器不支持特定的唤醒事件,微型端口驱动程序应指示 NdisDeviceStateUnspecified 的 NDIS_DEVICE_POWER_STATE 值,NDIS_PM_WAKE_UP_CAPABILITIES 结构中的唤醒事件。
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) |