CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  硬件/系统

禁止网卡,网卡禁止 高手请进

楼主LuckyGyt(小虾米)2005-05-13 12:07:21 在 VC/MFC / 硬件/系统 提问

网卡,在XP   系统上能够正常(不能访问internet   和局域网),但在window2000   professional   中  
  不能正常(不能访问internet   但是可以访问局域网,ping不通本机IP却可以ping通其它电脑IP),  
  请高手指点!   或有更好的   实现方式,也请不吝赐教!  
   
  DWORD   DisableNetCard(void)  
  {  
  DWORD   dwIfNumber;  
  MIB_IFROW   mibIfRow;  
  DWORD   dwResult   =   NO_ERROR,   dwIndex;  
   
  dwResult   =   GetNumberOfInterfaces(&dwIfNumber);  
   
  if   (NO_ERROR   !=   dwResult)  
  {  
  return   dwResult;  
  }  
   
  for   (dwIndex   =   1;   dwIndex   <=   dwIfNumber;   dwIndex++)  
  {  
  mibIfRow.dwIndex   =   dwIndex;  
  dwResult   =   GetIfEntry(&mibIfRow);  
                  if   (NO_ERROR   !=   dwResult)  
  {  
          return   dwResult;  
  }  
  mibIfRow.dwAdminStatus   =   MIB_IF_ADMIN_STATUS_DOWN;  
  dwResult   =   SetIfEntry(&mibIfRow);  
  }  
   
  return   dwResult;  
  } 问题点数:100、回复次数:4Top

1 楼qrlvls( 空 气 )回复于 2005-05-14 09:38:28 得分 40

启用/禁用网卡  
  #include   "stdafx.h"    
  #include   <tchar.h>    
  #include   <windows.h>    
  #include   <setupapi.h>    
   
  #pragma   comment   (lib,"setupapi")    
   
  #define   UnknownDevice   TEXT("<Unknown   Device>")    
   
  HDEVINFO   hDevInfo   =   0;    
   
   
  BOOL   StateChange(DWORD   NewState,   DWORD   SelectedItem,HDEVINFO   hDevInfo)    
  {    
  SP_PROPCHANGE_PARAMS   PropChangeParams   =   {sizeof(SP_CLASSINSTALL_HEADER)};    
  SP_DEVINFO_DATA   DeviceInfoData   =   {sizeof(SP_DEVINFO_DATA)};    
  HCURSOR   hCursor;    
   
  //    
  //   This   may   take   a   while   :^(    
  //    
  hCursor   =   SetCursor(LoadCursor(NULL,   IDC_WAIT));    
   
  //    
  //   Get   a   handle   to   the   Selected   Item.    
  //    
  if   (!SetupDiEnumDeviceInfo(hDevInfo,SelectedItem,&DeviceInfoData))    
  {    
  printf("EnumDeviceInfo");    
  return   FALSE;    
  }    
   
  //    
  //   Set   the   PropChangeParams   structure.    
  //    
  PropChangeParams.ClassInstallHeader.InstallFunction   =   DIF_PROPERTYCHANGE;    
  PropChangeParams.Scope   =   DICS_FLAG_GLOBAL;    
  PropChangeParams.StateChange   =   NewState;    
   
  if   (!SetupDiSetClassInstallParams(hDevInfo,    
  &DeviceInfoData,    
  (SP_CLASSINSTALL_HEADER   *)&PropChangeParams,    
  sizeof(PropChangeParams)))    
  {    
  printf("SetClassInstallParams");    
  SetCursor(hCursor);    
  return   FALSE;    
  }    
   
  //    
  //   Call   the   ClassInstaller   and   perform   the   change.    
  //    
  if   (!SetupDiCallClassInstaller(DIF_PROPERTYCHANGE,    
  hDevInfo,    
  &DeviceInfoData))    
  {    
  printf("SetClassInstallParams");    
  SetCursor(hCursor);    
  return   TRUE;    
  }    
   
  SetCursor(hCursor);    
  return   TRUE;    
  }    
   
   
  BOOL   IsClassNet(   GUID   *   ClassGuid   )    
  {    
  #define   MAX_NUM   50    
   
  HKEY   hKeyClass;    
  LONG   lRet;    
  char   ClassType[MAX_NUM];    
  char   NetClass[MAX_NUM]   =   "Net";    
  DWORD   dwLength   =   MAX_NUM,dwType   =   REG_SZ;    
   
  if   (hKeyClass   =   SetupDiOpenClassRegKey(ClassGuid,KEY_READ))    
  {    
  lRet   =   RegQueryValueEx(hKeyClass,    
  TEXT("Class"),    
  NULL,   &dwType,   LPBYTE(ClassType),   &dwLength);    
  RegCloseKey(hKeyClass);    
   
  if   (lRet   !=   ERROR_SUCCESS)    
  return   FALSE;    
   
  if   (!strcmp(ClassType,NetClass))    
  return   TRUE;    
  }    
   
  return   FALSE;    
  }    
   
  int   main(int   argc,   char*   argv[])    
  {    
  if   (INVALID_HANDLE_VALUE   ==   (hDevInfo   =    
  SetupDiGetClassDevs(NULL,NULL,0,    
  DIGCF_PRESENT   |DIGCF_ALLCLASSES)))    
  {    
  printf("GetClassDevs");    
  return   0;    
  }    
   
  DWORD   i,   Status,   Problem;    
  SP_DEVINFO_DATA   DeviceInfoData   =   {sizeof(SP_DEVINFO_DATA)};    
   
  HKEY   hKeyClass;    
  char   DeviceName[200];    
  for   (i=0;SetupDiEnumDeviceInfo(hDevInfo,i,&DeviceInfoData);i++)    
  {    
  if   (IsClassNet(&DeviceInfoData.ClassGuid))    
  {    
  printf("   the   class's   index   is   %dn",i);    
  //    
  //DICS_DISABLE-->禁用网络    
  //DICS_ENABLE--->恢复网络    
  //    
  if   (StateChange(DICS_ENABLE,i,hDevInfo))    
  printf("NetWork   stopped");    
   
  }    
  }    
   
  return   0;    
  }Top

2 楼xift_2008(☆冲浪者☆)回复于 2005-05-14 10:31:07 得分 10

不懂这方面的知识,关注~~~帮楼主顶一下!Top

3 楼keiy()回复于 2005-05-14 10:36:35 得分 50

我已解决的  
  http://community.csdn.net/Expert/topic/3951/3951994.xml?temp=.5318415  
  Top

4 楼LuckyGyt(小虾米)回复于 2005-06-27 14:46:17 得分 0

已用其他方式解决!!!谢谢各位!      
   
  Top

相关问题

  • 如何用程序禁止/启动网卡?
  • 如何设置路由器禁止某网卡上网?
  • 高手请进!如何阻止WINDOWS强行安装网卡?
  • 在pb中,如何获得网卡MAC号呢,高手请进...
  • 请问:我如何指定网卡进行监听?
  • 网卡找不到了,不知道为什么?高手请进,谢谢!
  • 大拿请进,Win2K下的双网卡互换PCI插槽后,为何原来的IP地址无法再次附给另一块网卡?急
  • 如何用网卡进行通信
  • 请教USB网卡的驱动设计?
  • 请教:怎样设置虚拟网卡?

关键词

  • 网卡
  • propchangeparams
  • hdevinfo
  • dwresult
  • hcursor
  • deviceinfodata
  • dwindex
  • sp
  • dword
  • 不能

得分解答快速导航

  • 帖主:LuckyGyt
  • qrlvls
  • xift_2008
  • keiy

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo