public static IntPtr GetUnicodeStrings(string[] values)
{
int size = (values != null)?values.Length:0;
if (size <= 0)
{
return IntPtr.Zero;
}
IntPtr pValues = IntPtr.Zero;
int[] pointers = new int[size];
for (int ii = 0; ii < size; ii++)
{
pointers[ii] = (int)Marshal.StringToCoTaskMemUni(values[ii]);
}
pValues = Marshal.AllocCoTaskMem(values.Length*Marshal.SizeOf(typeof(IntPtr)));
Marshal.Copy(pointers, 0, pValues, size);
return pValues;
}