基于骁龙的Windows的现代(连接)待机模式

现代待机的用例,以及实现和测试

在骁龙上实现和测试Windows的现代待机模式

使用GitHub的两个Windows驱动程序示例和以下说明,您可以在骁龙平台上实现和测试现代待机模式。驱动程序示例需要对骁龙上的Windows进行修改,如下所示。

更多背景信息,请访问Microsoft文档中的“什么是现代备用待机模式““。

echosrv-Winsock内核(WSK)驱动程序

微软名为Echo的内核驱动程序示例使用了Windows内核套接字。驱动程序监听传入的TCP IPv4/IPv6请求并回显接收到的数据包。GitHub版本的唯一修改是API(PoSetSystemState),用于从休眠状态唤醒系统。

1.获取驱动程序https://github.com/microsoft/Windows-driver-samples/tree/master/network/wsk/echosrv.

2. 将以下行添加到\network\wsk\echosrv\wsksample.c: PoSetSystemState(ES_DISPLAY|ES_USER|u PRESENT | ES_SYSTEM_REQUIRED); //检查是否支持Always on Always connected POWER_PLATFORM_INFORMATION PlatformInfo = {0}; NTSTATUS Status = ZwPowerInformation(PlatformInformation, NULL, 0, &PlatformInfo, sizeof(PlatformInfo)); if (NT_SUCCESS(Status) && PlatformInfo.AoAc) {  ; // “AoAC已启用! } else {  ; // “AoAC未启用! }

ndisprot-NDIS协议驱动程序

对此驱动程序进行修改来支持LAN唤醒(Wake-On-LAN,WOL)位图模式。它们包括使用OID_PM_ADD_WOL_模式将特定的位图模式添加到网卡(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中的switch(FunctionCode)语句。

安装驱动程序 驱动程序没有签名。要安装它们,请使用测试证书或testsigning对它们进行签名。确保禁用强制驱动程序签名。

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

添加WOL模式

1. prottest.exe与NDIS驱动程序位于同一目录中。在PowerShell中,运行prottest -e来枚举设备ID,如下图所示。

2. 要将WOL位图模式添加到NIC,请运行prottest -a。在下面的示例中,prottest -a将位图模式添加到设备ID 3。

不带参数执行prottest时会显示帮助信息
prottest -q查询当前指定的任何模式。
prottest -c返回支持的WOL数据包类型
此时,echosrv正在侦听端口40007上的TCP数据包,WOL位图模式已设置好。当计算机处于睡眠模式时,与WOL模式匹配的数据包可以唤醒它。

3.要进行测试,请使用PowerShell脚本在目标设备处于休眠(S0低功耗空闲连接)模式时将WOL包和TCP包从远程设备发送到目标设备。
示例命令:
Wakeup-Target -IPAddress "fe80::cd1d:936f:fcbf:2fc"

停止服务

1.使用以下命令停止驱动程序:
sc stop echosrv
net stop ndisprot

2.使用以下命令从NIC适配器属性中卸载ndisprot: sc delete echosrv

检查和故障排除

现代待机状态-使用远程设备检查目标设备的现代待机状态。

1.确保两台设备能够通信;例如,能通过ping命令互相访问。

2.确保目标设备处于现代(已连接)待机状态。它不应处于S4(休眠)或S5(关机)模式。

3.在目标设备上运行getservicechosrv以确保WSK驱动程序正在运行。

4.echosrv驱动程序监听端口40007。在目标设备上运行以下命令以确认该端口上有侦听套接字:Get-NetTCPConnection -LocalPort 40007

• TF Lite

protest.exe可执行文件-如果protest.exe无法工作,您可能需要安装Visual C++。

现代备用模式支持-运行以下命令以确认支持并启用现代(已连接)待机(S0低功耗空闲连接):Powercfg /a

电源状态-运行以下命令以研究系统电源状态:Powercfg /sleepstudy

如下面的摘录所示,报告显示了在每种模式下(活动、待机、休眠、睡眠等)花费的时间量,以及进入和退出每个状态的原因。

如果您遇到任何问题或有任何疑问,请在我们登陆页面底部的开发者查询表留言。

骁龙是高通技术公司和/或其子公司的产品。

Qualcomm 解决方案

 

高通软件中心

通过集中式门户站无缝管理您的高通®软件和工具

下载软件中心