主要代码实现:
HRESULT WifiOn()
{
TCHAR WstrDeviceClass[128];
BOOL ret = GetWIFIDeviceName(WstrDeviceClass);
if(!ret) return ERROR_INVALID_GETWIFIDEVICENAME;
DevicePowerNotify(WstrDeviceClass, D0, POWER_NAME);
return SetDevicePower( WstrDeviceClass, POWER_NAME, D0);
}
HRESULT WifiOff()
{
TCHAR WstrDeviceClass[128];
BOOL ret = GetWIFIDeviceName(WstrDeviceClass);
if(!ret) return ERROR_INVALID_GETWIFIDEVICENAME;
DevicePowerNotify(WstrDeviceClass, D4, POWER_NAME);
return SetDevicePower( WstrDeviceClass, POWER_NAME, D4);
}
{
TCHAR WstrDeviceClass[128];
BOOL ret = GetWIFIDeviceName(WstrDeviceClass);
if(!ret) return ERROR_INVALID_GETWIFIDEVICENAME;
DevicePowerNotify(WstrDeviceClass, D0, POWER_NAME);
return SetDevicePower( WstrDeviceClass, POWER_NAME, D0);
}
HRESULT WifiOff()
{
TCHAR WstrDeviceClass[128];
BOOL ret = GetWIFIDeviceName(WstrDeviceClass);
if(!ret) return ERROR_INVALID_GETWIFIDEVICENAME;
DevicePowerNotify(WstrDeviceClass, D4, POWER_NAME);
return SetDevicePower( WstrDeviceClass, POWER_NAME, D4);
}
其中的WstrDeviceClass参数就是下面其中<DEVICE_NAME>就是适配器的名称。
HKEY_LOCAL_MACHINE / System / CurrentControlSet / Control / POWER /
State / {98C5250D-C29A-4985-AE5F-AFE5367E5006}\<DEVICE_NAME>
State / {98C5250D-C29A-4985-AE5F-AFE5367E5006}\<DEVICE_NAME>
注:{98C5250D-C29A-4985-AE5F-AFE5367E5006}\<DEVICE_NAME>是键的名称,不是子父路径的关系。
将这个键的名称直接传给SetDevicePower的pvDevice参数即可。