I have a C++ DLL (SimpleDLL.dll), with a exposed function (DllFunctionPoibnterGetName) that has a function pointer (getNameFP). The function pointer takes a char * as a parameter (*char * name*).
// C++ 
DllExport void DllFunctionPoibnterGetName( void (*getNameFP) (char * name, unsigned short * length ) ) {
    char name[1024];
    unsigned short length = 0 ; 
    getNameFP( name, &length ); 
    printf( "length=[%d] name=[%s]\n", length, name ); 
}
I have a C# application that would like to use this C++ DLL.
// C# 
public unsafe delegate void GetName( System.Char* name, System.UInt16* length); 
unsafe class Program
{
    [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
    public delegate void delegateGetName(System.Char* name, System.UInt16* length);
    [DllImport("SimpleDLL.dll", CharSet = CharSet.Ansi )]
    public static extern void DllFunctionPoibnterGetName([MarshalAs(UnmanagedType.FunctionPtr)] delegateGetName getName);
    static void Main(string[] args)
    {   
        DllFunctionPoibnterGetName(GetName); 
    }
    static void GetName(System.Char* name, System.UInt16* length)
    {
        // name = "one two three";
        *length = 10; 
    }   
}
Currently I can set the length with out any problems, but I can't seem to find a way to set the name correctly.
My Question is
- How do I set the char * name to a value correctly.
 
     
     
    