wenyong
驱动牛犊
驱动牛犊
  • 注册日期2003-12-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:924回复:0

请教大虾:2K下USB无线MODEM驱动的自动安装程序

楼主#
更多 发布于:2003-12-12 09:09
用设备管理器安装无线Modem时,需要用户选择“标准33600 bps Modem\".我想做个安装程序自动选择。
我的思路是用SetupAPI列举出所有Modem的驱动,然后选择上面的驱动。但是在列举驱动时,每次得到的结果都不想,不知道什么地方用错了,请大虾指正。
DEFINE_GUID(GUID_33600M, 0x4D36E96D, 0xE325, 0x11CE, 0xBF, 0xC1, 0x08,0x00, 0x2B, 0xE1, 0x03, 0x18);
void EnumDriverList(void)
{
HDEVINFO hDevInfo = NULL;
BOOL bRetVal=TRUE;
SP_DEVINFO_DATA SpDevInfoData;
SP_DRVINFO_DATA SpDrvInfoData;


hDevInfo = SetupDiGetClassDevs((LPGUID) &GUID_33600M,NULL,NULL,DIGCF_PROFILE);
if(INVALID_HANDLE_VALUE == hDevInfo)
{
ErrDump();
return;
}


bRetVal = SetupDiBuildDriverInfoList(hDevInfo,
NULL,
SPDIT_CLASSDRIVER);
if(FALSE == bRetVal)
{
ErrDump();
bRetVal = SetupDiDestroyDeviceInfoList(hDevInfo);
return;
}

// Enumerate drive list

int MemberIndex=0;
while(bRetVal)
{
memset(&SpDrvInfoData,0,sizeof(SpDrvInfoData));
SpDrvInfoData.cbSize = sizeof(SpDrvInfoData);
bRetVal = SetupDiEnumDriverInfo(hDevInfo,
NULL,
SPDIT_CLASSDRIVER ,
MemberIndex,
&SpDrvInfoData);
MemberIndex++;
if(bRetVal)
{
TRACE(\"%s\\n\",SpDrvInfoData.MfgName);
TRACE(\"%s\\n\",SpDrvInfoData.Description);
TRACE(\"%s\\n\",SpDrvInfoData.ProviderName);
TRACE(\"%d\\n\",SpDrvInfoData.Reserved);


}
else
{
ErrDump();
}

}



bRetVal = SetupDiDestroyDeviceInfoList(hDevInfo);

}

另外本人还有一个思路,不知道可行否,是否可以为无线Modem做个Inf文件。来实现上面的功能?
游客

返回顶部