http://www.1c.ru/news/info.jsp?id=3046
Надо для начала проверить потенциальную возможность поддержки этих драйверов: /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. Лучше локально.
Принято в процессе проверки проблем не обнаружил(машина атлант)