- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
WinCE重置网络的方法
成都英创信息技术有限公司 WinCE 重置网络的方法
WinCE 重置网络的方法
在实际应用中,复杂的网络状况可能让设备网络产生异常(比如 IP 冲突),从而无法正常网络通信。
通过重启设备可以恢复网络,本文介绍另外一个方法,在应用层不断电的情况下快速重置网络,恢复网
络通信。
手动重置网络
进入板子控制面板-网络和拨号连接,可以看到板子现有网口的网络连接图标,下图以 EM9287 为
例,EM9287 有两个网口,分别为 ENET1 和 ENET2。
右键点击需要重置的网口图标,先选择禁用,可以看到图标显示 X ,同时板子网络灯停止闪烁。
再次右键点击该图标,选择启用,图标恢复连接显示,可以观察到板子网络灯重新亮起。
1 / 7
成都英创信息技术有限公司 WinCE 重置网络的方法
代码重置网络
引用 pw.h 头文件,添加定义板子 DEVICEIOCONTROL 的相关宏定义。
#define DD_NDIS_DEVICE_NAME TEXT(NDS0:)
#define NDISPWR_DEVICE_NAME TEXT(NPW1:)
#define _NDIS_CONTROL_CODE(request,method) \
CTL_CODE(FILE_DEVICE_PHYSICAL_NETCARD, request, method, FILE_ANY_ACCESS)
#define WINCE_IOCTL_START 8
#define IOCTL_NDIS_BIND_ADAPTER _NDIS_CONTROL_CODE( WINCE_IOCTL_START+4,
METHOD_OUT_DIRECT )
#define IOCTL_NDIS_UNBIND_ADAPTER _NDIS_CONTROL_CODE( WINCE_IOCTL_START+5,
METHOD_OUT_DIRECT )
#define IOCTL_NDIS_GET_ADAPTER_BINDINGS
_NDIS_CONTROL_CODE( WINCE_IOCTL_START+8, METHOD_OUT_DIRECT )
#define FSCTL_NDISPWR_BASE FILE_DEVICE_NETWORK
#define _NDISPWR_CTL_CODE(_Function, _Method, _Access) \
CTL_CODE(FSCTL_NDISPWR_BASE, _Function, _Method, _Access)
#define IOCTL_NPW_SAVE_POWER_STATE \
_NDISPWR_CTL_CODE(0x200, METHOD_BUFFERED, FILE_ANY_ACCESS)
首先调用电源管理设备 NPW ,通知它关闭网口电源(这里以ENET1 为例)
2 / 7
成都英创信息技术有限公司 WinCE 重置网络的方法
hNdisPwr = CreateFile(NDISPWR_DEVICE_NAME, 0, 0, NULL, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, INVALID_HANDLE_VALUE);
SavePowerState.CePowerState = D4;
SavePowerState.pwcAdapterName = L”ENET1”;
bRet = DeviceIoControl(
hNdisPwr,
IOCTL_NPW_SAVE_POWE
文档评论(0)