首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

高分。之前发过,还是没有解决。关于BSTR

2014-07-15 
高分求助。之前发过,还是没有解决。关于BSTR,高手请进HRESULT WINAPI EXPORT getDriverName(INT in_nIndex,

高分求助。之前发过,还是没有解决。关于BSTR,高手请进


HRESULT WINAPI EXPORT getDriverName(INT in_nIndex, BSTR out_pScannerModelName)

AFX_MANAGE_STATE(AfxGetStaticModuleState());
out_pScannerModelName = ::SysAllocString(gManager.GetModelName(in_nIndex));
if(out_pScannerModelName!=NULL)
{
return S_OK;
}
else
return S_FALSE;
}

就是要获取驱动的名字用out_pScannerModelName保存,为什么我加断点调试,在DLL内部,out_pScannerModelName内容为“S300”,然而,我在测试类中这样调用
TCHAR szModelName[100];
::getDriverName(1,szModelName);
AfxMessageBox(szModelName);
却返回为空。求大神帮忙

[最优解释]
wchar_t *  EXPORT getDriverName(INT in_nIndex)


if(out_pScannerModelName!=NULL)   
 {        
            return out_pScannerModelName;    
}    
else        
            return _T("Faile");



AfxMessageBox(::getDriverName(1));
[其他解释]
用地址或者引用~
[其他解释]
引用:
wchar_t *  EXPORT getDriverName(INT in_nIndex)


if(out_pScannerModelName!=NULL)   
 {        
            return out_pScannerModelName;    
}    
else        
            return ……

谢谢,这种方法的确能实现,但是函数定义为开发文档规定,不能改变,只能用参数out_pScannerModelName进行保存返回,我的意思就是说,如何用BSTR型参数进行保存返回,这是重点,谢谢
[其他解释]
引用:
用地址或者引用~

BSTR类型不是一个指针吗,如题所示,为什么当我在调用时候,dll中的out_pScannerModelName明明指向一个“S300”的地址,而在测试类中调用::getDriverName(1,szModelName);,凡获得szModelName为空,说明还是没有返回,在出了DLL之后就释放了?怎么修改
[其他解释]
引用:
引用:用地址或者引用~
BSTR类型不是一个指针吗,如题所示,为什么当我在调用时候,dll中的out_pScannerModelName明明指向一个“S300”的地址,而在测试类中调用::getDriverName(1,szModelName);,凡获得szModelName为空,说明还是没有返回,在出了DLL之后就释放了?怎么修改……


里面的总觉得是个副本。。。
[其他解释]
谢谢,搞定了,没有加引用。。。估计是文档错误。。
[其他解释]
测试进行中。。。
[其他解释]
需要拷贝到你数组里
类似strcpy

热点排行