private static string[] GetFileNames(CALPOLESTR array)
{
var files = new string[array.cElems];
for (int i = 0; i < files.Length; i++)
{
var pathPtr = Marshal.ReadIntPtr(array.pElems, i * IntPtr.Size);
files[i] = Marshal.PtrToStringUni(pathPtr);
Marshal.FreeCoTaskMem(pathPtr);
}
if (array.pElems != IntPtr.Zero)
{
Marshal.FreeCoTaskMem(array.pElems);
}
return files;
}