Reply To: Ethernet Bridge

Home Forums Discussions Support Portal Ethernet Bridge Reply To: Ethernet Bridge

#9750

Vadim Smirnov
Moderator

1) Не знаю почему, но если установить событие через SetHwPacketFilterEvent, то мост перестает работать или работает так медленно, что связь нестабильная (не знаю точно).

Ага, ну тут ошибка в NDISAPI закралась, хотя я же советовал не использовать WOW64… Но, есть и плюс, нашлась опечатка (IOCTL_NDISRD_SET_EVENT вместо IOCTL_NDISRD_SET_ADAPTER_HWFILTER_EVENT для WOW64). Неверный IOCTL сбрасывал событие для адаптера…

Обновил DLL: https://1drv.ms/u/s!AqMWR3uDO7eagZU81aJhHgoGudFVbg

#ifndef _WIN64
	if (m_bIsWow64Process)
	{
		ADAPTER_EVENT_WOW64 AdapterEvent64;
		AdapterEvent64.hAdapterHandle.QuadPart = m_Handle32to64[(unsigned)AdapterEvent.hAdapterHandle].QuadPart;
		AdapterEvent64.hEvent.HighPart = 0;
		AdapterEvent64.hEvent.LowPart = (ULONG_PTR)AdapterEvent.hEvent;

		bIOResult = DeviceIoControl(
			IOCTL_NDISRD_SET_EVENT,
			&AdapterEvent64,
			sizeof(ADAPTER_EVENT_WOW64),
			NULL,
			0,
			NULL,   // Bytes Returned
			NULL
		);
	}
	else
#endif //_WIN64
	{
		bIOResult = DeviceIoControl(
			IOCTL_NDISRD_SET_ADAPTER_HWFILTER_EVENT,
			&AdapterEvent,
			sizeof(ADAPTER_EVENT),
			NULL,
			0,
			NULL,   // Bytes Returned
			NULL
		);
	}

2) Иногда сбивается режим фильтра с NDIS_PACKET_TYPE_PROMISCUOUS на значение 0, но мост все равно работает: пинг до интернета и до локальных компьютеров идет норм.

Ноль – это не валидный фильтр, скорей всего получить фильтр не удалось.