当前位置: 首页 > 编程语言 > C#

C#字符串编组和LocalAlloc共享

时间:2023-04-10 17:16:47 C#

C#字符串编组和LocalAlloc我有一个来自非托管DLL的COM回调,我需要在C#中使用它。非托管DLL期望被调用者使用LocalAlloc分配内存(调用者将使用LocalFree),用WSTR填充它,并将值和字符分别设置为WSTR指针和字符串长度。我试图转换为C#的代码片段:STDMETHODIMPCMyImpl::GetString(LPCSTRfield,LPWSTR*value,int*chars){CStringWret;if(!strcmp(field,"矩阵")){ret=L"无";如果(...)ret.Append(L"001");elseif(...)ret.Append(L"002");否则ret.Append(L"003");}if(!ret.IsEmpty()){intlen=ret.GetLength();size_tsz=(len+1)*sizeof(WCHAR);LPWSTRbuf=(LPWSTR)LocalAlloc(LPTR,sz);如果(!buf){返回E_OUTOFMEMORY;}wcscpy_s(buf,len+1,ret);*字符=长度;*价值=缓冲区;返回S_OK;}返回E_INVALIDARG;什么是等效的C#代码?编辑:COM接口:[id(2)]HRESULTGetString([in]LPCSTRfield,[out]LPWSTR*value,[out]int*chars);直接的方法是引入LocalAlloc函数,使用UnicodeEncoding.GetBytes将字符串Convert成bytes,再使用Marshall.Copy复制到分配的内存中。以上就是C#学习教程的全部内容:C#字符串编组和LocalAlloc分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: