mirror of
https://github.com/radiomanV/TL866.git
synced 2025-06-18 14:25:38 -04:00
Fixed InfoIc new API version
This commit is contained in:
parent
7d7e919352
commit
4352559936
@ -22,14 +22,14 @@ private struct Options
|
|||||||
{
|
{
|
||||||
public bool DumpInfoic;
|
public bool DumpInfoic;
|
||||||
public bool DumpInfoic2;
|
public bool DumpInfoic2;
|
||||||
public bool DumpInfoicT76;
|
public bool DumpInfoic76;
|
||||||
public bool TL866;
|
public bool TL866;
|
||||||
public bool T48;
|
public bool T48;
|
||||||
public bool T56;
|
public bool T56;
|
||||||
public bool T76;
|
public bool T76;
|
||||||
public string InfoicPath;
|
public string InfoicPath;
|
||||||
public string Infoic2Path;
|
public string Infoic2Path;
|
||||||
public string InfoicT76Path;
|
public string Infoic76Path;
|
||||||
public string ConfigsPath;
|
public string ConfigsPath;
|
||||||
public string OutPath;
|
public string OutPath;
|
||||||
public bool Memory;
|
public bool Memory;
|
||||||
@ -48,7 +48,7 @@ private struct Options
|
|||||||
private readonly SortedDictionary<string, CSV_STRUCT> config_csv_list;
|
private readonly SortedDictionary<string, CSV_STRUCT> config_csv_list;
|
||||||
private readonly Infoic infoic;
|
private readonly Infoic infoic;
|
||||||
|
|
||||||
public Dumper(string InfoicPath, string Infoic2Path, string InfoicT76Path, string ConfigsPath)
|
public Dumper(string InfoicPath, string Infoic2Path, string Infoic76Path, string ConfigsPath)
|
||||||
{
|
{
|
||||||
// Open the configs.csv file
|
// Open the configs.csv file
|
||||||
config_csv_list = [];
|
config_csv_list = [];
|
||||||
@ -75,7 +75,7 @@ public Dumper(string InfoicPath, string Infoic2Path, string InfoicT76Path, strin
|
|||||||
Console.WriteLine("configs.csv not found.");
|
Console.WriteLine("configs.csv not found.");
|
||||||
}
|
}
|
||||||
|
|
||||||
infoic = new(InfoicPath, Infoic2Path, InfoicT76Path);
|
infoic = new(InfoicPath, Infoic2Path, Infoic76Path);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -85,19 +85,19 @@ private static void PrintUsage()
|
|||||||
"InfoIc Dumper usage:" + Environment.NewLine +
|
"InfoIc Dumper usage:" + Environment.NewLine +
|
||||||
"--infoic-path <file> Specify infoic.dll path" + Environment.NewLine +
|
"--infoic-path <file> Specify infoic.dll path" + Environment.NewLine +
|
||||||
"--infoic2-path <file> Specify infoic2plus.dll path" + Environment.NewLine +
|
"--infoic2-path <file> Specify infoic2plus.dll path" + Environment.NewLine +
|
||||||
"--infoicT76-path <file> Specify infoicT76.dll path" + Environment.NewLine +
|
"--infoic76-path <file> Specify infoic76.dll path" + Environment.NewLine +
|
||||||
"--configs-path <file> Specify configs.csv file path" + Environment.NewLine +
|
"--configs-path <file> Specify configs.csv file path" + Environment.NewLine +
|
||||||
"--output-dir <directory> Specify the dump output directory" + Environment.NewLine +
|
"--output-dir <directory> Specify the dump output directory" + Environment.NewLine +
|
||||||
"--keep-duplicates Don't remove duplicates" + Environment.NewLine +
|
"--keep-duplicates Don't remove duplicates" + Environment.NewLine +
|
||||||
"--no-sorting Don't sort devices by type" + Environment.NewLine +
|
"--no-sorting Don't sort devices by type" + Environment.NewLine +
|
||||||
"--no-group Don't group devices" + Environment.NewLine +
|
"--no-group Don't group devices" + Environment.NewLine +
|
||||||
"--no-infoic Don't dump infoic.dll" + Environment.NewLine +
|
"--no-infoic Don't dump infoic.dll" + Environment.NewLine +
|
||||||
"--no-infoic2 Don't dump infoic2plus.dll" + Environment.NewLine +
|
"--no--infoic2 Don't dump infoic76.dll" + Environment.NewLine +
|
||||||
"--no-infoict76 Don't dump infoicT76.dll" + Environment.NewLine +
|
"--no--infoic76 Don't dump infoic2plus.dll" + Environment.NewLine +
|
||||||
"--no-tl866 Don't dump TL866II+ entries" + Environment.NewLine +
|
"--no-tl866 Don't dump TL866II+ entries" + Environment.NewLine +
|
||||||
"--no-t48 Don't dump T48 entries" + Environment.NewLine +
|
"--no-T48 Don't dump T48 entries" + Environment.NewLine +
|
||||||
"--no-t56 Don't dump T56 entries" + Environment.NewLine +
|
"--no-T56 Don't dump T56 entries" + Environment.NewLine +
|
||||||
"--no-t76 Don't dump T76 entries" + Environment.NewLine +
|
"--no-T76 Don't dump T76 entries" + Environment.NewLine +
|
||||||
"--no-memory Don't dump EPROM/EEPROM/FLASH devices" + Environment.NewLine +
|
"--no-memory Don't dump EPROM/EEPROM/FLASH devices" + Environment.NewLine +
|
||||||
"--no-mcu Don't dump MCU/MPU devices" + Environment.NewLine +
|
"--no-mcu Don't dump MCU/MPU devices" + Environment.NewLine +
|
||||||
"--no-pld Don't dump PLD/CPLD devices" + Environment.NewLine +
|
"--no-pld Don't dump PLD/CPLD devices" + Environment.NewLine +
|
||||||
@ -126,8 +126,8 @@ private static bool ParseArgs(string[] args, ref Options options)
|
|||||||
options.DumpInfoic2 = false;
|
options.DumpInfoic2 = false;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "--no-infoict76":
|
case "--no-infoic76":
|
||||||
options.DumpInfoicT76 = false;
|
options.DumpInfoic76 = false;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "--no-tl866":
|
case "--no-tl866":
|
||||||
@ -204,11 +204,11 @@ private static bool ParseArgs(string[] args, ref Options options)
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
case "--infoicT76-path":
|
case "--infoic76-path":
|
||||||
if (i + 1 < args.Length)
|
if (i + 1 < args.Length)
|
||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
options.InfoicT76Path = args[i];
|
options.Infoic76Path = args[i];
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -255,10 +255,10 @@ static int Main(string[] args)
|
|||||||
{
|
{
|
||||||
DumpInfoic = true,
|
DumpInfoic = true,
|
||||||
DumpInfoic2 = true,
|
DumpInfoic2 = true,
|
||||||
DumpInfoicT76 = true,
|
DumpInfoic76 = true,
|
||||||
InfoicPath = StartupPath + "InfoIC.dll",
|
InfoicPath = StartupPath + "InfoIC.dll",
|
||||||
Infoic2Path = StartupPath + "InfoIC2Plus.dll",
|
Infoic2Path = StartupPath + "InfoIC2Plus.dll",
|
||||||
InfoicT76Path = StartupPath + "InfoICT76.dll",
|
Infoic76Path = StartupPath + "InfoICT76.dll",
|
||||||
ConfigsPath = StartupPath + "configs.csv",
|
ConfigsPath = StartupPath + "configs.csv",
|
||||||
OutPath = StartupPath + "output" + Path.DirectorySeparatorChar,
|
OutPath = StartupPath + "output" + Path.DirectorySeparatorChar,
|
||||||
TL866 = true,
|
TL866 = true,
|
||||||
@ -293,7 +293,7 @@ static int Main(string[] args)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!options.DumpInfoic && !options.DumpInfoic2 && !options.DumpInfoicT76)
|
if (!options.DumpInfoic && !options.DumpInfoic2 && !options.DumpInfoic76)
|
||||||
{
|
{
|
||||||
Console.WriteLine("Nothing to dump.");
|
Console.WriteLine("Nothing to dump.");
|
||||||
return -1;
|
return -1;
|
||||||
@ -301,9 +301,9 @@ static int Main(string[] args)
|
|||||||
|
|
||||||
if (!options.DumpInfoic) { options.InfoicPath = string.Empty; }
|
if (!options.DumpInfoic) { options.InfoicPath = string.Empty; }
|
||||||
if (!options.DumpInfoic2) { options.Infoic2Path = string.Empty; }
|
if (!options.DumpInfoic2) { options.Infoic2Path = string.Empty; }
|
||||||
if (!options.DumpInfoicT76) { options.InfoicT76Path = string.Empty; }
|
if (!options.DumpInfoic76) { options.Infoic76Path = string.Empty; }
|
||||||
|
|
||||||
Dumper dumper = new(options.InfoicPath, options.Infoic2Path, options.InfoicT76Path, options.ConfigsPath);
|
Dumper dumper = new(options.InfoicPath, options.Infoic2Path, options.Infoic76Path, options.ConfigsPath);
|
||||||
return (dumper.BeginDump(ref options));
|
return (dumper.BeginDump(ref options));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -334,19 +334,19 @@ private int BeginDump(ref Options options)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.DumpInfoicT76)
|
if (options.DumpInfoic76)
|
||||||
{
|
{
|
||||||
if (options.DumpInfoicT76 && infoic.InfoIcT76Loaded)
|
if (options.DumpInfoic76 && infoic.InfoIc76Loaded)
|
||||||
{
|
{
|
||||||
Console.WriteLine("InfoIcT76.dll loaded. Total devices:{0}", infoic.InfoIcT76NumDevices);
|
Console.WriteLine("InfoIc76.dll loaded. Total devices:{0}", infoic.InfoIc76NumDevices);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Console.WriteLine("InfoIcT76.dll not found.");
|
Console.WriteLine("InfoIc76.dll not found.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!infoic.InfoIcLoaded && !infoic.InfoIc2Loaded && !infoic.InfoIcT76Loaded)
|
if (!infoic.InfoIcLoaded && !infoic.InfoIc2Loaded && !infoic.InfoIc76Loaded)
|
||||||
{
|
{
|
||||||
Console.WriteLine("{0}No modules to dump, the program will exit now.", Environment.NewLine);
|
Console.WriteLine("{0}No modules to dump, the program will exit now.", Environment.NewLine);
|
||||||
return -1;
|
return -1;
|
||||||
@ -378,17 +378,17 @@ private int BeginDump(ref Options options)
|
|||||||
// Create the root xml
|
// Create the root xml
|
||||||
XElement xml_root = new("infoic");
|
XElement xml_root = new("infoic");
|
||||||
|
|
||||||
// Dump the infoicT76.dll
|
// Dump the infoic76.dll
|
||||||
if (infoic.InfoIcT76Loaded && options.DumpInfoicT76)
|
if (infoic.InfoIc76Loaded && options.DumpInfoic76)
|
||||||
{
|
{
|
||||||
filter = [];
|
filter = [];
|
||||||
total = [];
|
total = [];
|
||||||
device_count = 0;
|
device_count = 0;
|
||||||
XElement[] elements = DumpDatabase(ref options, DB_TYPE.INFOICT76, ref filter, ref total, ref device_count);
|
XElement[] elements = DumpDatabase(ref options, DB_TYPE.INFOIC76, ref filter, ref total, ref device_count);
|
||||||
XElement database = new("database");
|
XElement database = new("database");
|
||||||
database.Add(new XAttribute("type", "INFOICT76"), elements);
|
database.Add(new XAttribute("type", "INFOIC76"), elements);
|
||||||
xml_root.Add(database);
|
xml_root.Add(database);
|
||||||
if (!WriteLogs(options.OutPath, filter, "filterT76.txt", total, "logT76.txt", device_count)) { return -1; }
|
if (!WriteLogs(options.OutPath, filter, "filter76.txt", total, "log76.txt", device_count)) { return -1; }
|
||||||
}
|
}
|
||||||
|
|
||||||
// Dump the infoic2plus.dll
|
// Dump the infoic2plus.dll
|
||||||
@ -535,8 +535,8 @@ private bool CompareDevice(DevStruct d1, DevStruct d2)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
db_name = "InfoIcT76.dll";
|
db_name = "InfoIc76.dll";
|
||||||
num_mfc = infoic.InfoIcT76Manufacturers;
|
num_mfc = infoic.InfoIc76Manufacturers;
|
||||||
}
|
}
|
||||||
|
|
||||||
Console.WriteLine("{0}{1} dump started.", Environment.NewLine, db_name);
|
Console.WriteLine("{0}{1} dump started.", Environment.NewLine, db_name);
|
||||||
@ -560,14 +560,8 @@ private bool CompareDevice(DevStruct d1, DevStruct d2)
|
|||||||
(Devstruct.Category == (uint)CHIP_TYPE.SRAM && !options.Sram) ||
|
(Devstruct.Category == (uint)CHIP_TYPE.SRAM && !options.Sram) ||
|
||||||
(Devstruct.Category == (uint)CHIP_TYPE.NAND && !options.Nand) ||
|
(Devstruct.Category == (uint)CHIP_TYPE.NAND && !options.Nand) ||
|
||||||
(Devstruct.Category == (uint)CHIP_TYPE.EMMC && !options.Emmc) ||
|
(Devstruct.Category == (uint)CHIP_TYPE.EMMC && !options.Emmc) ||
|
||||||
(Devstruct.Category == (uint)CHIP_TYPE.VGA && !options.Vga) ||
|
(Devstruct.Category == (uint)CHIP_TYPE.VGA && !options.Vga))
|
||||||
((Devstruct.Opts8 & PROG_MASK) == TL866II_FLAG && !options.TL866) ||
|
continue;
|
||||||
((Devstruct.Opts8 & PROG_MASK) == T48_FLAG && !options.T48) ||
|
|
||||||
((Devstruct.Opts8 & PROG_MASK) == T56_FLAG && !options.T56) ||
|
|
||||||
((Devstruct.Opts8 & PROG_MASK) == T76_FLAG && !options.T76)){
|
|
||||||
Console.WriteLine("{0} removed.{1}", Devstruct.Name, Environment.NewLine);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
//Remove spaces and bad characters
|
//Remove spaces and bad characters
|
||||||
Devstruct.Name = Devstruct.Name.Replace(" ", "").Replace(",", ";").
|
Devstruct.Name = Devstruct.Name.Replace(" ", "").Replace(",", ";").
|
||||||
|
@ -14,11 +14,11 @@ internal class Infoic
|
|||||||
public static extern IntPtr GetProcAddress(IntPtr module, string proc);
|
public static extern IntPtr GetProcAddress(IntPtr module, string proc);
|
||||||
|
|
||||||
// Function pointers delegates
|
// Function pointers delegates
|
||||||
private delegate void DGetMfcStruT76(uint manufacturer, ref MfcStruct mfstruct);
|
private delegate void DGetMfcStru76(uint manufacturer, ref MfcStruct mfstruct);
|
||||||
private delegate void DGetIcStruT76(uint manufacturer, uint device_index, ref InfoIc2Struct devstruct);
|
private delegate void DGetIcStru76(uint manufacturer, uint device_index, ref InfoIc2Struct devstruct);
|
||||||
private delegate uint DGetIcMFCT76(string search, uint[] manufacturer_array, uint type, uint mask);
|
private delegate uint DGetIcMFC76(string search, uint[] manufacturer_array, uint type, uint mask);
|
||||||
private delegate uint DGetIcListT76(string search, uint[] ic_array, uint manufacturer, uint type, uint mask);
|
private delegate uint DGetIcList76(string search, uint[] ic_array, uint manufacturer, uint type, uint mask);
|
||||||
private delegate uint DGetDllInfoT76(ref uint dll_version, ref uint num_mfcs, uint version);
|
private delegate uint DGetDllInfo76(ref uint dll_version, ref uint num_mfcs, uint version);
|
||||||
|
|
||||||
private delegate void DGetMfcStru2(uint manufacturer, ref MfcStruct mfstruct);
|
private delegate void DGetMfcStru2(uint manufacturer, ref MfcStruct mfstruct);
|
||||||
private delegate void DGetIcStru2(uint manufacturer, uint device_index, ref InfoIc2Struct devstruct);
|
private delegate void DGetIcStru2(uint manufacturer, uint device_index, ref InfoIc2Struct devstruct);
|
||||||
@ -44,11 +44,11 @@ internal class Infoic
|
|||||||
private readonly DGetIcList2? GetIcList2;
|
private readonly DGetIcList2? GetIcList2;
|
||||||
private readonly DGetDllInfo2? GetDllInfo2;
|
private readonly DGetDllInfo2? GetDllInfo2;
|
||||||
|
|
||||||
private readonly DGetMfcStruT76? GetMfcStructT76;
|
private readonly DGetMfcStru76? GetMfcStruct76;
|
||||||
private readonly DGetIcStruT76? GetIcStructT76;
|
private readonly DGetIcStru76? GetIcStruct76;
|
||||||
private readonly DGetIcMFCT76? GetIcMFCT76;
|
private readonly DGetIcMFC76? GetIcMFC76;
|
||||||
private readonly DGetIcListT76? GetIcListT76;
|
private readonly DGetIcList76? GetIcList76;
|
||||||
private readonly DGetDllInfoT76? GetDllInfoT76;
|
private readonly DGetDllInfo76? GetDllInfo76;
|
||||||
|
|
||||||
|
|
||||||
public struct DevStruct
|
public struct DevStruct
|
||||||
@ -144,40 +144,37 @@ private struct MfcStruct
|
|||||||
public uint Count;
|
public uint Count;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static readonly uint T56_FLAG = 0x10000000;
|
public static readonly uint T56_MASK = 0x10000000;
|
||||||
public static readonly uint TL866II_FLAG = 0x20000000;
|
public static readonly uint T48_MASK = 0x40000000;
|
||||||
public static readonly uint T48_FLAG = 0x40000000;
|
public static readonly uint TL866II_MASK = 0x20000000;
|
||||||
public static readonly uint T76_FLAG = 0x80000000;
|
|
||||||
public static readonly uint PROG_MASK = T56_FLAG | TL866II_FLAG | T48_FLAG | T76_FLAG;
|
|
||||||
|
|
||||||
|
|
||||||
public static readonly uint SMT_FLAG = 0x80000000;
|
public static readonly uint SMT_FLAG = 0x80000000;
|
||||||
public static readonly uint PLCC_FLAG = 0x40000000;
|
public static readonly uint PLCC_FLAG = 0x40000000;
|
||||||
public static readonly uint ERASE_FLAG = 0x20;
|
public static readonly uint ERASE_FLAG = 0x20;
|
||||||
|
|
||||||
public enum CHIP_TYPE : uint { MEMORY = 1, MPU, PLD, SRAM, LOGIC, NAND, EMMC, VGA }
|
public enum CHIP_TYPE : uint { MEMORY = 1, MPU, PLD, SRAM, LOGIC, NAND, EMMC, VGA }
|
||||||
public enum DB_TYPE { INFOIC, INFOIC2, INFOICT76 }
|
public enum DB_TYPE { INFOIC, INFOIC2, INFOIC76 }
|
||||||
|
|
||||||
|
|
||||||
private readonly IntPtr HInfoIc = IntPtr.Zero;
|
private readonly IntPtr HInfoIc = IntPtr.Zero;
|
||||||
private readonly IntPtr HInfoIc2 = IntPtr.Zero;
|
private readonly IntPtr HInfoIc2 = IntPtr.Zero;
|
||||||
private readonly IntPtr HInfoIcT76 = IntPtr.Zero;
|
private readonly IntPtr HInfoIc76 = IntPtr.Zero;
|
||||||
private readonly uint InfoicDeviceCount;
|
private readonly uint InfoicDeviceCount;
|
||||||
private readonly uint Infoic2DeviceCount;
|
private readonly uint Infoic2DeviceCount;
|
||||||
private readonly uint InfoicT76DeviceCount;
|
private readonly uint Infoic76DeviceCount;
|
||||||
private readonly uint InfoicManufCount;
|
private readonly uint InfoicManufCount;
|
||||||
private readonly uint Infoic2ManufCount;
|
private readonly uint Infoic2ManufCount;
|
||||||
private readonly uint InfoicT76ManufCount;
|
private readonly uint Infoic76ManufCount;
|
||||||
|
|
||||||
public bool InfoIcLoaded { get => HInfoIc != IntPtr.Zero; }
|
public bool InfoIcLoaded { get => HInfoIc != IntPtr.Zero; }
|
||||||
public bool InfoIc2Loaded { get => HInfoIc2 != IntPtr.Zero; }
|
public bool InfoIc2Loaded { get => HInfoIc2 != IntPtr.Zero; }
|
||||||
public bool InfoIcT76Loaded { get => HInfoIcT76 != IntPtr.Zero; }
|
public bool InfoIc76Loaded { get => HInfoIc76 != IntPtr.Zero; }
|
||||||
public uint InfoIcNumDevices { get => InfoicDeviceCount; }
|
public uint InfoIcNumDevices { get => InfoicDeviceCount; }
|
||||||
public uint InfoIc2NumDevices { get => Infoic2DeviceCount; }
|
public uint InfoIc2NumDevices { get => Infoic2DeviceCount; }
|
||||||
public uint InfoIcT76NumDevices { get => InfoicT76DeviceCount; }
|
public uint InfoIc76NumDevices { get => Infoic76DeviceCount; }
|
||||||
public uint InfoIcManufacturers { get => InfoicManufCount; }
|
public uint InfoIcManufacturers { get => InfoicManufCount; }
|
||||||
public uint InfoIc2Manufacturers { get => Infoic2ManufCount; }
|
public uint InfoIc2Manufacturers { get => Infoic2ManufCount; }
|
||||||
public uint InfoIcT76Manufacturers { get => InfoicT76ManufCount; }
|
public uint InfoIc76Manufacturers { get => Infoic76ManufCount; }
|
||||||
|
|
||||||
|
|
||||||
private static IntPtr GetProc(ref IntPtr handle, string name)
|
private static IntPtr GetProc(ref IntPtr handle, string name)
|
||||||
@ -192,12 +189,12 @@ private static IntPtr GetProc(ref IntPtr handle, string name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Class constructor
|
// Class constructor
|
||||||
public Infoic(string InfoicPath, string Infoic2Path, string InfoicT76Path)
|
public Infoic(string InfoicPath, string Infoic2Path, string Infoic76Path)
|
||||||
{
|
{
|
||||||
// Try to load modules
|
// Try to load modules
|
||||||
if (InfoicPath != string.Empty) { HInfoIc = LoadLibrary(InfoicPath); }
|
if (InfoicPath != string.Empty) { HInfoIc = LoadLibrary(InfoicPath); }
|
||||||
if (Infoic2Path != string.Empty) { HInfoIc2 = LoadLibrary(Infoic2Path); }
|
if (Infoic2Path != string.Empty) { HInfoIc2 = LoadLibrary(Infoic2Path); }
|
||||||
if (InfoicT76Path != string.Empty) { HInfoIcT76 = LoadLibrary(InfoicT76Path); }
|
if (Infoic76Path != string.Empty) { HInfoIc76 = LoadLibrary(Infoic76Path); }
|
||||||
|
|
||||||
IntPtr ProcAddress;
|
IntPtr ProcAddress;
|
||||||
|
|
||||||
@ -261,33 +258,33 @@ public Infoic(string InfoicPath, string Infoic2Path, string InfoicT76Path)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HInfoIcT76 != IntPtr.Zero)
|
if (HInfoIc76 != IntPtr.Zero)
|
||||||
{
|
{
|
||||||
ProcAddress = GetProc(ref HInfoIcT76, "GetMfcStru");
|
ProcAddress = GetProc(ref HInfoIc76, "GetMfcStru");
|
||||||
if (ProcAddress == IntPtr.Zero) { return; }
|
if (ProcAddress == IntPtr.Zero) { return; }
|
||||||
GetMfcStructT76 = (DGetMfcStruT76)Marshal.GetDelegateForFunctionPointer(ProcAddress, typeof(DGetMfcStruT76));
|
GetMfcStruct76 = (DGetMfcStru76)Marshal.GetDelegateForFunctionPointer(ProcAddress, typeof(DGetMfcStru76));
|
||||||
|
|
||||||
ProcAddress = GetProc(ref HInfoIcT76, "GetIcStru");
|
ProcAddress = GetProc(ref HInfoIc76, "GetIcStru");
|
||||||
if (ProcAddress == IntPtr.Zero) { return; }
|
if (ProcAddress == IntPtr.Zero) { return; }
|
||||||
GetIcStructT76 = (DGetIcStruT76)Marshal.GetDelegateForFunctionPointer(ProcAddress, typeof(DGetIcStruT76));
|
GetIcStruct76 = (DGetIcStru76)Marshal.GetDelegateForFunctionPointer(ProcAddress, typeof(DGetIcStru76));
|
||||||
|
|
||||||
ProcAddress = GetProc(ref HInfoIcT76, "GetIcMFC");
|
ProcAddress = GetProc(ref HInfoIc76, "GetIcMFC");
|
||||||
if (ProcAddress == IntPtr.Zero) { return; }
|
if (ProcAddress == IntPtr.Zero) { return; }
|
||||||
GetIcMFCT76 = (DGetIcMFCT76)Marshal.GetDelegateForFunctionPointer(ProcAddress, typeof(DGetIcMFCT76));
|
GetIcMFC76 = (DGetIcMFC76)Marshal.GetDelegateForFunctionPointer(ProcAddress, typeof(DGetIcMFC76));
|
||||||
|
|
||||||
ProcAddress = GetProc(ref HInfoIcT76, "GetIcList");
|
ProcAddress = GetProc(ref HInfoIc76, "GetIcList");
|
||||||
if (ProcAddress == IntPtr.Zero) { return; }
|
if (ProcAddress == IntPtr.Zero) { return; }
|
||||||
GetIcListT76 = (DGetIcListT76)Marshal.GetDelegateForFunctionPointer(ProcAddress, typeof(DGetIcListT76));
|
GetIcList76 = (DGetIcList76)Marshal.GetDelegateForFunctionPointer(ProcAddress, typeof(DGetIcList76));
|
||||||
|
|
||||||
ProcAddress = GetProc(ref HInfoIcT76, "GetDllInfo");
|
ProcAddress = GetProc(ref HInfoIc76, "GetDllInfo");
|
||||||
if (ProcAddress == IntPtr.Zero) { return; }
|
if (ProcAddress == IntPtr.Zero) { return; }
|
||||||
GetDllInfoT76 = (DGetDllInfoT76)Marshal.GetDelegateForFunctionPointer(ProcAddress, typeof(DGetDllInfoT76));
|
GetDllInfo76 = (DGetDllInfo76)Marshal.GetDelegateForFunctionPointer(ProcAddress, typeof(DGetDllInfo76));
|
||||||
|
|
||||||
InfoicT76DeviceCount = GetDeviceCount(ref InfoicT76ManufCount, DB_TYPE.INFOICT76);
|
Infoic76DeviceCount = GetDeviceCount(ref Infoic76ManufCount, DB_TYPE.INFOIC76);
|
||||||
if (InfoicT76DeviceCount == 0)
|
if (Infoic76DeviceCount == 0)
|
||||||
{
|
{
|
||||||
FreeLibrary(HInfoIcT76);
|
FreeLibrary(HInfoIc76);
|
||||||
HInfoIcT76 = IntPtr.Zero;
|
HInfoIc76 = IntPtr.Zero;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -310,9 +307,9 @@ private void GetMfc(uint manufacturer, ref MfcStruct mfcstruct, DB_TYPE type)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (GetMfcStructT76 is not null)
|
if (GetMfcStruct76 is not null)
|
||||||
{
|
{
|
||||||
GetMfcStructT76(manufacturer, ref mfcstruct);
|
GetMfcStruct76(manufacturer, ref mfcstruct);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -391,10 +388,10 @@ public DevStruct GetDevice(uint manufacturer, uint index, DB_TYPE type)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (GetIcStructT76 is null) { return devstruct; }
|
if (GetIcStruct76 is null) { return devstruct; }
|
||||||
InfoIc2Struct device = new();
|
InfoIc2Struct device = new();
|
||||||
device.Name = string.Empty;
|
device.Name = string.Empty;
|
||||||
GetIcStructT76(manufacturer, index, ref device);
|
GetIcStruct76(manufacturer, index, ref device);
|
||||||
devstruct.ProtocolId = device.ProtocolId;
|
devstruct.ProtocolId = device.ProtocolId;
|
||||||
devstruct.Opts8 = device.Opts8;
|
devstruct.Opts8 = device.Opts8;
|
||||||
devstruct.Category = device.Category;
|
devstruct.Category = device.Category;
|
||||||
@ -447,8 +444,8 @@ private uint GetDeviceCount(ref uint manuf_count, DB_TYPE type)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (GetDllInfoT76 is null) { return 0; }
|
if (GetDllInfo76 is null) { return 0; }
|
||||||
GetDllInfoT76(ref dll_version, ref manuf_count, 0);
|
GetDllInfo76(ref dll_version, ref manuf_count, 0);
|
||||||
if (manuf_count < 170) { return 0; }
|
if (manuf_count < 170) { return 0; }
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -467,10 +464,10 @@ private uint GetDeviceCount(ref uint manuf_count, DB_TYPE type)
|
|||||||
if (GetMfcStruct2 is null) { return 0; }
|
if (GetMfcStruct2 is null) { return 0; }
|
||||||
GetMfcStruct2(i, ref mfcstruct);
|
GetMfcStruct2(i, ref mfcstruct);
|
||||||
}
|
}
|
||||||
else if (type == DB_TYPE.INFOICT76)
|
else if (type == DB_TYPE.INFOIC76)
|
||||||
{
|
{
|
||||||
if (GetMfcStructT76 is null) { return 0; }
|
if (GetMfcStruct76 is null) { return 0; }
|
||||||
GetMfcStructT76(i, ref mfcstruct);
|
GetMfcStruct76(i, ref mfcstruct);
|
||||||
}
|
}
|
||||||
count += mfcstruct.Count;
|
count += mfcstruct.Count;
|
||||||
}
|
}
|
||||||
|
BIN
InfoIcDump/InfoicDump.exe
Normal file → Executable file
BIN
InfoIcDump/InfoicDump.exe
Normal file → Executable file
Binary file not shown.
Loading…
Reference in New Issue
Block a user