public StringAsPinnedUTF8(string str)
 {
     byte[] strBytes = System.Text.UTF8Encoding.UTF8.GetBytes(str);
     byte[] strBytesNulTerminated = new byte[strBytes.Length + 1]; // initialized to all 0's.
     Array.Copy(strBytes, strBytesNulTerminated, strBytes.Length);
     this.gch = SystemGCHandle.Alloc(strBytesNulTerminated, SystemGCHandleType.Pinned);
 }