Связь через порт ISA с Visual Basic

Есть ли шанс, что я мог бы записать что-нибудь на ISA-карту в Visual Basic .Net для Windows XP и выше? (Я знаю, что Win XP и выше имеют ограничение, поэтому вы не можете напрямую записывать данные в порт)

Я также провел некоторые исследования, и если я понимаю ситуацию, у меня есть только 2 варианта:

  1. Написать драйвер (очень проблемный вариант:)) или

  2. Попробуйте использовать существующий драйвер в kernel32 как драйвер для последовательного / параллельного порта.

Если нет никаких других опций, как я должен изменить "использование последовательного / параллельного порта", чтобы использовать его для порта ISA?

1 ответ

Решение

Современные версии Windows не позволяют прямой ввод-вывод порта из пользовательского приложения. Ваша программа работает в кольце 3, а не в кольце 0. Вам нужен какой-то драйвер для выполнения ввода / вывода порта от имени вашего приложения.

Первое, что нужно сделать, это связаться с производителем карты и посмотреть, сделали ли они драйвер Windows для вашей платы.

Если драйвер Windows недоступен, и вы только собираетесь выполнять базовые операции чтения и записи reigster (без прерываний или прямого доступа к памяти), есть несколько свободно загружаемых библиотек, которые можно загрузить для ввода-вывода через порт. По сути, библиотека содержит фиктивный "драйвер", который находится в кольце 0 и выполняет ввод-вывод для вас. У меня больше всего опыта работы с WinIO.

У WinIO есть C/C++ API, но нет.Net/CLR. Вам нужно будет использовать P/Invoke для вызова функций WinIO из управляемого кода.

Если вы будете искать, вы можете найти инструментарий, похожий на WinIO, который предоставляет API для управляемого кода. (Редактировать: вот тот, который я поставил в закладки под названием DirectIO.)

Самая большая проблема с WinIO заключается в том, что вы ограничены базовыми операциями чтения / записи. Если вам нужны прерывания или прямой доступ к памяти, вам не повезло. На этом этапе вам нужно будет написать "настоящий" драйвер.

Написание драйвера может быть довольно серьезной задачей для непосвященных (есть много, что вы испортите). Вам нужно будет начать с получения копии комплекта драйверов Windows и изучения структуры драйверов Microsoft Kernel Mode. Вы также можете приобрести копию Jungo WinDriver. WinDriver - это сторонний инструмент, который значительно упрощает разработку драйверов, но он довольно дорог для одноразового проекта.

Другие вопросы по тегам