lixiangying
驱动牛犊
驱动牛犊
  • 注册日期2002-05-03
  • 最后登录2007-09-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1893回复:3

禁用/启用网卡的代码

楼主#
更多 发布于:2004-10-20 12:27
禁用/起用 网卡的代码: 也许谁会用的着。
 
#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  %d\n",i);  
                                                     //  
                                   //DICS_DISABLE-->禁用网络  
                                   //DICS_ENABLE--->恢复网络  
                                   //  
                                   if  (StateChange(DICS_ENABLE,i,hDevInfo))  
                                               printf("NetWork  stopped");  
 
                       }  
           }  
 
           return  0;  
}  

最新喜欢:

WY.lslrtWY.lsl... hongsinghongsi...
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-10-25 17:34
不错通过急用设备来实现也是一种方法
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
idaxsy
驱动大牛
驱动大牛
  • 注册日期2004-12-09
  • 最后登录2006-03-17
  • 粉丝0
  • 关注0
  • 积分386分
  • 威望54点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-04-20 13:33
我在xp下试验了一下,好像有问题。
[b]万水千山总是情,回个帖子行不行?[/b]
idaxsy
驱动大牛
驱动大牛
  • 注册日期2004-12-09
  • 最后登录2006-03-17
  • 粉丝0
  • 关注0
  • 积分386分
  • 威望54点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-04-20 13:36
应该是没有问题。好贴!
[b]万水千山总是情,回个帖子行不行?[/b]
游客

返回顶部