阅读:926回复:0
请教大虾:2K下USB无线MODEM驱动的自动安装程序
用设备管理器安装无线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文件。来实现上面的功能? |
|