网上关于重启网卡的资源(C++实现)

来源:互联网 发布:淘宝联盟账户余额是0 编辑:程序博客网 时间:2024/05/16 00:54

(1)《vc++ 修改IP地址DNS 附带源码》实例代码,来自csdn下载频道,我下载下来调试过了,貌似和我上面提及的思路一致:通过重启网卡来让设置的IP立即生效。

(2)《程序禁用启用网络/网卡》是一个封装好的函数,我复制到本地并适当修改之后,就调试通过了!正好是我想要的:)关于函数中的配置文件ConfigInfo.ini,其内容貌似如下所示:

[cpp] view plaincopy
  1. [NETCARD]  
  2. TYPE=PCI  
  3. NAME=NVIDIA nForce Networking Controller 

         #include <stdio.h>
  #include <windows.h>


  #include <Setupapi.h>

        #pragma comment(lib,"setupapi.lib")


  #include <objbase.h>

    
  void EnumDevices(HDEVINFO hDevInfo)
  {
  SP_DEVINFO_DATA DeviceInfoData = {sizeof(SP_DEVINFO_DATA)};
  LPOLESTR guid;
  char devName[128];
  char instanceId[128];
  for (int i=0;SetupDiEnumDeviceInfo(hDevInfo,i,&DeviceInfoData);i++)
  {
  StringFromCLSID(DeviceInfoData.ClassGuid,&guid);
  SetupDiClassNameFromGuid(&DeviceInfoData.ClassGuid,devName,128,NULL);
  if(!strcmp(devName,"Net"))
  {
  SetupDiGetDeviceInstanceId(hDevInfo,&DeviceInfoData,instanceId,128,NULL);
  if(!strncmp(instanceId,"PCI",3))
  {
  wprintf(L"%s\n",guid);
  printf("%s\n",devName);
  printf("%s\n",instanceId);
  SP_PROPCHANGE_PARAMS params = {sizeof(SP_CLASSINSTALL_HEADER )};
  params.ClassInstallHeader.InstallFunction = DIF_PROPERTYCHANGE;
  params.Scope = DICS_FLAG_CONFIGSPECIFIC;
  params.StateChange = DICS_DISABLE;
  params.HwProfile = 0;
  SetupDiSetClassInstallParams(hDevInfo, &DeviceInfoData, (SP_CLASSINSTALL_HEADER*)&params, sizeof(SP_PROPCHANGE_PARAMS));
  SetupDiChangeState(hDevInfo, &DeviceInfoData);
  }
  }
  CoTaskMemFree(guid);
  }
  }
  int main(int argc, char* argv[])
  {
  HDEVINFO hDevInfo = INVALID_HANDLE_VALUE;
  hDevInfo = SetupDiGetClassDevs(NULL,NULL,NULL, DIGCF_PRESENT | DIGCF_ALLCLASSES);
  if(INVALID_HANDLE_VALUE == hDevInfo)
  return GetLastError();  
  EnumDevices(hDevInfo);
  SetupDiDestroyDeviceInfoList(hDevInfo);
  return 0;
  }

(3)《实战DeviceIoControl 之五:列举已安装的存储设备》这篇文章详细地介绍了如何访问设备,有代码有注释(作者另外的几篇《实战DeviceIoControl 》也很不错),是很好的入门教材!

(4)《Windows下不重启机器程序修改IP的三种方法》一篇总结性的文章,对几种实现方法做了简介,让我们有一个全局的认识。

0 0
原创粉丝点击