我有一段从CAPICOM.Utilities获取随机二进制字符串的代码。Firebreath:二进制字符串返回值异常
m_pUtilities.CreateInstance(__uuidof(Utilities));
_bstr_t bstrResult;
m_pUtilities->raw_GetRandom(64, CAPICOM_ENCODE_BINARY, bstrResult.GetAddress());
我做了返回
return std::wstring(bstrResult);
我的方法崩溃插件进近的方法。 6个电话中的1个。异常描述是 chrome.exe中的0x7572969b未处理的异常:Microsoft C++异常:内存位置为utf8 :: invalid_utf16。 我试图将我的方法的返回类型从FB :: variant更改为std :: wstring,但这没有帮助。
我做错了什么?我应该如何返回二进制字符串?将二进制字符串转换为base64或返回字符串中的其他更改不适合我。
是的;你不能从npapi插件返回二进制字符串到浏览器,它只是不受支持。浏览器期望一个utf8编码的字符串 – taxilian
不幸的是我需要从我的插件中传递这个值。可能我根本不会实现这个选项。 – Pisaren
@Pisaren:技术上你可以用一个普通的值填充一个(JS)数组,然后返回它,但这会很慢。如何将它作为base64传递给JS并将其解码为数组数组? –