Почему WriteFile в NDIS отправляет повторяющиеся кадры?

Привет всем и заранее спасибо за помощь,

Я использую функцию WriteFile (fileapi.h) для отправки кадров драйверу NDIS на уровне Ethernet Layer 2, непосредственно между MAC-адресами.

Кадры отправляются правильно, но в любом из тестов, которые я проводил, кадры отправляются дубликатами. Я обнаружил это, перехватив вывод с помощью WireShark, где представлено следующее:

Внутри кадра, который я отправляю, я увеличиваю счетчик при каждой отправке. Этот счетчик повторяется в двух последовательных кадрах, которым WireShark присвоил разные номера кадров. Это происходит не случайно из-за потери сообщений в сети и пересылки сообщений другим устройством в сети. Это происходит в каждом отправляемом кадре, они абсолютно одинаковы, включая счетчик, который увеличивается каждые два кадра.

Вопросы:

  • Есть ли параметр в драйвере NDIS, который устанавливает этот дублирующий вывод.
  • Я неправильно истолковываю захват WireShark.

Я видел этот пост и сделал, как рекомендуется, удалив и установив Ncap и WinCap, но это не имело значения.

Большое спасибо. С наилучшими пожеланиями.

bSuccess = (BOOLEAN)WriteFile(
            Handle,
            pWriteBuf,
            PacketLength,
            &BytesWritten,
            NULL);
        DWORD err = GetLastError();
        printf("ERROR: %i", err);
        if (!bSuccess)
        {
            PRINTF(("DoWriteProc: WriteFile failed on Handle %p\n", Handle));
            break;
        }

person agallende    schedule 02.06.2021    source источник


Ответы (1)


Решено, отвечаю на свой вопрос.

Компиляция используемого мною драйвера NDIS подготовлена ​​с флагом NDIS_SEND_FLAGS_CHECK_FOR_LOOPBACK в файл send.c.

По этой причине и в соответствии с пояснениями эта страница, можно удалить повторяющиеся сообщения на исходном компьютере, так как на исходном компьютере они, в конечном счете, не стали внутренним циклом.

С наилучшими пожеланиями.

person agallende    schedule 07.06.2021