JAGUARSDN1网络的开机自动启动 禁用,WIFI模块的启动关闭控制
2012-12-05 22:51
501 查看
先确认下系统中有没有加载NDISPWR.DLL,如果没有的话,把这个组件加上
WIFI在默认情况下,是开机自动打开的,如果要开机禁用,在HKEY_LOCAL_MACHINE/Comm/NdisPower创建一个键值
name = 4
name是你用的WIFI的名字
如果想开机自动打开,把这个键值删掉
打开关闭WIFI时,想网络图标正常,除了用setdevicepower外
还要用到NDIS的IOCTL_NDIS_BIND_ADAPTER或者IOCTL_NDIS_UNBIND_ADAPTER
绑定或者解除绑定
在HKEY_LOCAL_MACHINE/Comm/NdisPower下面加"JaguarSDN1" = 4 就OK了
IOCTL_NDIS_BIND_ADAPTER是用DeviceIoControl操作的,打开的设备是NDS0,bufferin里写你要bind的网卡名字,因为网卡是NDIS设备,网卡名字应该是NDIS的ClassID+JaguarSDN1
具体代码去PUBLIC下找NDISPWR的代码看看
===============================================
BOOL
DoNdisIOControl(
DWORD dwCommand,
LPVOID pInBuffer,
DWORD cbInBuffer,
LPVOID pOutBuffer,
DWORD *pcbOutBuffer)
{
HANDLE hNdis;
BOOL bResult = FALSE;
hNdis = CreateFile(
DD_NDIS_DEVICE_NAME,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_ALWAYS,
0,
NULL);
if (INVALID_HANDLE_VALUE != hNdis)
{
bResult = DeviceIoControl(
hNdis,
dwCommand,
pInBuffer,
cbInBuffer,
pOutBuffer,
(pcbOutBuffer ? *pcbOutBuffer : 0x00),
pcbOutBuffer,
NULL);
CloseHandle(hNdis);
}
return bResult;
}
nChars = _sntprintf(
szName,
MAX_PATH-1,
_T("%s//%s"),
PMCLASS_NDIS_MINIPORT,
ptcDeviceName);
if (nChars != -1)
{
DEBUGMSG (ZONE_NDISUIO,
(TEXT("NdisPower:: Setting adapter [%s] to Power State [%s]./r/n"),
ptcDeviceName,
(CePowerState == D0) ? TEXT("D0") :
(CePowerState == D1) ? TEXT("D1") :
(CePowerState == D2) ? TEXT("D2") :
(CePowerState == D3) ? TEXT("D3") :
(CePowerState == D4) ? TEXT("D4") :
(CePowerState == PwrDeviceUnspecified) ? TEXT("PwrDeviceUnspecified") :
TEXT("UNKNOWN!")));
SetDevicePower(szName, POWER_NAME, CePowerState);
}
//
// IOCTL_NDIS_UNBIND_ADAPTER takes multisz (protocol driver names
// follow the adapter name) hence we need extra NULL.
//
memset (szName, 0x00, sizeof(szName));
_tcscpy(szName, ptcDeviceName);
DoNdisIOControl(
IOCTL_NDIS_UNBIND_ADAPTER,
szName,
(_tcslen(ptcDeviceName)+2) * sizeof(TCHAR),
NULL,
NULL);
这段是先关设备再UNBIND的代码,希望对你有帮助
WIFI在默认情况下,是开机自动打开的,如果要开机禁用,在HKEY_LOCAL_MACHINE/Comm/NdisPower创建一个键值
name = 4
name是你用的WIFI的名字
如果想开机自动打开,把这个键值删掉
打开关闭WIFI时,想网络图标正常,除了用setdevicepower外
还要用到NDIS的IOCTL_NDIS_BIND_ADAPTER或者IOCTL_NDIS_UNBIND_ADAPTER
绑定或者解除绑定
在HKEY_LOCAL_MACHINE/Comm/NdisPower下面加"JaguarSDN1" = 4 就OK了
IOCTL_NDIS_BIND_ADAPTER是用DeviceIoControl操作的,打开的设备是NDS0,bufferin里写你要bind的网卡名字,因为网卡是NDIS设备,网卡名字应该是NDIS的ClassID+JaguarSDN1
具体代码去PUBLIC下找NDISPWR的代码看看
===============================================
BOOL
DoNdisIOControl(
DWORD dwCommand,
LPVOID pInBuffer,
DWORD cbInBuffer,
LPVOID pOutBuffer,
DWORD *pcbOutBuffer)
{
HANDLE hNdis;
BOOL bResult = FALSE;
hNdis = CreateFile(
DD_NDIS_DEVICE_NAME,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_ALWAYS,
0,
NULL);
if (INVALID_HANDLE_VALUE != hNdis)
{
bResult = DeviceIoControl(
hNdis,
dwCommand,
pInBuffer,
cbInBuffer,
pOutBuffer,
(pcbOutBuffer ? *pcbOutBuffer : 0x00),
pcbOutBuffer,
NULL);
CloseHandle(hNdis);
}
return bResult;
}
nChars = _sntprintf(
szName,
MAX_PATH-1,
_T("%s//%s"),
PMCLASS_NDIS_MINIPORT,
ptcDeviceName);
if (nChars != -1)
{
DEBUGMSG (ZONE_NDISUIO,
(TEXT("NdisPower:: Setting adapter [%s] to Power State [%s]./r/n"),
ptcDeviceName,
(CePowerState == D0) ? TEXT("D0") :
(CePowerState == D1) ? TEXT("D1") :
(CePowerState == D2) ? TEXT("D2") :
(CePowerState == D3) ? TEXT("D3") :
(CePowerState == D4) ? TEXT("D4") :
(CePowerState == PwrDeviceUnspecified) ? TEXT("PwrDeviceUnspecified") :
TEXT("UNKNOWN!")));
SetDevicePower(szName, POWER_NAME, CePowerState);
}
//
// IOCTL_NDIS_UNBIND_ADAPTER takes multisz (protocol driver names
// follow the adapter name) hence we need extra NULL.
//
memset (szName, 0x00, sizeof(szName));
_tcscpy(szName, ptcDeviceName);
DoNdisIOControl(
IOCTL_NDIS_UNBIND_ADAPTER,
szName,
(_tcslen(ptcDeviceName)+2) * sizeof(TCHAR),
NULL,
NULL);
这段是先关设备再UNBIND的代码,希望对你有帮助
相关文章推荐
- JAGUARSDN1网络的开机自动启动 禁用,WIFI模块的启动关闭控制
- debian关闭开机自动启动时候的gui
- Linux下VirtualBox虚拟机的命令行启动/关闭方法和开机自动启动
- linux设置开机服务自动启动/关闭自动启动命令
- Centos 7.0开机自动启动网络设置
- Linux下VirtualBox虚拟机的命令行启动/关闭方法和开机自动启动
- CMD命令启动/关闭服务,启动/禁用网络连接命令总结
- oracle的环境配置-设置开机(Linux)自动启动Oracle关机自动关闭Oracle
- 原 Debian设置开机自动启动与关闭
- linux设置开机服务自动启动/关闭自动启动命令 chkconfig
- OK6410开机自动获取ip及网络启动总结
- 禁用开机时弹出窗口“ 服务控制管理器:在系统启动时至少一个服务或驱动程序产生错误”
- linux设置开机服务自动启动/关闭自动启动命令
- linux设置开机服务自动启动/关闭自动启动命令
- linux设置开机服务自动启动/关闭自动启动命令
- 自动启动或关闭网络连接的VBS脚本
- Android-开机自动启动程序并禁用返回键(BroadcastReceiver)
- linux设置开机服务自动启动/关闭自动启动命令
- linux设置开机服务自动启动/关闭自动启动命令
- win2003关闭开机 服务控制管理器 在系统启动时至少有一个服务或驱动程序产生错误