Snapdragon上Windows操作的现代(已连接)待机模式
现代待机的使用实例,以及实现方式和测试
针对Snapdragon上的Windows操作系统实施和测试现代待机模式
利用通过GitHub平台获得的两个Windows驱动程序示例和以下说明,您可以在Snapdragon平台上实施和测试现代待机模式。驱动程序示例需要对Snapdragon上的Windows操作系统进行修改,如下所示。
你可以在微软文档中的“什么是现代待机”中查找到更多的背景信息。
一、echosrv – Winsock内核(WSK)驱动程序
微软的Echo示例内核驱动程序使用Windows内核套接字。驱动程序监听输入的传输控制协议IPv4/IPv6请求,并将接收到的数据包返回。对GitHub平台版本的唯一修改是应用程序接口(PoSetSystemState),可以将系统从睡眠状态唤醒。
1. 在https://github.com/microsoft/Windows-driver-samples/tree/master/network/wsk/echosrv获取驱动程序。
2. 将以下各行添加到\network\wsk\echosrv\wsksmple.c:
二、ndisprot — 网络驱动接口标准协议驱动程序
(NIC), and also similar OIDs to query the power management capabilities, query the patterns and remove them if needed. The changes are necessary because when the NIC goes to lower power states (D2/D3), it listens for packets with particular, preconfigured patterns and drops all other packets.
通过对该驱动程序进行的修改,可以支持局域网唤醒(WOL)位图模式。该类修改包括利用OID_PM_ADD_WOL_PATTERN向网络接口卡(NIC)添加特定的位图模式,以及使用类似的对象标识符(oid)来查询功率管理功能,查询各种模式并在需要时将其删除。这些改变是必要的,因为当网络接口卡进入到低功耗状态(D2/D3)时,会监听带有特定预先配置模式的数据包,并丢弃所有其他数据包。1. 在https://github.com/microsoft/Windows-driver-samples/tree/master/network/ndis/ndisprot/6x获取驱动程序
2. 将以下各行添加到\network\ndis\ndisprot\6x\sys\ntdisp.c中的开关(功能码)语句中:
三、安装驱动程序
驱动程序并没有签名。如要安装驱动程序,则利用测试证书或测试签名对驱动程序签名。请确保禁用驱动程序签名强制执行。
1. 安装WSK驱动程序。
sc create echosrv type=kernel binpath=\echosrv.sy
2. 从以下位置下载ndisprot630.inf:https://github.com/Microsoft/Windows-driver-samples/tree/master/network/ndis/ndisprot/6x/sys/630
如要安装NDIS协议驱动程序,请转至“网络连接”,选择一个适配器并打开“属性”。单击“安装”,然后是“协议”,再然后是“添加”,最后是“拥有磁盘”。然后指向.inf和驱动程序的位置。选择NDIS协议驱动程序示例。
四、启动驱动程序
您可以选择通过修改.inf文件或使用以下命令,以自动启用驱动程序:
sc start echosrv
net start ndisprot
五、添加网络唤醒模式
1. protest.exe与NDIS驱动程序位于同一目录下。在PowerShell中,运行prottest-e列举设备识别号,如下所示。
2. 如要将网络唤醒位图模式添加至网络接口卡,则运行prottest –a。在下文示例中,prottest-a将位图模式添加到识别号为3的设备中。
无命令行参数的prottest将显示帮助。
prottest-q对当前指定的任何模式进行查询。
prottest-c返回所支持的网络唤醒数据包类型。
此时,echosrv正在监听40007端口的上传输控制协议数据包,并设置网络唤醒位图模式。当计算机处于睡眠模式时,与网络唤醒模式匹配的数据包可以将其唤醒。
3. 如要进行测试,使用PowerShell脚本在目标设备处于睡眠(S0低功率空闲已连接)模式时,通过远程设备向目标设备发送一个网络唤醒数据包和一个传输控制协议数据包。例如:Wakeup-Target -IPAddress "fe80::cd1d:936f:fcbf:2fc"
六、停止
1. 使用以下命令停止驱动程序:sc stop echosrv
2. 使用以下命令将ndisprot从网络接口卡适配器属性中卸载:sc delete echosrv
七、检查和排除故障
现代待机状态—使用远端设备检查目标设备的现代待机状态。
1. 确保两台设备可以进行通;例如,通过互相发送ping信号。
2. 确保目标设备处于现代(已连接)待机状态。目标设备不应处于S4(休眠)或S5(关机)模式。
3.在目标设备上运行Get-Service echosrv,以确保WSK驱动程序正在运行。
4. echosrv驱动程序对40007端口进行监听。在目标设备上运行以下命令,确认该端口上存在侦听套接字。
Get-NetTCPConnection -LocalPort 40007
prottest.exe — 如果prottest.exe没有运行,您可能需要安装Visual C++程序。
现代待机支持 — 运行以下命令,以确认现代(已连接)待机是否被支持并启用(S0低功率空闲已连接): Powercfg /a
功率状态 – 运行以下命令,以研究系统功率状态:Powercfg /sleepstudy
如下文摘录所示,报告揭示了在每种模式(活跃、待机、休眠、睡眠等)中所耗费的时间,以及进入和退出每种状态的原因。
如果您遇到了任何问题或提出任何疑问,则请在本公司登陆页面地步的本公司开发人员查询单中提供您的信息。
Snapdragon为Qualcomm Technologies, Inc.和/或其子公司的产品。
Qualcomm 开发者专区是 Qualcomm 联合CSDN 共同打造的面向中国开发者的技术专区。致力于通过提供全球最新资讯和最多元的技术资源及支持,为开发者们打造全面一流的开发环境。本专区将以嵌入式、物联网、游戏开发、Qualcomm® 骁龙™处理器的软件优化等技术为核心,打造全面的开发者技术服务社区,为下一代高性能体验和设计带来更多的想法和灵感。
加入 Qualcomm 开发者专区