public void CreateBuffers(ASIOBufferInfo[] Infos, int Size, ASIOCallbacks Callbacks) { pins = new GCHandle[] { GCHandle.Alloc(Callbacks.bufferSwitch), GCHandle.Alloc(Callbacks.sampleRateDidChange), GCHandle.Alloc(Callbacks.asioMessage), GCHandle.Alloc(Callbacks.bufferSwitchTimeInfo) }; callbacks = Marshal.AllocHGlobal(Marshal.SizeOf(Callbacks)); Marshal.StructureToPtr(Callbacks, callbacks, false); Log.Global.WriteLine(MessageType.Info, "AsioObject.CreateBuffers(Size={0})", Size); Try(vtbl.createBuffers(_this, Infos, Infos.Length, Size, callbacks)); }