public Event EnqueueMigrateBuffer( Buffer[] buffers, MemoryMigrationFlags flags, Event[] events) { ClHelper.ThrowNullException(Handle); if (buffers == null) { throw new ArgumentNullException("buffers"); } unsafe { var buffer_list = stackalloc IntPtr[buffers.Length]; for (int i = 0; i < buffers.Length; ++i) { buffer_list[i] = buffers[i].Handle; } int num_events_in_wait_list = events == null ? 0 : events.Length; IntPtr *wait_list = stackalloc IntPtr[num_events_in_wait_list]; for (int i = 0; i < num_events_in_wait_list; ++i) { wait_list[i] = events[i].Handle; } if (events == null) { wait_list = null; } IntPtr event_ptr = IntPtr.Zero; ClHelper.GetError(Cl.EnqueueMigrateMemObjects(Handle, (uint)buffers.Length, buffer_list, (ulong)flags, (uint)num_events_in_wait_list, wait_list, &event_ptr)); return(new Event(event_ptr)); } }