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

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

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

  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的三种方法》一篇总结性的文章,对几种实现方法做了简介,让我们有一个全局的认识。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值