public static int IMOS_XP_InputMediaData(int port, byte[] data) { int size = 0; IntPtr ptr = IntPtr.Zero; if (data != null) { size = data.Length; ptr = Marshal.AllocHGlobal(size); Marshal.Copy(data, 0, ptr, size); } int ret = 0; if (_isX64) { ret = Native64.IMOS_XP_InputMediaData((uint)port, ptr, (uint)size); } else { ret = Native32.IMOS_XP_InputMediaData((uint)port, ptr, (uint)size); } if (ptr != IntPtr.Zero) { Marshal.FreeHGlobal(ptr); } return(ret); }