public static GetNullTerminatedStringPointer ( string p_strString, |
||
p_strString | string | The string for which to create a pointer. |
p_encEncoding | The encoding of the string. | |
return |
/// <summary> /// Marshals the given string to a pointer. /// </summary> /// <param name="ManagedObj">The string to marshal.</param> /// <returns>A pointer to the marshalled string.</returns> public IntPtr MarshalManagedToNative(string[] ManagedObj) { string[] strStrings = (string[])ManagedObj; if (strStrings == null) { m_ptrStringArray = IntPtr.Zero; } else { m_intArraySize = strStrings.Length; IntPtr[] ptrStrings = new IntPtr[m_intArraySize]; for (Int32 i = 0; i < m_intArraySize; i++) { ptrStrings[i] = StringMarshaler.GetNullTerminatedStringPointer(strStrings[i], m_encEncoding); } m_ptrStringArray = Marshal.AllocHGlobal(m_intArraySize * IntPtr.Size); Marshal.Copy(ptrStrings, 0, m_ptrStringArray, m_intArraySize); } return(m_ptrStringArray); }