OID_PNP_SET_POWER

OID_PNP_SET_POWER OID 通知微型端口驱动程序其基础网络适配器将转换为 InformationBuffer 中指定的设备电源状态。 设备电源状态指定为以下 NDIS_DEVICE_POWER_STATE 值之一:

  • NdisDeviceStateD0
  • NdisDeviceStateD1
  • NdisDeviceStateD2
  • NdisDeviceStateD3

OID_PNP_SET_POWER请求前面可能有 OID_PNP_QUERY_POWER 请求。

从 NDIS 6.30 开始,如果满足以下条件,则 NDIS 不会在电源状态转换期间暂停和重启驱动程序堆栈中的 NDIS 驱动程序:

  • 基础微型端口驱动程序在 NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES 结构中设置 NDIS_MINIPORT_ATTRIBUTES_NO_PAUSE_ON_SUSPEND 标志。 驱动程序在调用 NdisMSetMiniportAttributes 函数时传递指向此结构的指针。

  • 附加到微型端口驱动程序的所有过度筛选器驱动程序都支持 NDIS 6.30 或更高版本的 NDIS。

  • 绑定到微型端口驱动程序的所有过度协议驱动程序都支持 NDIS 6.30 或更高版本的 NDIS。

转换为Low-Power状态 (D1-D3)

当微型端口驱动程序处理OID_PNP_SET_POWER的一组请求以转换为低功耗状态时,它必须执行以下操作:

支持 NDIS 6.30 及更高版本的 NDIS 的微型端口驱动程序还必须执行以下操作:

在网络适配器转换为 D3 状态之前,微型端口驱动程序必须通过执行以下任务关闭微型端口驱动程序控制下的所有内容:

  • 在网络适配器上禁用中断和 DMA 引擎。

  • 停止网络适配器上的接收引擎。

  • 请勿解除分配或修改与挂起的接收指示关联的接收描述符和数据包缓冲区。

  • 取消所有 NDIS 计时器。

注意 在总线驱动程序将网络适配器转换为 D3 状态后,微型端口驱动程序无法访问网络适配器。

转换为 Full-Power 状态 (D0)

当微型端口驱动程序处理OID_PNP_SET_POWER的一组请求以转换为全功率状态时,它必须将网络适配器的接收引擎还原到适配器转换为低功耗状态之前接收引擎处于的相同状态。

注意 微型端口驱动程序不得访问或更改与挂起接收指示关联的任何接收缓冲区。

仅当 NDIS 在转换为低功耗状态之前调用驱动程序的 MiniportPause 函数时,才在转换为全功率状态后调用微型端口驱动程序的 MiniportRestart 函数。

注意 中间驱动程序必须始终 将NDIS_STATUS_SUCCESS 返回到OID_PNP_SET_POWER查询。 中间驱动程序绝不应将OID_PNP_SET_POWER请求传播到基础微型端口驱动程序。

返回状态代码

微型端口驱动程序的 MiniportOidRequest 函数为此请求返回以下值之一:

术语 说明

NDIS_STATUS_SUCCESS

微型端口驱动程序成功完成请求。

NDIS_STATUS_PENDING

微型端口驱动程序将以异步方式完成请求。 微型端口驱动程序完成所有处理后,必须通过调用 NdisMOidRequestComplete 函数,传递 Status 参数的NDIS_STATUS_SUCCESS来成功请求。

NDIS_STATUS_NOT_ACCEPTED

正在重置微型端口驱动程序。

要求

版本

NDIS 5.1、NDIS 6.0 及更高版本支持。

标头

Ntddndis.h (包括 Ndis.h)

另请参阅


MiniportInitializeEx

MiniportPause

MiniportRestart

MiniportReturnNetBufferLists

MiniportSendNetBufferLists

NDIS_DEVICE_POWER_STATE

NdisMIndicateReceiveNetBufferLists

NdisMSendNetBufferListsComplete

NET_BUFFER_LIST