Как захватить LPT порт?
От: z_yura  
Дата: 26.01.03 23:51
Оценка:
Проблема: нужно доходчиво объяснить Windows и всем остальным желающим (типа драйвера принтера), чтобы они не лезли (и даже не пробовали) в LPT порт.
Как это сделать?
Для Windows NT есть библиотеки parport и parclass, которые, по документации, должны заниматься управлением порта, но как ими пользоваться я не понял.
Для Windows всех оставльных я не нашел ничего похожего.
Вся хорошая документация по LPT порту в интернете сильно платная. Это очень нехорошо...
Если значете нормальные ссылки, напишите сюда. Буду вам очень благодарен.
Re: Как захватить LPT порт?
От: vasketsov Россия http://ntprog.by.ru
Дата: 27.01.03 00:58
Оценка:
Здравствуйте, z_yura, Вы писали:

[]

Видимо, только удалить этот порт.

Ибо твоя программа киляется, а то и просто хэндлы в ней закрываются, и все по старому работает.
Васкецов Сергей
http://registry.km.ru
Re: Как захватить LPT порт?
От: Valerio Россия linkedin.com/in/boronin
Дата: 27.01.03 08:08
Оценка:
кроме способа предложенного ниже — просто удалить порт,
могу предложить еще вот какую идею: в 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.
Re[2]: Как захватить LPT порт?
От: good3p  
Дата: 09.05.07 08:58
Оценка:
Здравствуйте, Valerio, Вы писали:

V>кроме способа предложенного ниже — просто удалить порт,

V>могу предложить еще вот какую идею: в DDK есть исходники драйвера порта (kernel\parport) — легко можно их использовать для написания заглушки на порт либо попробовать даже давать доступ к нему кому хочется, а не всем...

можно поподробнее, как сделать заглушку из примера в ДДК, или запрет всем на использование порта?
моя задача в создании приложения, чтобы по команде пользователя закрывать для всех приложений доступ к LPT и COM порту. и только с помощью этого приложения можно вернуть порты в нормальное доступное состояние.
Контролируем LPT & COM ports
От: Valery A. Boronin Россия linkedin.com/in/boronin
Дата: 09.05.07 20:04
Оценка:
Здравствуйте, 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.
Re: Контролируем LPT & COM ports
От: Valery A. Boronin Россия linkedin.com/in/boronin
Дата: 09.05.07 20:22
Оценка:
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.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.