avctivex 控件 接口返回值问题
最近在做把普通接口封装为ActiveX控件。以控件的形式对外暴露接口。
有一个产生随机数的普通接口是这样的:
DWORD GetRandom(
IN HANDLE hKey,
IN DWORD randomStrLen,
OUT LPBYTE lpRandomStr
);
在控件内部利用类向导建一个对应的方法是这样的
BSTR GetRandom(short randomStrLen)
{
CString strResult;
DWORD rv;
HANDLE Keyhandle;
Keyhandle=(HANDLE)m_handle;
DWORD randomLen=(DWORD)randomStrLen;
LPBYTE outData=(LPBYTE)malloc(randomStrLen);
memset(outData,0,randomStrLen);
rv=Usb_GenRandom(
Keyhandle,
randomLen,
outData
);
/*****************************************************
这里outData 是LPBYTE 类型的。
这个定义的接口返回值是BSTR类型(类向导里面提供的返回值类型只有BSTR,没有LPBYTE)
我是这样做的类型转换:
strResult = outData;
或者 CString strResult(outData);
但是上面两种转换得到的返回值都是乱码,
那我该怎么做类型转换,才能正确的返回产生的随机数????
*****************************************************/
free(outData);
outData=NULL;
return strResult.AllocSysString();
}
大家帮忙看看。。。。!
[解决办法]
使用CComBSTR