阅读:3530回复:0
得到驱动信息时一直失败,SetupDiEnumDriverInfo()失败。
我要得到smartcardreader的驱动信息,比如说驱动版本等等,
当时在调用SetupEnumDriverInfo() 的时候第一次就失败,没有一次成功的,利用GetLastError一直返回ERROR_NO_ITEMS,而实际上我安装了一个读卡器,并且完全可以使用。 这是我得代码,大家帮我看看吧,很短。 DEFINE_GUID(GUID_READER,0x50dd5230,0xba8a,0x11d1,0xb5,0xfd,0x00,0x00,0xf8,0x05,0xf5,0x30);//这是读卡器的guid。 HDEVINFO devs = INVALID_HANDLE_VALUE; SP_DRVINFO_DATA DriverInfo; SP_DEVINFO_DATA DeviceInfo; int index = 0; bool success = false; SP_DRVINFO_DETAIL_DATA DriverInfoDetails; SYSTEMTIME SystemTime; ULARGE_INTEGER Version; devs = SetupDiGetClassDevsEx( &GUID_READER, NULL, NULL, DIGCF_PRESENT, NULL, NULL, NULL ); if( INVALID_HANDLE_VALUE == devs) { MessageBox( \"can not get devs while initialize devs!!\" ); exit(0); } } success = SetupDiBuildDriverInfoList( devs, NULL, SPDIT_CLASSDRIVER ); index = 0; while ( success ) { ZeroMemory( &DriverInfo,sizeof( DriverInfo) ); DriverInfo.cbSize = sizeof( SP_DRVINFO_DATA ); success = SetupDiEnumDriverInfo(devs, NULL, SPDIT_CLASSDRIVER, index, &DriverInfo ); DWORD Err; Err = GetLastError(); char a[5]; itoa(Err,a,10); index++; m_Driver.SetWindowText( a ); } SetupDiDestroyDriverInfoList( devs, &DeviceInfo, SPDIT_CLASSDRIVER ); } [编辑 - 5/21/04 by xiaorain] |
|