我正在尝试为winpcap编写一个C#包装器。它在我尝试调试时给出警告PInvokeStackImbalance,但pcap_findalldevs完成它的工作。但我认为这会导致程序中的内存泄漏。顺便说一句,这个代码是来自networkminer我没有写这个只是试图理解winpcap和包装。
这是WinPcap中的方法
int pcap_findalldevs( pcap_if_t ** alldevsp, char * errbuf )
这是我在我的程序中写的
[DllImport("wpcap.dll", CharSet = CharSet.Ansi)]
internal static extern int pcap_findalldevs(ref IntPtr alldevsp, StringBuilder errbuf);
i = IntPtr.Zero;
StringBuilder stringBuilder;
stringBuilder = new StringBuilder(256);
if (pcap_findalldevs(ref i, stringBuilder) == -1)
return null;
答案 0 :(得分:3)
您缺少cdecl
调用约定:
[DllImport("wpcap.dll", CallingConvention=CallingConvention.Cdecl, CharSet=CharSet.Ansi)]
DllImport
的默认调用约定是stdcall
,但我敢打赌WinPcap库导出为cdecl
。