public static ItemPropertyId[] ReadItemPropertyIds(int size, IntPtr dataPtr, IntPtr errorsPtr) { try { var results = new ItemPropertyId[size]; for (var i = 0; i < size; i++) { var idPtr = Marshal.ReadIntPtr(dataPtr, i * IntPtr.Size); results[i].Id = Marshal.PtrToStringUni(idPtr); results[i].Error = Marshal.ReadInt32(errorsPtr, i * sizeof(int)); Marshal.FreeCoTaskMem(idPtr); } return(results); } finally { if (dataPtr != IntPtr.Zero) { Marshal.FreeCoTaskMem(dataPtr); } if (errorsPtr != IntPtr.Zero) { Marshal.FreeCoTaskMem(errorsPtr); } } }
public static ItemPropertyId[] ReadItemPropertyIds(int size, IntPtr dataPtr, IntPtr errorsPtr) { try { var results = new ItemPropertyId[size]; for (var i = 0; i < size; i++) { var idPtr = Marshal.ReadIntPtr(dataPtr, i * IntPtr.Size); results[i].Id = Marshal.PtrToStringUni(idPtr); results[i].Error = Marshal.ReadInt32(errorsPtr, i * sizeof(int)); Marshal.FreeCoTaskMem(idPtr); } return results; } finally { if (dataPtr != IntPtr.Zero) Marshal.FreeCoTaskMem(dataPtr); if (errorsPtr != IntPtr.Zero) Marshal.FreeCoTaskMem(errorsPtr); } }