mirror of
https://github.com/PredatH0r/ChanSort.git
synced 2026-01-12 10:22:04 +01:00
89 lines
3.7 KiB
C#
89 lines
3.7 KiB
C#
namespace ChanSort.Loader.PhilipsBin
|
|
{
|
|
class Serializer
|
|
{
|
|
[DllImport("Cable.dll", CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern int ConvertToXML_Cable([MarshalAs(UnmanagedType.LPArray)] byte[] path, [MarshalAs(UnmanagedType.LPArray)] byte[] read_buff);
|
|
|
|
[DllImport("Cable.dll", CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern int ConvertToBIN_Cable([MarshalAs(UnmanagedType.LPArray)] byte[] read_buff);
|
|
|
|
//[DllImport("Cable.dll")]
|
|
//public static extern int GetFavoriteList([MarshalAs(UnmanagedType.I4)] int ListId, [MarshalAs(UnmanagedType.LPArray)] int[] NoOfRecords, [MarshalAs(UnmanagedType.LPArray)] int[] ChannelIdList);
|
|
|
|
//[DllImport("Cable.dll")]
|
|
//public static extern int SetFavoriteList([MarshalAs(UnmanagedType.I4)] int ListId, [MarshalAs(UnmanagedType.I4)] int NoOfRecords, [MarshalAs(UnmanagedType.LPArray)] int[] ChannelIdList);
|
|
|
|
|
|
|
|
[DllImport("dvbs2_cte.dll", CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern int ConvertToXML_Satellite([MarshalAs(UnmanagedType.LPArray)] byte[] path, [MarshalAs(UnmanagedType.LPArray)] byte[] read_buff);
|
|
//public static extern int ConvertToXML_Satellite(IntPtr pathAs8BitChar, [MarshalAs(UnmanagedType.LPArray)] byte[] read_buff);
|
|
|
|
[DllImport("dvbs2_cte.dll", CallingConvention = CallingConvention.Cdecl)]
|
|
public static extern int ConvertToBin_Satellite([MarshalAs(UnmanagedType.LPArray)] byte[] read_buff);
|
|
/*
|
|
[DllImport("dvbs2_cte.dll")]
|
|
public static extern int GetFavoriteList([MarshalAs(UnmanagedType.I4)] int ListId, [MarshalAs(UnmanagedType.LPArray)] int[] NoOfRecords, [MarshalAs(UnmanagedType.LPArray)] int[] ChannelIdList);
|
|
|
|
[DllImport("dvbs2_cte.dll")]
|
|
public static extern int SetFavoriteList([MarshalAs(UnmanagedType.I4)] int ListId, [MarshalAs(UnmanagedType.I4)] int NoOfRecords, [MarshalAs(UnmanagedType.LPArray)] int[] ChannelIdList);
|
|
*/
|
|
|
|
[DllImport("kernel32.dll")]
|
|
private static extern int LoadLibrary(string strLib);
|
|
|
|
[DllImport("kernel32.dll")]
|
|
private static extern int FreeLibrary(int iModule);
|
|
|
|
[DllImport("kernel32.dll")]
|
|
private static extern IntPtr GetProcAddress(int iModule, string strProcName);
|
|
|
|
|
|
|
|
|
|
#region Load()
|
|
|
|
public override void Load()
|
|
{
|
|
var dir = Path.GetDirectoryName(this.FileName) + "\\";
|
|
var fname = Encoding.Default.GetBytes(dir);
|
|
//var ptr = Marshal.AllocHGlobal(enc.Length);
|
|
//var handle = GCHandle.Alloc(fname, GCHandleType.Pinned);
|
|
//var ptr = handle.AddrOfPinnedObject();
|
|
var arr = new byte[10 * 1024 * 1024];
|
|
//int r1 = 0;
|
|
//PhilipsChannelEditor.BinaryDll.CSatellite.GetBinaryFilesToXML(ref r1, dir);
|
|
var hLib = LoadLibrary("Cable.dll");
|
|
var addr = GetProcAddress(hLib, "ConvertToBIN_Cable");
|
|
try
|
|
{
|
|
//var r1 = PhilipsChannelEditor.BinaryDll.CSatellite.ConvertToXML_Satellite(fname, arr);
|
|
//var r1 = ConvertToXML_Cable(ptr, arr);
|
|
var sat = this.FileName.Contains("\\s2");
|
|
var r1 = sat ? ConvertToXML_Satellite(fname, arr) : ConvertToXML_Cable(fname, arr);
|
|
if (r1 != 0)
|
|
throw new FileLoadException("Philips DLL returned error code loading file: " + r1);
|
|
int len = 0;
|
|
while (arr[len] != 0)
|
|
++len;
|
|
using (var file = new FileStream(@"c:\temp\philips.xml", FileMode.Create))
|
|
file.Write(arr, 0, len);
|
|
|
|
var arr2 = new byte[len + 1];
|
|
Array.Copy(arr, arr2, len);
|
|
arr2[len] = 0;
|
|
|
|
var r2 = sat ? ConvertToBin_Satellite(arr2) : ConvertToBIN_Cable(arr2);
|
|
if (r2 != 0)
|
|
throw new FileLoadException("Philips DLL returned error code saving file: " + r2);
|
|
}
|
|
finally
|
|
{
|
|
FreeLibrary(hLib);
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
} |