1

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; 
4

1 に答える 1

3

cdecl呼び出し規約がありません:

[DllImport("wpcap.dll", CallingConvention=CallingConvention.Cdecl, CharSet=CharSet.Ansi)]

のデフォルトの呼び出し規約はDllImportですstdcallが、WinPcap ライブラリは としてエクスポートされるに違いありませんcdecl

于 2011-07-15T16:09:15.137 に答える