<div dir="ltr"><div>From 4810b411a8b76ce09356da0333d5aef434e30465 Mon Sep 17 00:00:00 2001</div><div>From: Jianqiu Zhang <<a href="mailto:zhangjianqiu_133@yeah.net">zhangjianqiu_133@yeah.net</a>></div><div>Date: Sun, 14 Feb 2016 17:27:37 +0800</div><div>Subject: [PATCH] packet: create packet.dll and Implement GetAdapterNames</div><div><br></div><div>Signed-off-by: Jianqiu Zhang <<a href="mailto:zhangjianqiu_133@yeah.net">zhangjianqiu_133@yeah.net</a>></div><div>---</div><div> <a href="http://configure.ac">configure.ac</a>            |  7 +++++++</div><div> dlls/packet/Makefile.in |  5 +++++</div><div> dlls/packet/packet.c    | 54 +++++++++++++++++++++++++++++++++++++++++++++++++</div><div> dlls/packet/packet.spec | 32 +++++++++++++++++++++++++++++</div><div> 4 files changed, 98 insertions(+)</div><div> create mode 100644 dlls/packet/Makefile.in</div><div> create mode 100644 dlls/packet/packet.c</div><div> create mode 100644 dlls/packet/packet.spec</div><div><br></div><div>diff --git a/<a href="http://configure.ac">configure.ac</a> b/<a href="http://configure.ac">configure.ac</a></div><div>index 8a90202..7095b8b 100644</div><div>--- a/<a href="http://configure.ac">configure.ac</a></div><div>+++ b/<a href="http://configure.ac">configure.ac</a></div><div>@@ -69,6 +69,8 @@ AC_ARG_WITH(osmesa,     AS_HELP_STRING([--without-osmesa],[do not use the OSMesa</div><div> AC_ARG_WITH(oss,       AS_HELP_STRING([--without-oss],[do not use the OSS sound support]))</div><div> AC_ARG_WITH(pcap,      AS_HELP_STRING([--without-pcap],[do not use the Packet Capture library]),</div><div>             [if test "x$withval" = "xno"; then ac_cv_header_pcap_pcap_h=no; fi])</div><div>+AC_ARG_WITH(packet,      AS_HELP_STRING([--without-packet],[do not use the Packet DLL]),</div><div>+            [if test "x$withval" = "xno"; then ac_cv_header_pcap_pcap_h=no; fi])</div><div> AC_ARG_WITH(png,       AS_HELP_STRING([--without-png],[do not use PNG]))</div><div> AC_ARG_WITH(pthread,   AS_HELP_STRING([--without-pthread],[do not use the pthread library]),</div><div>             [if test "x$withval" = "xno"; then ac_cv_header_pthread_h=no; fi])</div><div>@@ -1186,7 +1188,11 @@ then</div><div> fi</div><div> WINE_NOTICE_WITH(pcap,[test "x$ac_cv_lib_pcap_pcap_create" != xyes],</div><div>                  [pcap ${notice_platform}development files not found, wpcap won't be supported.])</div><div>+WINE_NOTICE_WITH(packet,[test "x$ac_cv_lib_pcap_pcap_create" != xyes],</div><div>+                 [pcap ${notice_platform}development files not found, packet won't be supported.])</div><div> test "x$ac_cv_lib_pcap_pcap_create" != xyes && enable_wpcap=${enable_wpcap:-no}</div><div>+test "x$ac_cv_lib_pcap_pcap_create" != xyes && enable_packet=${enable_packet:-no}</div><div>+</div><div> </div><div> dnl **** Check for libxml2 ****</div><div> </div><div>@@ -3387,6 +3393,7 @@ WINE_CONFIG_DLL(wmvcore)</div><div> WINE_CONFIG_DLL(wnaspi32,,[implib])</div><div> WINE_CONFIG_DLL(wow32,enable_win16,[implib])</div><div> WINE_CONFIG_DLL(wpcap)</div><div>+WINE_CONFIG_DLL(packet)</div><div> WINE_CONFIG_DLL(ws2_32,,[implib])</div><div> WINE_CONFIG_TEST(dlls/ws2_32/tests)</div><div> WINE_CONFIG_DLL(wshom.ocx,,[clean])</div><div>diff --git a/dlls/packet/Makefile.in b/dlls/packet/Makefile.in</div><div>new file mode 100644</div><div>index 0000000..7627d4c</div><div>--- /dev/null</div><div>+++ b/dlls/packet/Makefile.in</div><div>@@ -0,0 +1,5 @@</div><div>+MODULE    = packet.dll</div><div>+IMPORTS = iphlpapi</div><div>+</div><div>+C_SRCS = \</div><div>+<span class="" style="white-space:pre">        </span>packet.c</div><div>diff --git a/dlls/packet/packet.c b/dlls/packet/packet.c</div><div>new file mode 100644</div><div>index 0000000..845762c</div><div>--- /dev/null</div><div>+++ b/dlls/packet/packet.c</div><div>@@ -0,0 +1,54 @@</div><div>+#include "config.h"</div><div>+</div><div>+#include "windows.h"</div><div>+#include "wine/debug.h"</div><div>+</div><div>+#include "iphlpapi.h"</div><div>+</div><div>+WINE_DEFAULT_DEBUG_CHANNEL(packet);</div><div>+</div><div>+BOOLEAN CDECL PacketGetAdapterNames(char *nameList, PULONG pSize)</div><div>+{</div><div>+    IP_ADAPTER_INFO *adInfo, *adInfoList = NULL;</div><div>+    DWORD errcode;</div><div>+    ULONG needsize = 0, minDescLen = 0, minAdNameLen = 0, minTotLen = 0, nameOffset, descOffset;</div><div>+</div><div>+    TRACE("nameList %p &size %p size %d\n", nameList, pSize, *pSize);</div><div>+</div><div>+    errcode = GetAdaptersInfo(adInfoList, &needsize);</div><div>+    adInfoList = HeapAlloc(GetProcessHeap(), 0, needsize);</div><div>+</div><div>+    errcode = GetAdaptersInfo(adInfoList, &needsize);</div><div>+    if(errcode)</div><div>+    {</div><div>+        SetLastError(errcode);</div><div>+        return FALSE;</div><div>+    }</div><div>+    for(adInfo = adInfoList; adInfo != NULL; adInfo = adInfo->Next)</div><div>+    {</div><div>+        minAdNameLen += lstrlenA(adInfo->AdapterName) + 1;</div><div>+        minDescLen += lstrlenA(adInfo->Description) + 1;</div><div>+    }</div><div>+    minTotLen = minAdNameLen + minDescLen + 2;</div><div>+    TRACE("minAdNameLen = %d, minDescLen = %d\n", minAdNameLen, minDescLen);</div><div>+    if(nameList == NULL || *pSize < minTotLen)</div><div>+    {</div><div>+        SetLastError(ERROR_INSUFFICIENT_BUFFER);</div><div>+        *pSize = minTotLen;</div><div>+        return FALSE;</div><div>+    }</div><div>+</div><div>+    nameOffset = descOffset = 0;</div><div>+    for(adInfo = adInfoList; adInfo != NULL; adInfo = adInfo->Next)</div><div>+    {</div><div>+        lstrcpyA(nameList + nameOffset, adInfo->AdapterName);</div><div>+        lstrcpyA(nameList + minAdNameLen + descOffset + 1, adInfo->Description);</div><div>+        nameOffset += lstrlenA(adInfo->AdapterName) + 1;</div><div>+        descOffset += lstrlenA(adInfo->Description) + 1;</div><div>+    }</div><div>+    nameList[minAdNameLen] = '\0';</div><div>+    nameList[minTotLen - 1] = '\0';</div><div>+</div><div>+    HeapFree(GetProcessHeap(), 0, adInfoList);</div><div>+    return TRUE;</div><div>+}</div><div>diff --git a/dlls/packet/packet.spec b/dlls/packet/packet.spec</div><div>new file mode 100644</div><div>index 0000000..b7f2781</div><div>--- /dev/null</div><div>+++ b/dlls/packet/packet.spec</div><div>@@ -0,0 +1,32 @@</div><div>+ 1 stub PacketAllocatePacket</div><div>+ 2 stub PacketCloseAdapter</div><div>+ 3 stub PacketFreePacket</div><div>+ 4 cdecl PacketGetAdapterNames(str long)</div><div>+ 5 stub PacketGetAirPcapHandle</div><div>+ 6 stub PacketGetDriverVersion</div><div>+ 7 stub PacketGetNetInfoEx</div><div>+ 8 stub PacketGetNetType</div><div>+ 9 stub PacketGetReadEvent</div><div>+10 stub PacketGetStats</div><div>+11 stub PacketGetStatsEx</div><div>+12 stub PacketGetVersion</div><div>+13 stub PacketInitPacket</div><div>+14 stub PacketIsDumpEnded</div><div>+15 stub PacketLibraryVersion</div><div>+16 stub PacketOpenAdapter</div><div>+17 stub PacketReceivePacket</div><div>+18 stub PacketRequest</div><div>+19 stub PacketSendPacket</div><div>+20 stub PacketSendPackets</div><div>+21 stub PacketSetBpf</div><div>+22 stub PacketSetBuff</div><div>+23 stub PacketSetDumpLimits</div><div>+24 stub PacketSetDumpName</div><div>+25 stub PacketSetHwFilter</div><div>+26 stub PacketSetLoopbackBehavior</div><div>+27 stub PacketSetMinToCopy</div><div>+28 stub PacketSetMode</div><div>+29 stub PacketSetNumWrites</div><div>+30 stub PacketSetReadTimeout</div><div>+31 stub PacketSetSnapLen</div><div>+32 stub PacketStopDriver</div><div>-- </div><div>2.7.1</div><div><br></div></div>