Windows - статьи



         

ШАГ - часть 8


Код IOCTL_PAR_SET_INFORMATION применяется для сброса драйвера.

const IOCTL_PAR_SET_INFORMATION = $160008;

type PAR_SET_INFORMATION = record Init: byte; end; PPAR_SET_INFORMATION = ^PAR_SET_INFORMATION;

var ParControl: PAR_SET_INFORMATION;

ParControl.Init := PARALLEL_INIT; DeviceIoControl(hLpt, IOCTL_PAR_SET_INFORMATION, @ParControl, sizeof(PAR_SET_INFORMATION), nil, 0, ret, lpOverlapped);

Обратите внимание на значение, которое присваивается переменной ParControl.Init. Других вариантов не существует. При таком запросе драйвер сбрасывает nSelectIn (1284 Active) в ноль, а на линию nInitialize (Address Strobe) выдает отрицательный строб. При этом сигнал nStrobe (Write) сохраняет высокий уровень. Такая последовательность чем-то похожа на цикл чтения адреса EPP, которая на практике редко используется. Поэтому по условию

  • nStrobe (конт. 1) - высокий;
  • nInitialize (конт. 16) - низкий;
  • nSelectIn (конт. 17) - низкий;
  • можно сформировать сигнал сброса устройства.

    Запрос IOCTL_SERIAL_SET_TIMEOUTS устанавливает значение таймаута, которое драйвер использует в операциях записи в режимах SPP и ECP_SW. Прочитать установленное значение можно с помощью IOCTL_SERIAL_GET_TIMEOUTS.




    Содержание  Назад  Вперед