C++写的DLL传递字符串数据给C#的纠结有关问题,请帮忙分析解决,多谢:)

C++写的DLL传递字符串数据给C#的纠结问题,请帮忙分析解决,谢谢:)
C#调用C++写的Dll。请教各位前辈如何实现Dll将字符串数据传递给C#呀?  谢谢
相关参数代码如下:

Dll(CDll.dll,Unicode编译模式)参数如下:
CDll.def的内容略。

BOOL dllTest(
      LPWSTR *s__out__Result,    //需传递给C#字符串数据的双指针
      LPCWSTR param1,            //C#传入的参数
      LPCWSTR param2             //C#传入的参数
)
{
    CString result= func(param1, param2);  //执行func函数,返回CString。
    
    /*********************************************************
    /*
    /* 问题在这里?????????????????????????????????????????
    /* 如何写代码才能将result (CString)变量的值通过*s__out__Result双指针传递给C#呀??谢谢。
    /* 需考虑资源合理释放的问题。
    /* 用双指针传递字符串数据合理么?谢谢
    /*
    /*********************************************************/
    
    if(sResult.GetLength() >0)
    {
        return TRUE;
    }
    else
    {
        return FALSE;
    }
}

在C#动态引入Dll的代码如下:

[DllImport(@"CDll.dll", CharSet = CharSet.Unicode, EntryPoint = "dllTest")]
        [return: MarshalAs(UnmanagedType.Bool)]
        public extern static bool dllTest(
            [MarshalAs(UnmanagedType.LPWStr)]StringBuilder sbResult,
            [MarshalAs(UnmanagedType.LPWStr)]string param1,
            [MarshalAs(UnmanagedType.LPWStr)]string param2
            );

C#调用代码如下:

StringBuilder sbResult = new StringBuilder();
string p1 ="中国程序员……";
string p2 ="非常优秀……";
boo b =dllTest(sbResult, p1, p2);  //sbResult接收Dll传递的字符串数据
if(b)
{
    MessageBox.Show(sbResult.ToString());
}
else
{
    MessageBox.Show("调用Dll(dllTest)返回假!");
}

------解决方案--------------------
USES_CONVERSION;  
LPWSTR pwStr=new wchar_t[result.GetLength()+1];  
wcscpy(pwStr,T2W((LPCTSTR)result));

------解决方案--------------------
你看看API有这么传递字符串的么?
都是由调用着申请好内存,dll内直接赋值的。

------解决方案--------------------
你的dll直接这么赋值就行了
wcscpy(s__out__Result , result);


参考MSDN中类似的例子
int GetWindowText(
HWND hWnd,        // Handle to window or control.
LPTStr lpString,  // Text buffer.
int nMaxCount     // Maximum number of characters to copy.