高手帮个忙,我是初学者!

xin_zzq1 2009-03-18 04:49:38
问题如下:
我用个线程去执行操作时,第一次能够执行成功,但第2次继续执行到:hr = mpIRapiDesktop->EnumDevices(&mpIRapiEnumDevices);hr得到的值是E_INVALIDARG.搞了半天不知道什么原因啊..高手就救救小弟吧。
部分代码如下:

HRESULT hr = S_OK;
clearSession();
addNewInfo(_T("Try to connect a device....."));
CoInitialize(NULL);
// Create an instance of the IRAPIDesktop interface.
hr = CoCreateInstance(CLSID_RAPI,
NULL,
CLSCTX_INPROC_SERVER,
IID_IRAPIDesktop,
(void**)&mpIRapiDesktop);

if (hr ==0 && mpIRapiDesktop)
{
addNewInfo(_T("CoCreateInstance success"));
}else{
addNewInfo(_T("CoCreateInstance failure"));
return false;
}

// Call EnumDevices to obtain an enumeration of connected devices.
hr = mpIRapiDesktop->EnumDevices(&mpIRapiEnumDevices);
...全文
64 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
实达诚实 2009-03-18
  • 打赏
  • 举报
回复
纯支持
实达诚实 2009-03-18
  • 打赏
  • 举报
回复
纯支持
xin_zzq1 2009-03-18
  • 打赏
  • 举报
回复
问题发现了,我是在线程资源没有释放,所以在第2次执行的时候会出问题!
fandh 2009-03-18
  • 打赏
  • 举报
回复
你第二次调用mpIRapiDesktop->EnumDevices(&mpIRapiEnumDevices)的时候,是不是也同样调用了CoCreateInstance(CLSID_RAPI,
NULL,
CLSCTX_INPROC_SERVER,
IID_IRAPIDesktop,
(void**)&mpIRapiDesktop);

如果是,那么就有问题了
同一个ID你创建了两次,建议你只创建一次
usb522 2009-03-18
  • 打赏
  • 举报
回复
顶,高手来了
xin_zzq1 2009-03-18
  • 打赏
  • 举报
回复
自己顶下!高手帮帮忙啊

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