leechcorepyc 2.19.2__tar.gz → 2.20.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. {leechcorepyc-2.19.2/leechcorepyc.egg-info → leechcorepyc-2.20.0}/PKG-INFO +1 -1
  2. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/includes/leechcore.h +4 -4
  3. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/includes/leechcore_device.h +3 -3
  4. leechcorepyc-2.20.0/leechcore/Makefile.macos +29 -0
  5. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/device_file.c +1 -1
  6. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/device_fpga.c +20 -13
  7. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/device_hibr.c +534 -534
  8. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/device_pmem.c +3 -3
  9. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/device_tmd.c +263 -263
  10. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/device_usb3380.c +357 -343
  11. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/device_vmm.c +82 -82
  12. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/device_vmware.c +216 -216
  13. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/leechcore.c +3 -3
  14. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/leechcore.h +4 -4
  15. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/leechcore_device.h +3 -3
  16. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/leechcore_internal.h +73 -73
  17. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/leechrpc.h +191 -189
  18. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/leechrpc_c.c +31 -56
  19. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/leechrpc_h.h +1 -1
  20. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/leechrpcclient.c +40 -18
  21. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/leechrpcshared.c +151 -151
  22. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/memmap.c +1 -1
  23. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/ob/ob_bytequeue.c +1 -1
  24. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/ob/ob_core.c +170 -170
  25. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/ob/ob_map.c +1 -1
  26. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/ob/ob_set.c +557 -557
  27. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/oscompatibility.c +609 -465
  28. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/oscompatibility.h +284 -264
  29. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/util.c +207 -210
  30. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/util.h +106 -95
  31. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/version.h +3 -3
  32. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore_device_rawtcp/leechcore_device_rawtcp.c +293 -293
  33. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore_device_rawtcp/oscompatibility.c +24 -24
  34. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore_device_rawtcp/oscompatibility.h +45 -45
  35. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore_device_rawtcp/version.h +24 -24
  36. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore_ft601_driver_linux/Makefile +18 -18
  37. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcorepyc.c +1 -1
  38. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0/leechcorepyc.egg-info}/PKG-INFO +1 -1
  39. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcorepyc.egg-info/SOURCES.txt +1 -0
  40. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcorepyc.h +1 -1
  41. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcorepyc_barrequest.c +1 -1
  42. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/ms-compress/include/mscomp/general.h +1 -1
  43. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/oscompatibility.c +294 -294
  44. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/oscompatibility.h +219 -219
  45. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/setup.py +1 -1
  46. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/MANIFEST.in +0 -0
  47. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/Makefile +0 -0
  48. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/README +0 -0
  49. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/files/dummy +0 -0
  50. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/includes/libpdbcrust.h +0 -0
  51. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/includes/vmmdll.h +0 -0
  52. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/includes/vmmyara.h +0 -0
  53. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/Makefile +0 -0
  54. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/leechcore.rc +0 -0
  55. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/leechrpc.idl +0 -0
  56. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore/ob/ob.h +0 -0
  57. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore_device_qemu/Makefile +0 -0
  58. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore_device_qemu/leechcore_device_qemu.c +0 -0
  59. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore_device_rawtcp/Makefile +0 -0
  60. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore_device_rawtcp/plugin.rc +0 -0
  61. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore_device_rawtcp/resource.h +0 -0
  62. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore_ft601_driver_linux/fpga_libusb.c +0 -0
  63. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore_ft601_driver_linux/fpga_libusb.h +0 -0
  64. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore_ft601_driver_linux/leechcore_ft601_driver_linux.c +0 -0
  65. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcore_ft601_driver_linux/leechcore_ft601_driver_linux.h +0 -0
  66. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcorepyc/__init__.py +0 -0
  67. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcorepyc.egg-info/dependency_links.txt +0 -0
  68. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/leechcorepyc.egg-info/top_level.txt +0 -0
  69. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/ms-compress/Makefile +0 -0
  70. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/ms-compress/include/lznt1.h +0 -0
  71. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/ms-compress/include/mscomp/Array.h +0 -0
  72. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/ms-compress/include/mscomp/Bitstream.h +0 -0
  73. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/ms-compress/include/mscomp/CircularBuffer.h +0 -0
  74. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/ms-compress/include/mscomp/HuffmanDecoder.h +0 -0
  75. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/ms-compress/include/mscomp/HuffmanEncoder.h +0 -0
  76. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/ms-compress/include/mscomp/LZNT1Dictionary.h +0 -0
  77. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/ms-compress/include/mscomp/LZNT1Dictionary_SA.h +0 -0
  78. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/ms-compress/include/mscomp/XpressDictionary.h +0 -0
  79. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/ms-compress/include/mscomp/config.h +0 -0
  80. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/ms-compress/include/mscomp/internal.h +0 -0
  81. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/ms-compress/include/mscomp/sorting.h +0 -0
  82. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/ms-compress/include/mscomp.h +0 -0
  83. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/ms-compress/include/xpress.h +0 -0
  84. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/ms-compress/include/xpress_huff.h +0 -0
  85. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/ms-compress/src/lznt1_compress.cpp +0 -0
  86. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/ms-compress/src/lznt1_decompress.cpp +0 -0
  87. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/ms-compress/src/mscomp.cpp +0 -0
  88. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/ms-compress/src/xpress_compress.cpp +0 -0
  89. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/ms-compress/src/xpress_decompress.cpp +0 -0
  90. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/ms-compress/src/xpress_huff_compress.cpp +0 -0
  91. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/ms-compress/src/xpress_huff_decompress.cpp +0 -0
  92. {leechcorepyc-2.19.2 → leechcorepyc-2.20.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.2
2
2
  Name: leechcorepyc
3
- Version: 2.19.2
3
+ Version: 2.20.0
4
4
  Summary: LeechCore for Python
5
5
  Home-page: https://github.com/ufrisk/LeechCore
6
6
  Author: Ulf Frisk
@@ -11,10 +11,10 @@
11
11
  // - README: https://github.com/ufrisk/LeechCore
12
12
  // - GUIDE: https://github.com/ufrisk/LeechCore/wiki
13
13
  //
14
- // (c) Ulf Frisk, 2020-2024
14
+ // (c) Ulf Frisk, 2020-2025
15
15
  // Author: Ulf Frisk, pcileech@frizk.net
16
16
  //
17
- // Header Version: 2.19.0
17
+ // Header Version: 2.20.0
18
18
  //
19
19
 
20
20
  #ifndef __LEECHCORE_H__
@@ -34,7 +34,7 @@ extern "C" {
34
34
  typedef unsigned __int64 QWORD, *PQWORD;
35
35
 
36
36
  #endif /* _WIN32 */
37
- #ifdef LINUX
37
+ #if defined(LINUX) || defined(MACOS)
38
38
 
39
39
  #include <inttypes.h>
40
40
  #include <stdlib.h>
@@ -75,7 +75,7 @@ typedef const uint16_t *LPCWSTR;
75
75
  #define _Printf_format_string_
76
76
  #define _Success_(x)
77
77
 
78
- #endif /* LINUX */
78
+ #endif /* LINUX || MACOS */
79
79
 
80
80
 
81
81
 
@@ -15,7 +15,7 @@
15
15
  // device may be created/opened - if only one instance may be open at the same
16
16
  // time this should be handled by the plugin module itself.
17
17
  //
18
- // (c) Ulf Frisk, 2020-2024
18
+ // (c) Ulf Frisk, 2020-2025
19
19
  // Author: Ulf Frisk, pcileech@frizk.net
20
20
  //
21
21
  // Header Version: 2.5
@@ -29,7 +29,7 @@ extern "C" {
29
29
  #include <stdio.h>
30
30
  #include "leechcore.h"
31
31
 
32
- #ifdef LINUX
32
+ #if defined(LINUX) || defined(MACOS)
33
33
  #include <string.h>
34
34
  #include <pthread.h>
35
35
  #ifndef _LINUX_DEF_CRITICAL_SECTION
@@ -39,7 +39,7 @@ typedef struct tdCRITICAL_SECTION {
39
39
  pthread_mutexattr_t mta;
40
40
  } CRITICAL_SECTION, *LPCRITICAL_SECTION;
41
41
  #endif /* _LINUX_DEF_CRITICAL_SECTION */
42
- #endif /* LINUX */
42
+ #endif /* LINUX || MACOS */
43
43
 
44
44
  #define LC_CONTEXT_VERSION 0xc0e10004
45
45
  #define LC_DEVICE_PARAMETER_MAX_ENTRIES 0x10
@@ -0,0 +1,29 @@
1
+ CC=clang
2
+ CFLAGS += -I. -D MACOS -D _GNU_SOURCE -fPIC -fvisibility=hidden -pthread
3
+ CFLAGS += -fPIC -fstack-protector-strong -D_FORTIFY_SOURCE=2 -O1
4
+ CFLAGS += -Wall -Wno-multichar -Wno-unused-result -Wno-unused-variable -Wno-unused-value
5
+ CFLAGS += -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast
6
+ CFLAGS += -mmacosx-version-min=11.0
7
+ # DEBUG FLAGS BELOW
8
+ #CFLAGS += -O0
9
+ #CFLAGS += -fsanitize=address
10
+ # DEBUG FLAGS ABOVE
11
+ LDFLAGS += -g -dynamiclib -mmacosx-version-min=11.0
12
+ DEPS = leechcore.h
13
+ OBJ = oscompatibility.o leechcore.o util.o memmap.o device_file.o device_fpga.o device_hibr.o device_pmem.o device_tmd.o device_usb3380.o device_vmm.o device_vmware.o leechrpcclient.o ob/ob_core.o ob/ob_map.o ob/ob_set.o ob/ob_bytequeue.o
14
+
15
+ %.o: %.c $(DEPS)
16
+ $(CC) -c -o $@ $< $(CFLAGS)
17
+
18
+ leechcore: $(OBJ)
19
+ $(CC) $(CFLAGS) $(LDFLAGS) -o leechcore.dylib $^
20
+ mv leechcore.dylib ../files/
21
+ rm -f *.o || true
22
+ rm -f */*.o || true
23
+ rm -f *.dylib || true
24
+ true
25
+
26
+ clean:
27
+ rm -f *.o || true
28
+ rm -f */*.o || true
29
+ rm -f *.dylib || true
@@ -1,6 +1,6 @@
1
1
  // device_file.c : implementation related to file backed memory acquisition device.
2
2
  //
3
- // (c) Ulf Frisk, 2018-2024
3
+ // (c) Ulf Frisk, 2018-2025
4
4
  // Author: Ulf Frisk, pcileech@frizk.net
5
5
  //
6
6
  #include "leechcore.h"
@@ -7,7 +7,7 @@
7
7
  // - FT2232H/FT245 protocol - access FPGA via FT2232H USB2 instead of FT601 USB3.
8
8
  // - Other devices with plugin driver - ZDMA etc.
9
9
  //
10
- // (c) Ulf Frisk, 2017-2024
10
+ // (c) Ulf Frisk, 2017-2025
11
11
  // Author: Ulf Frisk, pcileech@frizk.net
12
12
  //
13
13
  #include "leechcore.h"
@@ -33,11 +33,19 @@
33
33
 
34
34
  #ifdef _WIN32
35
35
  #define DEVICE_FPGA_FT601_LIBRARY "FTD3XX.dll"
36
+ #define DEVICE_FPGA_FT2XX_LIBRARY "FTD2XX.dll"
36
37
  #define DEVICE_FPGA_DRIVER_LIBRARY "leechcore_driver.dll"
37
- #else
38
+ #endif /* _WIN32 */
39
+ #ifdef LINUX
38
40
  #define DEVICE_FPGA_FT601_LIBRARY "leechcore_ft601_driver_linux.so"
41
+ #define DEVICE_FPGA_FT2XX_LIBRARY "libftd2xx.so"
39
42
  #define DEVICE_FPGA_DRIVER_LIBRARY "leechcore_driver.so"
40
- #endif /* _WIN32 */
43
+ #endif /* LINUX */
44
+ #ifdef MACOS
45
+ #define DEVICE_FPGA_FT601_LIBRARY "leechcore_ft601_driver_macos.dylib"
46
+ #define DEVICE_FPGA_FT2XX_LIBRARY "libftd2xx.dylib"
47
+ #define DEVICE_FPGA_DRIVER_LIBRARY "leechcore_driver.dylib"
48
+ #endif /* MACOS */
41
49
 
42
50
  #define ENDIAN_SWAP_DWORD(x) (x = (x << 24) | ((x >> 8) & 0xff00) | ((x << 8) & 0xff0000) | (x >> 24))
43
51
 
@@ -673,7 +681,7 @@ ULONG WINAPI DeviceFPGA_UDP_FT60x_FT_WritePipe(HANDLE ftHandle, UCHAR ucPipeID,
673
681
  ULONG WINAPI DeviceFPGA_UDP_FT60x_FT_ReadPipe(HANDLE ftHandle, UCHAR ucPipeID, PUCHAR pucBuffer, ULONG ulBufferLength, PULONG pulBytesTransferred, PVOID pOverlapped)
674
682
  {
675
683
  int status;
676
- DWORD cbTx, cSleep = 0, cbRead, cbReadTotal = 0, cPass = 0;
684
+ DWORD cbTx, cSleep = 0, cbRead, cbReadTotal = 0;
677
685
  BYTE pbTx[] = { 0x01, 0x00, 0x01, 0x00, 0x80, 0x02, 0x23, 0x77 }; // cmd msg: inactivity timer enable - 1ms
678
686
  FPGA_HANDLESOCKET hs;
679
687
  hs.h = ftHandle;
@@ -700,7 +708,6 @@ ULONG WINAPI DeviceFPGA_UDP_FT60x_FT_ReadPipe(HANDLE ftHandle, UCHAR ucPipeID, P
700
708
  return 1;
701
709
  }
702
710
  cSleep = 0;
703
- cPass++;
704
711
  cbRead = min(ulBufferLength, (DWORD)status);
705
712
  cbReadTotal += cbRead;
706
713
  ulBufferLength -= cbRead;
@@ -778,9 +785,9 @@ static BOOL g_fDeviceFpgaMultiHandleLock[0x10] = { 0 };
778
785
 
779
786
  BOOL DeviceFPGA_Initialize_LinuxMultiHandle_LockCheck(_In_ QWORD qwDeviceIndex)
780
787
  {
781
- #ifdef LINUX
788
+ #if defined(LINUX) || defined(MACOS)
782
789
  if(g_fDeviceFpgaMultiHandleLock[min(0x10 - 1, qwDeviceIndex)]) { return TRUE; }
783
- #endif /* LINUX */
790
+ #endif /* LINUX || MACOS */
784
791
  return FALSE;
785
792
  }
786
793
 
@@ -863,8 +870,8 @@ LPSTR DeviceFPGA_InitializeFT601(_In_ PDEVICE_CONTEXT_FPGA ctx, _In_ BOOL fFT601
863
870
  pfnFT_SetSuspendTimeout = (ULONG(WINAPI*)(HANDLE, ULONG))GetProcAddress(ctx->dev.hModule, "FT_SetSuspendTimeout");
864
871
  if(!ctx->dev.pfnFT_Create || !ctx->dev.pfnFT_ReadPipe || !ctx->dev.pfnFT_WritePipe) {
865
872
  szErrorReason = ctx->dev.pfnFT_ReadPipe ?
866
- "Unable to retrieve required functions from device driver dll/so." :
867
- "Unable to retrieve required functions from FTD3XX.dll v1.3.0.4 or later";
873
+ "Unable to retrieve required functions from device driver dll/so/dylib." :
874
+ "Unable to retrieve required functions from "DEVICE_FPGA_FT601_LIBRARY;
868
875
  goto fail;
869
876
  }
870
877
  // Open FTDI
@@ -1032,11 +1039,11 @@ LPSTR DeviceFPGA_InitializeFT2232(_In_ PDEVICE_CONTEXT_FPGA ctx)
1032
1039
  ctx->dev.hModule = LoadLibraryA("FTD2XX.dll");
1033
1040
  if(!ctx->dev.hModule) {
1034
1041
  Util_GetPathLib(szModuleFTDI);
1035
- strcat_s(szModuleFTDI, sizeof(szModuleFTDI) - 1, "FTD2XX.dll / libftd2xx.so");
1042
+ strcat_s(szModuleFTDI, sizeof(szModuleFTDI) - 1, DEVICE_FPGA_FT2XX_LIBRARY);
1036
1043
  ctx->dev.hModule = LoadLibraryA(szModuleFTDI);
1037
1044
  }
1038
1045
  if(!ctx->dev.hModule) {
1039
- szErrorReason = "Unable to load FTD2XX.dll / libftd2xx.so";
1046
+ szErrorReason = "Unable to load "DEVICE_FPGA_FT2XX_LIBRARY;
1040
1047
  goto fail;
1041
1048
  }
1042
1049
  // Assign FT601 compatibility functions to device object:
@@ -1060,7 +1067,7 @@ LPSTR DeviceFPGA_InitializeFT2232(_In_ PDEVICE_CONTEXT_FPGA ctx)
1060
1067
  hFT2232H->pfnFT_Close = (ULONG(WINAPI*)(HANDLE))
1061
1068
  GetProcAddress(ctx->dev.hModule, "FT_Close");
1062
1069
  if(!hFT2232H->pfnFT_GetStatus || !hFT2232H->pfnFT_Read || !hFT2232H->pfnFT_Write || !hFT2232H->pfnFT_Close) {
1063
- szErrorReason = "Unable to retrieve required functions from FTD2XX.dll";
1070
+ szErrorReason = "Unable to retrieve required functions from "DEVICE_FPGA_FT2XX_LIBRARY;
1064
1071
  goto fail;
1065
1072
  }
1066
1073
  // Retrieve required function-local function pointers from FTDI library:
@@ -1077,7 +1084,7 @@ LPSTR DeviceFPGA_InitializeFT2232(_In_ PDEVICE_CONTEXT_FPGA ctx)
1077
1084
  pfnFT_SetFlowControl = (ULONG(WINAPI*)(HANDLE, USHORT, UCHAR, UCHAR))
1078
1085
  GetProcAddress(ctx->dev.hModule, "FT_SetFlowControl");
1079
1086
  if(!pfnFT_Open || !pfnFT_ResetDevice || !pfnFT_SetBitMode || !pfnFT_SetLatencyTimer || !pfnFT_SetUSBParameters || !pfnFT_SetFlowControl) {
1080
- szErrorReason = "Unable to retrieve required functions from FTD2XX.dll";
1087
+ szErrorReason = "Unable to retrieve required functions from "DEVICE_FPGA_FT2XX_LIBRARY;
1081
1088
  goto fail;
1082
1089
  }
1083
1090
  // Open FTDI