How to get the value from Marshal in c#
See the question and my original answer on StackOverflowYou're missing the transformation from byte[] to string, but you'll have to define what's the encoding. This may work:
public static string getTrack1(string track1, int len)
{
IntPtr track1Ptr = UnsafeNativeMethods.Decrypt(track1, len);
Byte[] track1b = new Byte[200];
Marshal.Copy(track1Ptr, track1b, 0, track1b.Length);
return Encoding.Default.GetString(track1b);
}
But it would be better to do this;
public static string getTrack1(string track1, int len)
{
IntPtr track1Ptr = UnsafeNativeMethods.Decrypt(track1, len);
return Marshal.PtrToStringAnsi(track1Ptr);
}
If the encoding is Ansi (=Default)