WinDivert 1.0.5 DivertRecv () метод Получить последнюю ошибку 998

Я написал свою обертку c # для WFP (Windows Filtering Platform), я использую 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. Пожалуйста, помогите мне.

0

Решение

998 = ERROR_NOACCESS (неверный доступ к ячейке памяти). Это, вероятно, вызвано передачей недопустимого указателя в DivertRecv.

Является ли параметр pPacket указателем на предварительно выделенный буфер размером packageLen?

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]