Когда делаешь провайдера LSP . То в нем есть функция WSPRecv/Send так вот они отдают управление сразу или дожидаются физической передачи данных ? Для не асинхронных сокетов, то есть lpOverlapped равно NULL.
и еще вопросик, как быть с тем что когда мы ставим Sleep в WSPRecv то браузер виснет, так как не может обработать сообщения. Но все же не виснет когда просто скорость очень маленькая, как это понимать ? отсюда напрашивается вывод что WSPRecv должна сразу же вернуть управление... Но как тогда браузер узнает что данные переданные ?
Разобрался) оказывается проблема в том что браузеры регистрируют все сообщения себе на окна, через WSAAsyncSelect. Тем самым в WSARecv/Send и тп... не нужно передавать указатель на WSAOVERLAPPED для асинхронной операции(только сокет должен быть создан с флагом WSA_FLAG_OVERLAPPED).
Еще вопросец, вот в примере http://www.microsoft.com/msj/0599/layeredservice/layeredservice.aspx . Для случая когда функции передачи данных, используют структуру WSAOVERLAPPED там они сами делают порт завершения и туда бросают запросы. Потом по завершению выполнения этих запросов информируют основное приложение. А когда запрос обычный то просто передают управление дальше по цепочке. Так вот вопрос нужно ли само обязательно реализовывать асинхронные операции или их можно тоже просто передать по цепочке вниз? Хм.. вроде как работает если делать передачу управления просто вниз по цепочке...
Кто-нибудь компилировал пример? Я скопмпилил его, установил nonifslsp.dll в стеке она нормально встала. В лог скидывает, что все функции нормально работаю. Но вот проблема под хромом нормально заходится на все страницы, в логах показывается, что он использует функции этой lsp библиотеки, а вот ИЕ виснет и ничего не открывает. Пинг тоже нормально пашет. В логах после того как через ИЕ входишь тоже вроде никаких ошибок не пишет. Система xp sp3. Может кто сталкивался с похожим.. ie 8.0