这只是字节组合来“编码”数据的方式吗?
我很好奇,因为我想知道 RCW 如何自动获取 .NET 字符串并将其转换为 COM BSTR。我猜测它只是形成了从 .NET 字符串转换而来的有效 COM BSTR。
相关:我可以使用 .NET 中的字节类型构造自己的有效 BSTR 吗?
这两种字符串类型根本不相关。必须进行转换才能将一种类型转换为另一种类型。
BSTR 有许多必须遵循的约定,包括通过 SysAllocString* 分配、使用 SysFreeString 释放、具有长度前缀和两个空字符的终止符。
http://msdn.microsoft.com/en-us/library/ms221069.aspx http://msdn.microsoft.com/en-us/library/ms221069.aspx
.Net 字符串是通过托管堆分配的托管类型。它的生命周期由 CLR 垃圾收集器管理。
要构建自己的 BSTR,最好使用 Marshal.StringToBSTR:
http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.stringtobstr.aspx http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.marshal.stringtobstr.aspx
如果这还不够好,您可以 pinvoke SysAllocString:
http://msdn.microsoft.com/en-us/library/ms221458.aspx http://msdn.microsoft.com/en-us/library/ms221458.aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)