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、付费专栏及课程。

余额充值