16,548
社区成员




HRESULT WINAPI EXPORT getDriverName(INT in_nIndex, BSTR out_pScannerModelName)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CString str = gManager.GetModelName(in_nIndex);
out_pScannerModelName = str.AllocSysString();
if(out_pScannerModelName!=NULL)
{
return S_OK;
}
else
return S_FALSE;
}
调用的时候
TCHAR szModelName[100];
BSTR bstr = ::SysAllocString(szModelName);
::getDriverName(1,bstr);
AfxMessageBox(bstr);
我加断点测试,为什么在dll函数体内out_pScannerModelName为“ML300”
而我想存储在的szModelName却为空,大家给我看一下吧,其实这个跟那个freeBSTR()是一样的,都是操作BSTR类型参数的问题。谢谢HRESULT WINAPI EXPORT freeBSTR(BSTR *pBstr)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if(pBstr!=NULL)
{
::SysFreeString(*pBstr);
*pBstr=NULL;
}
return S_OK;
}