From dfc572cd1b1cdf51b84a5e367d054473c3c3e99d Mon Sep 17 00:00:00 2001<br>From: Jianqiu Zhang <zhangjianqiu_133@yeah.net><br>Date: Sun, 14 Feb 2016 17:27:37 +0800<br>Subject: [PATCH] packet: create packet.dll and Implement GetAdapterNames<br><br>Signed-off-by: Jianqiu Zhang <zhangjianqiu_133@yeah.net><br>---<br> dlls/packet/Makefile.in |  5 ++++<br> dlls/packet/packet.c    | 63 +++++++++++++++++++++++++++++++++++++++++++++++++<br> dlls/packet/packet.spec | 32 +++++++++++++++++++++++++<br> 3 files changed, 100 insertions(+)<br> create mode 100644 dlls/packet/Makefile.in<br> create mode 100644 dlls/packet/packet.c<br> create mode 100644 dlls/packet/packet.spec<br><br>diff --git a/dlls/packet/Makefile.in b/dlls/packet/Makefile.in<br>new file mode 100644<br>index 0000000..6ab9f08<br>--- /dev/null<br>+++ b/dlls/packet/Makefile.in<br>@@ -0,0 +1,5 @@<br>+MODULE    = packet.dll<br>+DELAYIMPORTS = iphlpapi<br>+<br>+C_SRCS = \<br>+    packet.c<br>diff --git a/dlls/packet/packet.c b/dlls/packet/packet.c<br>new file mode 100644<br>index 0000000..c6d1568<br>--- /dev/null<br>+++ b/dlls/packet/packet.c<br>@@ -0,0 +1,63 @@<br>+#include "config.h"<br>+#include "wine/port.h"<br>+<br>+#include <stdarg.h><br>+<br>+#include "windef.h"<br>+#include "winbase.h"<br>+#include "windows.h"<br>+#include "wine/debug.h"<br>+<br>+#include "winsock2.h"<br>+#include "iphlpapi.h"<br>+#include "ntddndis.h"<br>+<br>+#include <pcap/pcap.h><br>+<br>+WINE_DEFAULT_DEBUG_CHANNEL(packet);<br>+<br>+BOOLEAN PacketGetAdapterNames(char *nameList, PULONG pSize)<br>+{<br>+    IP_ADAPTER_INFO *adInfo, *adInfoList = NULL;<br>+    DWORD errcode;<br>+    ULONG needsize = 0, minDescLen = 0, minAdNameLen = 0, minTotLen = 0, nameOffset, descOffset;<br>+<br>+    TRACE("nameList %p &size %p size %d\n", nameList, pSize, *pSize);<br>+<br>+    errcode = GetAdaptersInfo(adInfoList, &needsize);<br>+    adInfoList = HeapAlloc(GetProcessHeap(), 0, needsize);<br>+<br>+    TRACE("Get the needed space(%d) for adInfo\n", needsize);<br>+<br>+    errcode = GetAdaptersInfo(adInfoList, &needsize);<br>+    if(errcode)<br>+    {<br>+        SetLastError(errcode);<br>+        return FALSE;<br>+    }<br>+    for(adInfo = adInfoList; adInfo != NULL; adInfo = adInfo->Next)<br>+    {<br>+        minAdNameLen += lstrlenA(adInfo->AdapterName) + 1;<br>+        minDescLen += lstrlenA(adInfo->Description) + 1;<br>+    }<br>+    minTotLen = minAdNameLen + minDescLen + 2;<br>+    TRACE("minAdNameLen = %d, minDescLen = %d\n", minAdNameLen, minDescLen);<br>+    if(nameList == NULL || *pSize < minTotLen)<br>+    {<br>+        SetLastError(ERROR_INSUFFICIENT_BUFFER);<br>+        *pSize = minTotLen;<br>+        return FALSE;<br>+    }<br>+<br>+    nameOffset = descOffset = 0;<br>+    for(adInfo = adInfoList; adInfo != NULL; adInfo = adInfo->Next)<br>+    {<br>+        lstrcpyA(nameList + nameOffset, adInfo->AdapterName);<br>+        lstrcpyA(nameList + minAdNameLen + descOffset + 1, adInfo->Description);<br>+        nameOffset += lstrlenA(adInfo->AdapterName) + 1;<br>+        descOffset += lstrlenA(adInfo->Description) + 1;<br>+    }<br>+    nameList[minAdNameLen] = '\0';<br>+    nameList[minTotLen - 1] = '\0';<br>+    return TRUE;<br>+}<br>diff --git a/dlls/packet/packet.spec b/dlls/packet/packet.spec<br>new file mode 100644<br>index 0000000..b7f2781<br>--- /dev/null<br>+++ b/dlls/packet/packet.spec<br>@@ -0,0 +1,32 @@<br>+ 1 stub PacketAllocatePacket<br>+ 2 stub PacketCloseAdapter<br>+ 3 stub PacketFreePacket<br>+ 4 cdecl PacketGetAdapterNames(str long)<br>+ 5 stub PacketGetAirPcapHandle<br>+ 6 stub PacketGetDriverVersion<br>+ 7 stub PacketGetNetInfoEx<br>+ 8 stub PacketGetNetType<br>+ 9 stub PacketGetReadEvent<br>+10 stub PacketGetStats<br>+11 stub PacketGetStatsEx<br>+12 stub PacketGetVersion<br>+13 stub PacketInitPacket<br>+14 stub PacketIsDumpEnded<br>+15 stub PacketLibraryVersion<br>+16 stub PacketOpenAdapter<br>+17 stub PacketReceivePacket<br>+18 stub PacketRequest<br>+19 stub PacketSendPacket<br>+20 stub PacketSendPackets<br>+21 stub PacketSetBpf<br>+22 stub PacketSetBuff<br>+23 stub PacketSetDumpLimits<br>+24 stub PacketSetDumpName<br>+25 stub PacketSetHwFilter<br>+26 stub PacketSetLoopbackBehavior<br>+27 stub PacketSetMinToCopy<br>+28 stub PacketSetMode<br>+29 stub PacketSetNumWrites<br>+30 stub PacketSetReadTimeout<br>+31 stub PacketSetSnapLen<br>+32 stub PacketStopDriver<br>-- <br>2.7.1<br>