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;
}