Передать строку из неуправляемого кода в управляемый

У меня проблемы с передачей строки из неуправляемого кода в управляемый. В моем неуправляемом классе (unmanagedClass.cpp) У меня есть указатель на функцию из управляемого кода:

TESTCALLBACK_FUNCTION testCbFunc;

TESTCALLBACK_FUNCTION принимает одну строку и ничего не возвращает:

typedef void (*TESTCALLBACK_FUNCTION )(char* msg);

Неуправляемый класс наследуется от интерфейса ITest, который имеет только один метод:

    STDMETHOD(put_TestCallBack) (THIS_
                  LPVOID FnAddress       
             ) PURE;

В managedClass.cs я пишу этот код:

public class ManagedClass
{
    ITest unmanaged = new unmanagedClass();
    public delegate void TestDelegate(string info);
    ManagedClass()
    {
        unmanaged.put_TestCallBack(new TestDelegate(this.Test));
    }
    void Test(string info)
    {
            MessageBox.Show(info);
    }
}

[ComImport, Guid("<my guid here>")]
public class unmanagedClass
{
}

[ComImport, System.Security.SuppressUnmanagedCodeSecurity,
Guid("<my guid here>"),
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface ITest
{
    [PreserveSig]
    int put_TestCallBack([MarshalAs(UnmanagedType.FunctionPtr), In] Capture.TestDelegate func);

}

Для вызова Test func из неуправляемого кода я использую этот

(*testCbFunc)("Func Uragan33::Execute has been started!");

Но когда вызывается метод Test из managedClass.cs, я всегда получаюзначение NULL строка. Почему это происходит?

Заранее спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос