R3模式下禁用启用网卡

#include  < stdio.h >     
#include 
< tchar.h >     
#include 
< windows.h >   
#include 
< setupapi.h >
#pragma  comment(lib, "setupapi.lib")

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;

    hCursor 
=  SetCursor(LoadCursor(NULL, IDC_WAIT));

    
if  ( ! SetupDiEnumDeviceInfo(hDevInfo,SelectedItem, & DeviceInfoData))
    {
        printf(
" EnumDeviceInfo " );
        
return  FALSE;
    }

    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;
    }

    
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;
}

void  SetAllNetDevice()
{
    
if  (INVALID_HANDLE_VALUE  ==  (hDevInfo  =  
                SetupDiGetClassDevs(NULL,NULL,
0 ,
                DIGCF_PRESENT
| DIGCF_ALLCLASSES)))
    {
        printf(
" GetClassDevs " );
        
return ;
    }

    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 ",i);
   

            
// DICS_DISABLE-->禁用网络
            
// DICS_ENABLE--->恢复网络
             if  (StateChange(DICS_ENABLE, i, hDevInfo))
                printf(
" . " );
            
// printf("NetWork %s", (DICS_ENABLE)?"enabled":"disabled");

        }
    }
}

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值