请教一个问题(关于ATL)

tigerwen01 2005-06-09 01:21:03
我使用VS.NET7.0创建一个ATL项目,里面有一个方法
STDMETHODIMP CMySignVerify::MySignMethod(BSTR signData, BSTR* revData)
{
。。。
BYTE *pbSignedBlob;
if(CryptSignMessage(
&SigParams, // Signature parameters
FALSE, // Not detached
1, // Number of messages
MessageArray, // Messages to be signed
MessageSizeArray, // Size of messages
pbSignedMessageBlob, // Buffer for signed message --我想返回这个值
&cbSignedMessageBlob)) // Size of buffer
{
*revData=(BSTR)pbSignedMessageBlob; //我想返回这个值,可是返回的是乱码
MessageBox(NULL,"签名成功","提示",MB_OK);
}
else
{
MessageBox(NULL,"签名失败","提示",MB_OK|MB_ICONERROR);
}
return S_OK;
}

问题是:*revData=(BSTR)pbSignedMessageBlob; //我想返回这个值,可是返回的是乱码,这里把BYTE类型强制转换为BSTR。
请问,BYTE和BSTR之间如何转换?
...全文
180 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
tigerwen01 2005-06-14
  • 打赏
  • 举报
回复
大家可以讨论一下啊,这样也可以提高自己的知识和经验啊。
tigerwen01 2005-06-14
  • 打赏
  • 举报
回复
解答完美,满分!
tigerwen01 2005-06-13
  • 打赏
  • 举报
回复
非常感谢useresu(俗人)(努力做翻译ing)的解答, 但是返回的是四个????字符。我把str.Format("%d",pbSignedMessageBlob);改为str.Format("%s",pbSignedMessageBlob);结果返回的是乱码。
各位大虾,难道就不能返回BYTE*类型的pbSignedMessageBlob的值了吗?还有哪位高手救救我吧。
tigerwen01 2005-06-10
  • 打赏
  • 举报
回复
谢谢 ybt631(技术是做出来的!!!) 大虾的解答,但是str.Format("%d",pbSignedMessageBlob);没有返回值。
我是想BYTE类型pbSignedMessageBlob的值返回给BSRT* 类型的revData变量,然后返回给方法:
*revData=str.Format ("%d",pbSignedMessageBlob);//这样是错的
ybt631 2005-06-10
  • 打赏
  • 举报
回复
CSting str;
str.Format("%d",pbSignedMessageBlob);
.....
tigerwen01 2005-06-10
  • 打赏
  • 举报
回复
难道这种问题就没有一个具体的解答了吗?各位大虾救救我吧。
useresu 2005-06-10
  • 打赏
  • 举报
回复
CSting str;
str.Format("%d",pbSignedMessageBlob);
*revData = (BSTR)(LPSTR(str));
刚还原了系统,没msdn了,
写的可能不准确,但大概是这个意思
mostideal 2005-06-10
  • 打赏
  • 举报
回复
mark!!!
wxdangel 2005-06-10
  • 打赏
  • 举报
回复
str.Format("%d",pbSignedMessageBlob);
是对str赋值,有了CString就可以转BSTR或是_bstr_t
tigerwen01 2005-06-10
  • 打赏
  • 举报
回复
自己UP一下
tigerwen01 2005-06-09
  • 打赏
  • 举报
回复
也就是说如何返回一个BYTE数组给方法?
tigerwen01 2005-06-09
  • 打赏
  • 举报
回复
谢谢你的回复,具体语句该如何写?本人刚用C++来做事,所以有点菜。
healer_kx 2005-06-09
  • 打赏
  • 举报
回复
BSTR等都是负责的类型, 复杂程度比string复杂多了, 它里面可不是简单维护一个字符串.
它几乎没有可以进行显示转化的能力.
_bstr_t的也是重载过的操作符, 这个时候借助CString最好了.
CString帮你转化了很多东西了.
healer_kx 2005-06-09
  • 打赏
  • 举报
回复
BSTR最好用CString来做中间的转化, 比较方便, 可以得到一个字符串的缓存.
另外你也会需要_bstr_t

64,636

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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