JAGUARSDN1网络的开机自动启动 禁用,WIFI模块的启动关闭控制。

mooddog   2009-8-25 09:18 楼主
项目需求:
    开机后JAGUARSDN不要自动运行,此时wifi模块关闭。需要用时,手动启用。
昨天找了一下这测表,HKEY_LOCAL_MACHINE\init下也没有找到合适的修改选项。project.reg的内容很少没找到可以对这项进行修改的地方。common.reg下只找到device.dll等内容。

不知道说清楚没有,多谢大侠们指点。

回复评论 (25)

帮顶的兄弟也会给分的。
点赞  2009-8-25 10:34
的确Wifi一直开着,很浪费电,对于手持式设备简直不可接受,恳请大侠尽快指导指导,我好学习下。
点赞  2009-8-25 10:49
找到wifi驱动里的开关部分,做一个自启动程序,程序里调用wifi驱动关闭WIFI
点赞  2009-8-25 11:37
具体部分你要看你的WIFI驱动里是怎么控制WIFI的开关了
点赞  2009-8-25 11:39
引用: 引用 3 楼 hudaweikevin 的回复:
找到wifi驱动里的开关部分,做一个自启动程序,程序里调用wifi驱动关闭WIFI

这个方法也是可以的,但是我想不增加用户操作界面的情况下完成这个功能,就是PDA启动是wifi是关闭的,用户需要时执行JAGUARSDN,然后wifi模块自动打开。另外我的wifi模块是SDIO接入的。
点赞  2009-8-25 18:37
可以用开关电源来控制功耗啊
点赞  2009-8-26 10:44
引用: 引用 6 楼 jeanszu 的回复:
可以用开关电源来控制功耗啊


试过了,但从新复位wifi模块以后连接网络就出了问题。无线设置变的很慢,获得的IP也很不对劲,它连接的无线路由器也不能给其它计算机分配IP了。
点赞  2009-8-27 19:25
wifi驱动是包括电源管理的,不用时让其进入低功耗模式就可以了,接口好像是DevicePowerNotify
点赞  2009-8-28 14:04
试试这种代码,注意修改 98C5250D-C29A-4985-AE5F-AFE5367E5006}\\WLAGS46F1  為你自己的wifi设备

void WifiOn()   
{   
    DevicePowerNotify(_T("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\WLAGS46F1"), D0, POWER_NAME);   
    SetDevicePower(_T("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\WLAGS46F1"), POWER_NAME, D0);   
}   
   
void WifiOff()   
{   
    DevicePowerNotify(_T("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\WLAGS46F1"), D4, POWER_NAME);   
    SetDevicePower(_T("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\WLAGS46F1"), POWER_NAME, D4);   
}   
点赞  2009-8-28 23:57
把wifi驱动弄成动态加载
执行JAGUARSDN时,给wifi供电,然后加载wifi驱动
退出JAGUARSDN时,给wifi断电,然后卸载wifi驱动
点赞  2009-8-29 09:44
引用: 引用 9 楼 linhanlao 的回复:
试试这种代码,注意修改 98C5250D-C29A-4985-AE5F-AFE5367E5006}\\WLAGS46F1? 為你自己的wifi设备

void WifiOn()?
{?
? ? DevicePowerNotify(_T("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\WLAGS46F1"), D0, POWER_NAME);?
? ? SetDevicePower(_T("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\WLAGS46F1"), POWER_NAME, D0);?
}?
?
void WifiOff()?
{?
? ? DevicePowerNotify(_T("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\WLAGS46F1"), D4, POWER_NAME);?
? ? SetDevicePower(_T("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\WLAGS46F1"), POWER_NAME, D4);?
}?


这位大哥的法子比我的好
点赞  2009-8-29 09:45
引用: 引用 9 楼 linhanlao 的回复:
试试这种代码,注意修改 98C5250D-C29A-4985-AE5F-AFE5367E5006}\\WLAGS46F1? 為你自己的wifi设备

void WifiOn()?
{?
? ? DevicePowerNotify(_T("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\WLAGS46F1"), D0, POWER_NAME);?
? ? SetDevicePower(_T("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\WLAGS46F1"), POWER_NAME, D0);?
}?
?
void WifiOff()?
{?
? ? DevicePowerNotify(_T("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\WLAGS46F1"), D4, POWER_NAME);?
? ? SetDevicePower(_T("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\WLAGS46F1"), POWER_NAME, D4);?
}?


感谢这位大侠的指点,我我的wifi模块是SDIO接入的,我发现SDIO驱动中的SDH_IOControl实现了电源管理。所以我就用DeviceIoControl直接调用了,当我把能量设为D3的时候驱动好像就卸载了,那个网络图标就没了。不知道这两种方法的主要区别,SDIO的能量管理好像确实没对WIFI产生什么影响,只是卸载了驱动。再次感谢两位大侠,我再试一下。
点赞  2009-8-29 10:17
各位大侠给出的方法应该是正确的,但现在仍然有个问题。
当我wifioff的时候任务栏上可以看到网络图标显示断开,但wifion的时候网络图标仍然是断开的,无法恢复。而且显示信号很好。
点赞  2009-8-29 11:34
万能的BBS呀。
点赞  2009-8-29 13:54
引用: 引用 13 楼 sailorlyq 的回复:
各位大侠给出的方法应该是正确的,但现在仍然有个问题。
当我wifioff的时候任务栏上可以看到网络图标显示断开,但wifion的时候网络图标仍然是断开的,无法恢复。而且显示信号很好。


