ROS Newsletter56
Выпуск новостей 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 |