From 225296635afa6e3d102397fb559d49a8ac01c735 Mon Sep 17 00:00:00 2001 From: tomcw Date: Sun, 16 Aug 2020 17:05:49 +0100 Subject: [PATCH] Uthernet card: added support for Npcap for Win10 (#822) . log the version of wpcap.dll (Npcap or WinPcap) --- source/Tfe/Tfearch.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/source/Tfe/Tfearch.cpp b/source/Tfe/Tfearch.cpp index b1811d10..9c28c014 100644 --- a/source/Tfe/Tfearch.cpp +++ b/source/Tfe/Tfearch.cpp @@ -37,6 +37,7 @@ #include "tfe.h" #include "tfearch.h" #include "tfesupp.h" +#include "../Log.h" typedef pcap_t *(*pcap_open_live_t)(const char *, int, int, int, char *); @@ -46,6 +47,7 @@ typedef int (*pcap_datalink_t)(pcap_t *); typedef int (*pcap_findalldevs_t)(pcap_if_t **, char *); typedef void (*pcap_freealldevs_t)(pcap_if_t *); typedef int (*pcap_sendpacket_t)(pcap_t *p, u_char *buf, int size); +typedef const char *(*pcap_lib_version_t)(void); /** #define TFE_DEBUG_ARCH 1 **/ /** #define TFE_DEBUG_PKTDUMP 1 **/ @@ -61,6 +63,7 @@ static pcap_findalldevs_t p_pcap_findalldevs; static pcap_freealldevs_t p_pcap_freealldevs; static pcap_sendpacket_t p_pcap_sendpacket; static pcap_datalink_t p_pcap_datalink; +static pcap_lib_version_t p_pcap_lib_version; static HINSTANCE pcap_library = NULL; @@ -120,6 +123,7 @@ void TfePcapFreeLibrary(void) p_pcap_freealldevs = NULL; p_pcap_sendpacket = NULL; p_pcap_datalink = NULL; + p_pcap_lib_version = NULL; } } @@ -136,6 +140,13 @@ static BOOL TfePcapLoadLibrary(void) { if (!pcap_library) { + if (!SetDllDirectory("C:\\Windows\\System32\\Npcap\\")) // Prefer Npcap over WinPcap (GH#822) + { + const char* error = "Warning: SetDllDirectory() failed for Npcap"; + LogOutput("%s\n", error); + LogFileOutput("%s\n", error); + } + pcap_library = LoadLibrary("wpcap.dll"); if (!pcap_library) { @@ -150,6 +161,9 @@ BOOL TfePcapLoadLibrary(void) GET_PROC_ADDRESS_AND_TEST(pcap_freealldevs); GET_PROC_ADDRESS_AND_TEST(pcap_sendpacket); GET_PROC_ADDRESS_AND_TEST(pcap_datalink); + GET_PROC_ADDRESS_AND_TEST(pcap_lib_version); + LogOutput("%s\n", p_pcap_lib_version()); + LogFileOutput("%s\n", p_pcap_lib_version()); } return TRUE;