|
1). Если делать свою железку (а у меня именно так сделано), то ничего переписывать не надо. Просто написать .inf файл, где сказать, что железка с этим PID/VID есть LPT, и драйвер ее есть parport.sys - остальное сделает сама винда. Я всего-лишь дописал к этой связке дополнительный драйвер-фильтр, который говорит винде, что меня устраивают только такие или такие адреса, и как винда говорит "да", я прописываю выделенный адрес в конфигурационное пространство платы.
2) VMWare я не знаю. И как сделать так, чтоб IO отлавливалось на уровне 0-го кольца защиты - тоже не знаю.
3) Если программа виндовая, то у нее 2 пути. Или DeviceIOControl к драйверу, или просто драйвер открывает ей (опять через недок. функции Ke386SetIoAccessMap и Ke386IoSetAccessProcess - они прописывают IO access map прям в TSS процесса) и прога делает in/out как будто она и не в юзерском кольце.
4) Эта legacy как я понял касается просто возможности прописать драйвер на порт, который не енумеруется ни на PCI, ни на ISAPNP. Это не эмуляция никакая. Эмуляцией в NTVDM-процессах занимается parvdm.sys и тупо перенаправляет все происходящее в класс-драйвер принтера.
E-mail: info@telesys.ru