ROS Newsletter56

Материал из Русский WINE
Перейти к: навигация, поиск

Выпуск новостей ReactOS №56

USB

Поддержка USB в ReactOS - отдельная история. Изначально, Алексей Брагин потратил много времени на портирование стека Cromwell USB из Linux. Но от этой идеи отказались в пользу другого стороннего проекта - USB стека, разработанного для NT4 программистом из Китая. Однако, реализация вышеупомянутого стека была не закончена и довольно нестабильна, да и автор отказался от дальнейшего развития проекта, поэтому Алексей некоторое время занимался исправлением ошибок и наращиванием функциональности. USB драйвер мыши был реализован не совсем корректно и, как могли заметить многие, пробовавшие воспользоваться этим драйвером, он работал ненадёжно. Недавно Алексей занялся написанием драйвера для USB клавиатуры, и попытался применить тот же подход, что был использован для написания драйвера USB мыши, чтобы USB клавиатура заработала хоть как-то. Однако, Алексею захотелось реализовать всё "пучком", а для этого надо было заставить работать диоды на клавиатуре. Но как оказалось для управления светодиодами используется несколько другой метод, нежели управление движением мыши или нажатиями клавиш. Столкнувшись с этой проблемой, Алексей открыл, что драйвер USB парсит конфигурационный дескриптор, посылаемый устройством, неправильно и, проконсультировавшись с одним из разработчиков Haiku, сведущим в разработке USB драйверов, исправил ошибку. Последнее повлекло правильную и стабильную реализацию драйвера для USB мыши. USB драйвера в работе полагаются на обычные драйвера мыши и клавиатуры, именно поэтому обычные драйвера должны быть загружены до загрузки USB драйверов. Поддержка USB устройств с помощью обычных драйверов первоначально была введена Эрве Поссино (Hervé Poussineau). Алексей просто соединил вместе разные части, чтобы получить почти работающую систему.

С тех пор, как в ReactOS имеются драйвера для USB мыши и USB клавиатуры, нужно отметить следующий факт: оба эти драйвера разработаны для текущей реализации USB стека в ReactOS. USB в NT5 и выше имеет 2 стека: PnP и HID, что коренным образом отличается от реализации в ReactOS. Прежде чем мы сможем думать о реализации USB драйверов, которые следуют стандарту NT5+, нам в первую очередь нужен USB стек, основанный на NT5+ архитектуре. Сделано это было в основном для совместимости со сторонними драйверами и функционирования основных USB устройств.

Сеть

Арт Йеркес (Art Yerkes) и Камерон Гутман (Cameron Gutman) приложили немало усилий чтобы получить сетевой стек в лучшей форме и реализовать недостающую функциональность. Одна из проблем: из-за повреждений памяти имели место ошибки в работе сайтов, которые требуют SSL. Массив IP адресов поддерживается и используется двумя функциями: AfdGetPeerName и AfdGetSockName. Арт полагает, что сайты использующие SSL могут обращаться друг к другу дополнительные несколько раз, для обработки сертификатов, что и приводит к ошибке. С исправлением этой ошибки стало возможным посещать такие сайты, как страница ввода имени пользователя на gmail, а также использование приложений подобных Thunderbird зависимых от SSL для обеспечения безопасности.

Арт и Камерон провели два различных исследования сетевого кода. Проблема, с которой они столкнулись - это, во многих случаях, запутанная реализация сетевого интерфейса (множество структур имеют очень похожие имена и всего лишь немного отличаются членами). Примерами таких структур служат TDI_ADDRESS_INFO, TDI_ADDRESS_INFORMATION и TRANSPORT_ADDRESS. Предполагается, что протокол может вернуть множественные адреса по запросу, что не является нормой в сетевой системе. Так как всё это части определенного интерфейса, разработчики не могут изменить этого и должны просмотреть весь код, чтобы удостовериться что соответствующие структуры данных и упомянутые члены этих структур используются. Самое ужасное заключается в том, что иногда разница между структурами не принимается во внимание, а это влечёт за собой не всегда корректную работу разных условиях.

Инфраструктура тестирования

Кристоф фон Виттич (Christoph von Wittich) запустил автоматическое тестирование с помощью winetests, а Алвин Тэн (Alwyn Tan), член нашего сообщества, недавно сделал временный графический интерфейс, служащий для просмотра и сравнения результатов wine-тестов. Этот веб-интерфейс позволяет сравнивать результаты тестирования (максимально) пяти разных сборок или же просто просмотреть изменившиеся результаты. Но уже сейчас Колин Финк (Colin Finck) работает над созданием более совершенного графического интерфейса с большим количеством возможностей, который будет служить заменой текущего. Вдобавок ко всему, обновлён buildbot, который используется для сборки и запуска wine-тестов. Colin также переписал программу rosautotest для автодиагностики ОС - теперь стало возможным перезапустить тестирование после сбоя ReactOS. Благодаря усилиям Стефана Гинзберга (Stefan Ginsberg), мы уверены в том, что ReactOS проходит проверку текущим набором тестов. Для тех же, кому не терпится повозиться с новым тест менеджером - добро пожаловать по этой ссылке.

Newsletters
30-39 #30#31#32#33#34#35#36#37#38#39
40-49 #40#41#42#43#44#45#46#47#48#49
50-59 #50#51#52#53#54#55#56#57#58#59
60-69 #60#61#62#63#64#65#66#67#68#69
70-79 #70#71#72#73#74#75#76#77#78#79
80-89 #80#81#82#83#84#85#86#87#88#89
90-99 #90#91#92#93#94#95#96#97#98#99