Summary: | Не работают LPT-ключи Катран | ||
---|---|---|---|
Product: | WINE@Etersoft | Reporter: | Vitaly Lipatov <lav> |
Component: | Общее | Assignee: | Александр Морозов <amorozov> |
Status: | CLOSED FIXED | QA Contact: | Marat Sharipov <regan> |
Severity: | minor | ||
Priority: | P3 | CC: | DjSpiker, sonner, vitperov |
Version: | unspecified | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | Linux | ||
URL: | http://www.katran-soft.ru/ | ||
Whiteboard: | |||
Заявки RT: | Связано с: | ||
Дата напоминания: | |||
Bug Depends on: | |||
Bug Blocks: | 468, 42, 5101 |
Description
Vitaly Lipatov
2006-12-19 15:10:49 MSK
Надо для начала проверить потенциальную возможность поддержки этих драйверов: /var/ftp/pvt/Windows/Keys/Katran/Key (ключи - LPT) На первый взгляд организовать их поддержку можно. Имеются 2 sys-драйвера: pkey1.sys для NT и pkey.sys для 98 / Me / 2K / XP. По-видимому, проще использовать pkey1.sys, чем pkey.sys, так как первый использует меньше функций и не требует вызова AddDevice. Ещё есть PKey0.vxd, но с vxd мне встречаться до сих пор не приходилось, трудно что-то про него сказать. Ключи будут в начале мая у нас, надеемся к середине мая сделать. При проверке LPT-ключа с помощью утилиты PSTest.exe драйвер pkey.sys записывает 0x20 в регистр ecr: trace:io:INSTR_outport 0x77a > 20 @ 0073:30b1 Видимо, это делается с целью перевести порт в PS/2 Parallel Port Mode. В wine это не поддерживается. Сделал тестовую программу, использующую ieee1284_negotiate() для перевода порта в различные режимы. Для всех режимов, кроме M1284_COMPAT, получается ошибка E1284_NEGFAILED = -5, /* Negotiation went wrong */ Для поддержки работы с регистром ecr параеллельного порта надо реализовать работу с /dev/port через etersafe. (In reply to comment #5) > Для поддержки работы с регистром ecr > параеллельного порта надо реализовать > работу с /dev/port через etersafe. 1. А что показала готовность модуля ядра parport к добавлению этой функциональности? 2. Для начала можно реализовать напрямую в wine и запускать под root для проверки. > 2. Для начала можно реализовать напрямую в
> wine и запускать под root для проверки.
Сделал программу, работающую с портом через /dev/port, и принимающую команды через сокет. Ключ работает, если не захватывать порт (ieee1284_claim).
При переносе работающей с регистрами LPT-порта функциональности в etersafe возникли проблемы. В функции client_main() есть задержки, которые очень замедляют работу с портом. Если их убрать, то при интенсивной работе с портом проверка if(!memcmp(clireq.random_code, sera.random_code, sizeof(sera.random_code))) часто завершается неудачно, что скорее всего означает потерю или изменение порядка UDP-пакетов. Переделал etersafed так, чтобы использовался TCP вместо UDP. Программа проверки ключа Sentinel при работе через etersafed очень сильно тормозила. Так как драйвер Sentinel использует {READ,WRITE}_PORT_UCHAR, а Катран - инструкции in и out, то сделано так, что работа через etersafed идёт только при работе с портом напрямую с помощью in и out. Etersafe переделан так, чтобы TCP-соединение не создавалось заново при каждом вызове etersoft_etersafe_request(). Сделал патчи для 1.0.10. Принято. WINE@Etersoft eter27/eter19 В текущей версии eterhack откатил патчи: commit 9561f84190bbe1afb24d515fe40aea9f14c4380e Author: Alexander Morozov <amorozov@etersoft.ru> Date: Tue Jun 16 18:02:45 2009 +0400 Add support for working with LPT registers using /dev/port (eterbug #420) commit 17dc71b3ee04b58e37f60b158ee03ad5bb91d266 Author: Alexander Morozov <amorozov@etersoft.ru> Date: Thu May 21 17:53:48 2009 +0400 kernel32: Use parport.sys functions if it is loaded. Приложить обратно не получается. Насколько я понимаю, файла dlls/kernel32/instr.c больше нет. Требуется переделать патчи. Переделал. Изменения можно увидеть в git://git.etersoft.ru/people/amorozov/packages/wine.git в ветке eterhack. Виталик, приложишь к eterhack изменения? > Виталик, приложишь к eterhack изменения?
Всё уже давно приложено и должно работать.
надо тестировать или нет? если да то на какой версии wine и локально или через контейнер? > надо тестировать или нет? В принципе, можно подождать решения бага 4301. > если да то на какой версии wine и локально или через контейнер? На Школьном Вайне как ближайшем к eterhack. Лучше локально. Принято в процессе проверки проблем не обнаружил(машина атлант) |