Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года


Драйвер L1221 в Win2000

Вы не вошли.

 Поиск | Регистрация | Вход 

Альберт
14.03.2004 00:11:23
#1

Гость

Драйвер L1221 в Win2000

Привет!
В среде Win98 для работы с платой L1221
используется драйвер Ldev0.vxd (как сказано в документации в функции CreateFile)
Там же сказано, что в среде Win2000 в качестве драйвера использется файл Ldevisa.sys. Но при выполнении CreateFile с этим файлом, происходит ошибка.
Если кто работал с L1221 в Win2000, подскажите как заставить драйвер Ldevisa.sys работать?

Спасибо

15.03.2004 09:45:13
#2

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Драйвер L1221 в Win2000

А как Вы с ним работать пытаетесь? ПРи установке vxdapi lgfqdth ставиться и открывать его надо по линку LDev0 как и в 98. Исходный код примера не меняется. Если в 2000 не запускается то скорее всено некорректно указаны параметры в LCard Setup или переывание в биосе не Legasy ISA/

Альберт
18.03.2004 20:31:09
#3

Гость

Re: Драйвер L1221 в Win2000

Попробую прояснить свои проблемы

Надо сразу сказать Ваша программа L1221.dsk работает без проблем, но меня не удовлетворяет
ее функциональность, вынужден писать свое и вот такие грабли под Win2000

Первое:
В документации сказано, что для создания дистрибутива под Win98/ME необходимо в
каталог /System включить в числе прочих файлы LdevX.vxd.
Там же сказано, что для создания дистрибутива под Win2000 мне необходимо:
"..ldevisa.sys - драйвера плат ISA (копировать в /SYSTEM32/DRIVERS);..."
Про файлы LdevX.vxd уже ничего не сказано, поэтому в состав дистрибутива Win2000 они не входят.
Я по краней мере понял так.

Где используются LdevX.vxd и ldevisa.sys? В исходниках L1221.dsk в ф-ии SetupWindow(), вызывается OpenLdevice(), в ней с помощью CreateFile читаются:
- в Win98/ME - LdevX.vxd
- в Win2000 - что? Ldevisa.sys или все таки LdevX.vxd?
В моей задаче без ошибок читается из обоих файлов. По краней мере hVxD типа HANDLE не равен
INVALID_HANDLE_VALUE.

Какой файл все таки читать?

Второе:
Далее там же в OpenLdevice() формируется структура dev типа DEV_REG_UNI.
Вышли снова в SetupWindow(), там ф-ия LoadBios(&dev, "lbios016"), в ней ф-ия
LOAD_ADSP2186(), в ней:

WORD data;
data=0xFFFF;
outword(hVxD, boffs+IDMA_REG_1221, &data, sizeof(data), key);

в ф-ии outword(...) вызов ф-ии DeviceIoControl():

DeviceIoControl( hVxd, DIOC_OUTP, &par, sizeof(PORT_PAR), data,len, &cbRet, NULL);
которая возвращает 0, т.е. ошибку, а GetLastError() говорит про эту ошибку:
"Параметр задан неверно"

Какой параметр GetLastError() не уточняет.

В Win98 DeviceIoControl() в этом месте с теми же аргументами как и положено возвращает 1, т.е. ОК

Пожалуйста, Ваши комментарии и предложения
Спасибо

19.03.2004 09:01:53
#4

Сотрудник "Л Кард"
Откуда: Москва
Здесь с 23.04.2014
Сообщений: 3,727

Re: Драйвер L1221 в Win2000

Ну имя устройства в обоих случаях LDev0 просто.
В 98 при этом откроется ldev0.vxd а в 2000 ldevisa.sys
Если драйвер под 98 сам загружается по CreateFile то в 2000 его надо прописать в реестр с автозапуском и еще настроить ключи как в LCard Setup делается. Пример то работает и там и там - так что надо писать как в примере. Вобщем смотрите каталог REG с файлами для реестра в разных ОС.