读书人

avctivex 控件 接口返回值有关问题

发布时间: 2012-02-13 17:20:26 作者: rapoo

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

读书人网 >C++

热点推荐