我写了一个程序用VC的,就是DDK里面的Setup*******那些API做的,但是出现一个问题折磨我很久了。我用程序可以禁用掉网卡,也可以启用,但是我在网络邻居里停用后,用程序无法启用,我不知道这是为什么?而且我用程序disable 后,在网络邻居里无法启用,但是设备管理器里可以启用,
另外一个情况,在设备管理器里停用掉,网络邻居里可以启用,但是用程序无法启用。我现在需要解决的问题是,如果在网络邻居里停用以后,我用程序依然可以启动呢?我想知道是setup********这些
API不能解决这个问题,还是问题出在别的什么地方?希望大虾给与帮助。下面代码是我的程序片断,为了说明我用的方法:
BOOL ChangeDeviceState(HDEVINFO hDevInfoSet, SP_DEVINFO_DATA *pDevInfoData, DWORD State) 
{
SP_PROPCHANGE_PARAMS propchange;
propchange.ClassInstallHeader.cbSize = sizeof(SP_CLASSINSTALL_HEADER);
propchange.ClassInstallHeader.InstallFunction = DIF_PROPERTYCHANGE;
propchange.HwProfile = 0;
propchange.StateChange = State;
propchange.Scope = (State == DICS_START || State == DICS_STOP )? DICS_FLAG_CONFIGSPECIFIC : DICS_FLAG_GLOBAL;
if(!SetupDiSetClassInstallParams(hDevInfoSet, pDevInfoData, (PSP_CLASSINSTALL_HEADER)&propchange,sizeof(propchange)))
{
printf("SetupDiSetClassInstallParams. Error Code:%x\n",GetLastError());
return FALSE;
}

if(!SetupDiChangeState(hDevInfoSet, pDevInfoData))
{
DWORD dwErrCode = ERROR_NO_CLASSINSTALL_PARAMS;
dwErrCode= GetLastError();
printf("SetupDiChangeState. Error Code:%x\n",GetLastError());
return FALSE;
}/*
if(!SetupDiCallClassInstaller(DIF_PROPERTYCHANGE, hDevInfoSet, pDevInfoData))
{
printf("SetupDiCallClassInstaller");
return FALSE;
}*/
return TRUE;
}