私は WFP (Windows フィルタリング プラットフォーム) 用の C# ラッパーを作成しました。このインポート構文は WinDivert 1.0.5 を使用します。
[DllImportAttribute("WinDivert.dll", EntryPoint = "DivertRecv",SetLastError = true, CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl)]
[return: MarshalAsAttribute(UnmanagedType.Bool)]
public static extern bool DivertRecv([InAttribute()] System.IntPtr handle,
[OutAttribute()] System.IntPtr pPacket,
[InAttribute()] uint packetLen,
[ OutAttribute()] System.IntPtr pAddr,
[OutAttribute()] System.IntPtr readLen);
そして、この関数呼び出し構文
if( DivertRecv(handle, Ppacket, (uint)(8 * packet.Length-1),
Paddr, Ppacket_len) == false)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("warning: failed to read packet {0} .", Marshal.GetLastWin32Error());
Console.ResetColor();
Console.WriteLine(" Press any key to Exit ...");
Console.ReadKey();
Environment.Exit(1);
}
しかし、関数はすべての呼び出しで false を返し、GetLastWin32Error() はエラー コード 998 を取得します。助けてください。