public static string PtrToStringUtf8(IntPtr aPtr) // aPtr is nul-terminated
{
if (aPtr == IntPtr.Zero)
return "";
int len = 0;
while (Marshal.ReadByte(aPtr, len) != 0)
len++;
if (len == 0)
return "";
byte[] array = new byte[len];
Marshal.Copy(aPtr, array, 0, len);
return System.Text.Encoding.UTF8.GetString(array, 0, array.Length);
}
}