Существует несколько готовых драйверов, позволяющих приложениям пользовательского режима считывать и записывать порты ввода-вывода; одним из самых известных является inpout32.dll , другие упоминаются здесь , чтобы найти их, хороший ключ поиска - «запись параллельного порта NT» (поскольку они чаще всего используются для это задание).
Обычно они работают, загружая драйвер режима ядра (действие, требующее административных привилегий), а затем вызывая его из пользовательского режима каждый раз, когда вы вызываете функцию dll для выполнения чтения / записи.
Обратите внимание, однако, что большинство из этих библиотек не имеют какой-либо формы контроля доступа, поэтому, загружая их драйвер, вы фактически позволяете любому приложению, которое знает, как его использовать для чтения / записи на портах ввода-вывода, и это довольно серьезная угроза безопасности.