用程序禁用与启用网卡

BOOL Disable_NetCard(bool bStatus)
{
 GUID guid;
 UuidFromString((unsigned char *)"4D36E972-E325-11CE-BFC1-08002BE10318", &guid);
 
 DWORD NewState;
 
 if(bStatus)
 {
  NewState=DICS_DISABLE;//禁用
 }
 else
 {
  NewState=DICS_ENABLE;//启用
 }
 
 //调用ddk函数,来禁用网卡
 
 DWORD i;
 BOOL Found=false;
 
 HDEVINFO hDevInfo;
 SP_DEVINFO_DATA spDevInfoData;
 
 //访问系统的硬件库
 hDevInfo=SetupDiGetClassDevs( &guid, NULL, NULL, DIGCF_PRESENT );
 if (hDevInfo == INVALID_HANDLE_VALUE)
 {
  AfxMessageBox("访问系统硬件出错!");
  return false;
 }
 
 //枚举硬件,获得需要的接口
 memset( &spDevInfoData, 0,  sizeof(SP_DEVINFO_DATA));
 spDevInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
 for (i=0;SetupDiEnumDeviceInfo(hDevInfo,i,&spDevInfoData);i++)
 {
  LPTSTR buffer = NULL;
  DWORD buffersize = 0;
  
  if (!SetupDiEnumDeviceInfo(hDevInfo, i, &spDevInfoData))
  {
   AfxMessageBox("SetupDiEnumDeviceInfo出错!");
   return false;
  }
  
  //禁用该设备
  
  SP_PROPCHANGE_PARAMS spPropChangeParams;
  
  spPropChangeParams.ClassInstallHeader.cbSize=sizeof(SP_CLASSINSTALL_HEADER);
  spPropChangeParams.ClassInstallHeader.InstallFunction=DIF_PROPERTYCHANGE;
  spPropChangeParams.Scope=DICS_FLAG_GLOBAL;
  spPropChangeParams.StateChange=NewState;//禁用:DICS_DISABLE,DICS_ENABLE启用
  
  if(!SetupDiSetClassInstallParams(hDevInfo,&spDevInfoData,(SP_CLASSINSTALL_HEADER *)&spPropChangeParams,sizeof(spPropChangeParams)))
  {
   DWORD errorcode=GetLastError();
  }
  
  if(!SetupDiCallClassInstaller(DIF_PROPERTYCHANGE,hDevInfo,&spDevInfoData))
  {
   DWORD errorcode=GetLastError();
  }
   
 }
 
 //退出时,清理工作环境
 SetupDiDestroyDeviceInfoList(hDevInfo);
 return true;
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值