貌似没有DevicePowerNotify 所以GWES不更新图标状态
点赞  2009-9-2 15:54
引用: 引用 15 楼 sniper167 的回复:
引用 13 楼 sailorlyq 的回复:
各位大侠给出的方法应该是正确的,但现在仍然有个问题。
当我wifioff的时候任务栏上可以看到网络图标显示断开,但wifion的时候网络图标仍然是断开的,无法恢复。而且显示信号很好。


貌似没有DevicePowerNotify 所以GWES不更新图标状态


void WifiOn()  
{  
    DevicePowerNotify(_T("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\WLAGS46F1"), D0, POWER_NAME);  
    SetDevicePower(_T("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\WLAGS46F1"), POWER_NAME, D0);  
}  
  
void WifiOff()  
{  
    DevicePowerNotify(_T("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\WLAGS46F1"), D4, POWER_NAME);  
    SetDevicePower(_T("{98C5250D-C29A-4985-AE5F-AFE5367E5006}\\WLAGS46F1"), POWER_NAME, D4);  
}  

我是按这个来的呀。顺序还需要换一下吗?
点赞  2009-9-4 19:12
LZ先确认下系统中有没有加载NDISPWR.DLL,如果没有的话,把这个组件加上

WIFI在默认情况下,是开机自动打开的,如果要开机禁用,在HKEY_LOCAL_MACHINE\Comm\NdisPower创建一个键值

name = 4

name是你用的WIFI的名字

如果想开机自动打开,把这个键值删掉


打开关闭WIFI时,想网络图标正常,除了用setdevicepower外

还要用到NDIS的IOCTL_NDIS_BIND_ADAPTER或者IOCTL_NDIS_UNBIND_ADAPTER

绑定或者解除绑定
点赞  2009-9-7 17:11
引用: 引用 17 楼 suwyhoho 的回复:
LZ先确认下系统中有没有加载NDISPWR.DLL,如果没有的话,把这个组件加上

WIFI在默认情况下,是开机自动打开的,如果要开机禁用,在HKEY_LOCAL_MACHINE\Comm\NdisPower创建一个键值

name = 4

name是你用的WIFI的名字

如果想开机自动打开,把这个键值删掉


打开关闭WIFI时,想网络图标正常,除了用setdevicepower外

还要用到NDIS的IOCTL_NDIS_BIND_ADAPTER或者IOCTL_NDIS_UNBIND_ADAPTER

绑定或者解除绑定


这位大侠好像说的很靠谱,能不能详细一些呀?
我看wifi厂商提供的注册表里有这些东西
  [HKEY_LOCAL_MACHINE\Comm\JaguarSDN1]
"DisplayName"="SyChip JaguarSDN Wireless Card"
"Group"="NDIS"
"ImagePath"="JaguarSDN.dll"
[HKEY_LOCAL_MACHINE\Drivers\SDCARD\ClientDrivers\Custom\MANF-02DF-CARDID-9103-FUNC-1]
"Prefix"="SDN"
"Dll"="JaguarSDN.dll"
"Instance0"="JaguarSDN:JaguarSDN1"

这样的话我写成"JaguarSDN1" = 4 可以吗?

IOCTL_NDIS_BIND_ADAPTER是用deviceiocontrol控制吗?可不可以弄个小例子,多谢指点。
点赞  2009-9-22 15:38
引用: 引用 18 楼 sailorlyq 的回复:
引用 17 楼 suwyhoho 的回复:
LZ先确认下系统中有没有加载NDISPWR.DLL,如果没有的话,把这个组件加上

WIFI在默认情况下,是开机自动打开的,如果要开机禁用,在HKEY_LOCAL_MACHINE\Comm\NdisPower创建一个键值

name = 4

name是你用的WIFI的名字

如果想开机自动打开,把这个键值删掉


打开关闭WIFI时,想网络图标正常,除了用setdevicepower外

还要用到NDIS的IOCTL_NDIS_BIND_ADAPTER或者IOCTL_NDIS_UNBIND_ADAPTER

绑定或者解除绑定



这位大侠好像说的很靠谱,能不能详细一些呀?
我看wifi厂商提供的注册表里有这些东西
? [HKEY_LOCAL_MACHINE\Comm\JaguarSDN1]
"DisplayName"="SyChip JaguarSDN Wireless Card"
"Group"="NDIS"
"ImagePath"="JaguarSDN.dll"
[HKEY_LOCAL_MACHINE\Drivers\SDCARD\ClientDrivers\Custom\MANF-02DF-CARDID-9103-FUNC-1]
"Prefix"="SDN"
"Dll"="JaguarSDN.dll"
"Instance0"="JaguarSDN:JaguarSDN1"

这样的话我写成"JaguarSDN1" = 4 可以吗?

IOCTL_NDIS_BIND_ADAPTER是用deviceiocontrol控制吗?可不可以弄个小例子,多谢指点。


在HKEY_LOCAL_MACHINE\Comm\NdisPower下面加"JaguarSDN1" = 4 就OK了

IOCTL_NDIS_BIND_ADAPTER是用DeviceIoControl操作的,打开的设备是NDS0,bufferin里写你要bind的网卡名字,因为网卡是NDIS设备,网卡名字应该是NDIS的ClassID+JaguarSDN1

具体代码去PUBLIC下找NDISPWR的代码看看
点赞  2009-9-22 15:52
12下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复