Reply To: Ethernet Bridge

Home Forums Discussions Support Ethernet Bridge Reply To: Ethernet Bridge

#9750
Vadim Smirnov
Keymaster

    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, но мост все равно работает: пинг до интернета и до локальных компьютеров идет норм.

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