#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");
}
}
}
#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");
}
}
}