Re[4]: Корректное завершение в обработчике TDI_EVENT_RECEIVE
От: IRabinovich  
Дата: 23.08.11 13:33
Оценка:
Здравствуйте, x64, Вы писали:

x64>Зарегистрируйся, ничего сложного в этом нет.


Уговорил.

x64>Вообще-то, суть, ибо оценки я люблю.


Поставил.

x64>Ты напиши сначала, что нужно-то? Если хочешь сохранить соединения живыми, то так лучше не делать, иначе приложение решит, что произошла фатальная ошибка и разорвёт соединение. В этом случае придётся брать на себя часть работы транспорта по организации очереди pending receives и пускать их дальше, когда трафик нужно будет разблокировать. А если пофиг на это, тогда да, завершать все приходящие TDI_RECEIVE со статусом STATUS_CONNECTION_DISCONNECTED, при этом, разумеется, нужно не забыть разорвать все уже установленные соединения.


Полагаю, что лучше пусть система думает, что всё хорошо, данные ходят, но реально приложение их не получает, потому что при работе с локальной сетью W7 при блокировании TDI_RECEIVE_DATAGRAM/TDI_RECEIVE в фильтре с STATUS_INVALID_CONNECTION выпадает в осадок, причём в полном составе. Кстати, это интересно, но если я возвращаю STATUS_ACCESS_DENIED в обработчике TDI_EVENT_RECEIVE/TDI_EVENT_RECEIVE_EXPEDITED, но не компличу TDI_RECEIVE_DATAGRAM/TDI_RECEIVE, то W7 работает нормально.

Вот даже интересно, что будет, если комплитить TDI_RECEIVE_DATAGRAM/TDI_RECEIVE с STATUS_SUCCESS в фильтре.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.