public static IntPtr GetNullTerminatedStringPointer(string p_strString, Encoding p_encEncoding)
{
byte[] bteString = p_encEncoding.GetBytes(p_strString);
byte[] bteNullTerminatedString = new byte[bteString.Length + 1];
Array.Copy(bteString, bteNullTerminatedString, bteString.Length);
IntPtr ptrString = Marshal.AllocHGlobal(bteNullTerminatedString.Length);
Marshal.Copy(bteNullTerminatedString, 0, ptrString, bteNullTerminatedString.Length);
return ptrString;
}