xiaorain
驱动牛犊
驱动牛犊
  • 注册日期2003-04-21
  • 最后登录2005-11-05
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3434回复:0

得到驱动信息时一直失败,SetupDiEnumDriverInfo()失败。

楼主#
更多 发布于:2004-05-21 17:02
我要得到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]
游客

返回顶部