Bug 420

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
http://www.1c.ru/news/info.jsp?id=3046
Comment 1 Vitaly Lipatov 2008-10-16 21:54:54 MSD
Надо для начала проверить потенциальную возможность поддержки этих драйверов:
/var/ftp/pvt/Windows/Keys/Katran/Key
(ключи - LPT)
Comment 2 Александр Морозов 2008-10-17 11:54:23 MSD
На первый взгляд организовать их поддержку можно.

Имеются 2 sys-драйвера: pkey1.sys для NT и pkey.sys для 98 / Me / 2K / XP. По-видимому, проще использовать pkey1.sys, чем pkey.sys, так как первый использует меньше функций и не требует вызова AddDevice. Ещё есть PKey0.vxd, но с vxd мне встречаться до сих пор не приходилось, трудно что-то про него сказать.
Comment 3 Глеб Кордюков 2009-04-17 17:21:44 MSD
Ключи будут в начале мая у нас, надеемся к середине мая сделать.
Comment 4 Александр Морозов 2009-06-10 20:12:51 MSD
При проверке 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 */
Comment 5 Александр Морозов 2009-06-11 18:56:25 MSD
Для поддержки работы с регистром ecr параеллельного порта надо реализовать работу с /dev/port через etersafe.
Comment 6 Vitaly Lipatov 2009-06-11 22:41:07 MSD
(In reply to comment #5)
> Для поддержки работы с регистром ecr
> параеллельного порта надо реализовать
> работу с /dev/port через etersafe.
1. А что показала готовность модуля ядра parport к добавлению этой функциональности?
2. Для начала можно реализовать напрямую в wine и запускать под root для проверки.
Comment 7 Александр Морозов 2009-06-15 14:40:10 MSD
> 2. Для начала можно реализовать напрямую в
> wine и запускать под root для проверки.

Сделал программу, работающую с портом через /dev/port, и принимающую команды через сокет. Ключ работает, если не захватывать порт (ieee1284_claim).
Comment 8 Александр Морозов 2009-06-15 19:49:56 MSD
При переносе работающей с регистрами LPT-порта функциональности в etersafe возникли проблемы. В функции client_main() есть задержки, которые очень замедляют работу с портом. Если их убрать, то при интенсивной работе с портом проверка
if(!memcmp(clireq.random_code, sera.random_code, sizeof(sera.random_code)))
часто завершается неудачно, что скорее всего означает потерю или изменение порядка UDP-пакетов.
Comment 9 Александр Морозов 2009-06-16 20:01:32 MSD
Переделал etersafed так, чтобы использовался TCP вместо UDP. Программа проверки ключа Sentinel при работе через etersafed очень сильно тормозила. Так как драйвер Sentinel использует {READ,WRITE}_PORT_UCHAR, а Катран - инструкции in и out, то сделано так, что работа через etersafed идёт только при работе с портом напрямую с помощью in и out.
Comment 10 Александр Морозов 2009-06-17 15:15:59 MSD
Etersafe переделан так, чтобы TCP-соединение не создавалось заново при каждом вызове etersoft_etersafe_request().
Comment 11 Александр Морозов 2009-06-30 16:07:09 MSD
Сделал патчи для 1.0.10.
Comment 12 Денис Баранов 2009-07-16 22:27:13 MSD
Принято.
WINE@Etersoft eter27/eter19
Comment 13 Виталий Перов 2010-03-04 16:30:35 MSK
В текущей версии 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 больше нет.

Требуется переделать патчи.
Comment 14 Александр Морозов 2010-11-08 21:52:52 MSK
Переделал. Изменения можно увидеть в 	git://git.etersoft.ru/people/amorozov/packages/wine.git в ветке eterhack.
Comment 15 Денис Баранов 2011-01-26 16:40:25 MSK
Виталик, приложишь к eterhack изменения?
Comment 16 Александр Морозов 2011-01-26 16:53:17 MSK
> Виталик, приложишь к eterhack изменения?
Всё уже давно приложено и должно работать.
Comment 17 Marat Sharipov 2011-03-02 12:13:13 MSK
надо тестировать или нет?
если да то на какой версии wine и локально или через контейнер?
Comment 18 Александр Морозов 2011-03-02 14:14:41 MSK
> надо тестировать или нет?
В принципе, можно подождать решения бага 4301.

> если да то на какой версии wine и локально или через контейнер?
На Школьном Вайне как ближайшем к eterhack. Лучше локально.
Comment 19 Marat Sharipov 2011-03-25 15:59:13 MSK
Принято
в процессе проверки проблем не обнаружил(машина атлант)