Проблема: нужно доходчиво объяснить Windows и всем остальным желающим (типа драйвера принтера), чтобы они не лезли (и даже не пробовали) в LPT порт.
Как это сделать?
Для Windows NT есть библиотеки parport и parclass, которые, по документации, должны заниматься управлением порта, но как ими пользоваться я не понял.
Для Windows всех оставльных я не нашел ничего похожего.
Вся хорошая документация по LPT порту в интернете сильно платная. Это очень нехорошо...
Если значете нормальные ссылки, напишите сюда. Буду вам очень благодарен.
кроме способа предложенного ниже — просто удалить порт,
могу предложить еще вот какую идею: в DDK есть исходники драйвера порта (kernel\parport) — легко можно их использовать для написания заглушки на порт либо попробовать даже давать доступ к нему кому хочется, а не всем...
... << RSDN@Home 1.0 beta 5 >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Здравствуйте, Valerio, Вы писали:
V>кроме способа предложенного ниже — просто удалить порт, V>могу предложить еще вот какую идею: в DDK есть исходники драйвера порта (kernel\parport) — легко можно их использовать для написания заглушки на порт либо попробовать даже давать доступ к нему кому хочется, а не всем...
можно поподробнее, как сделать заглушку из примера в ДДК, или запрет всем на использование порта?
моя задача в создании приложения, чтобы по команде пользователя закрывать для всех приложений доступ к LPT и COM порту. и только с помощью этого приложения можно вернуть порты в нормальное доступное состояние.
Здравствуйте, good3p, Вы писали:
G>моя задача в создании приложения, чтобы по команде пользователя закрывать для всех приложений доступ к LPT и COM порту. и только с помощью этого приложения можно вернуть порты в нормальное доступное состояние. IRP_MJ_CREATE (и другие обработчики по желанию) можно выполнить таким образом, чтобы в зависимости от флага или некоего условия, контролируемого приложением или еще кем, возврашалось в ответ либо ошибка вроде "доступ запрещен", либо результат работы оригинального обработчика serial драйвера. Я говорю о фильтре класса Ports:
Ports (COM & LPT ports)
Class = Ports
ClassGuid = {4d36e978-e325-11ce-bfc1-08002be10318}
This class includes serial and parallel port devices.
Итого Вам нужно сделать:
— встать фильтром указанного выше класса устройств (.inf file, toaster sample, поиск по форуму)
— AddDevice — решаете тут какие из появляющихся в системе портов требуют контроля
— IRP_MJ_CREATE\IRP_MJ_CLOSE — для обеспечивания требуемой ф-ти
— IRP_MJ_PNP и IRP_MJ_POWER — туда идут заглушки <copy-paste из примеров в DDK>
— IRP_MJ_INTERNAL_DEVICE_CONTROL — общение драйвера с управляющим приложением которое командует, какие порты кому запрешать\разрешать
примеры фильтров класса можно найти в toaster\filter
пример похожего фильтра — \src\kmdf\kbfiltr (переписанный в WDF модели src\input\kbfiltr), только для клавиатуры (есть и для мыши), а не как у Вас в задаче.
Кстати в WDK по новой WDF модели сделаны новыe примеры, касающиеся темы:
\src\input\vserial (Virtual Serial Driver) — для полной симуляции serial порта
\src\kmdf\serial — переписан старый добрый src\kernel\serial который упоминался в 2003 году.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
VAB>- IRP_MJ_INTERNAL_DEVICE_CONTROL — общение драйвера с управляющим приложением которое командует, какие порты кому запрешать\разрешать
уточнение: IRP_MJ_DEVICE_CONTROL понадобится для общения с user-mode, а указанный выше обработчик нужен для общения с kernel-mode компонентами, если они управляют policy насчет портов.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.