Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Как подцепить драйвер устройства в своей программе


Автор: Flashed 27.5.2015, 17:20
Интересует, как напрямую обратиться к драйверу, установленному в Windows, из своей программы. Например, Wireshark для сниффинга траффика, использует драйвер сетевого адаптера. Как это сделать? Есть какие-то WinApi функции этого уровня?  

Автор: xvr 27.5.2015, 18:42
Цитата(Flashed @  27.5.2015,  17:20 Найти цитируемый пост)
Есть какие-то WinApi функции этого уровня?   

Есть - CreateFile  smile Если устройство является каким то стандартным (например сетевой картой), то Windows сама подключит его куда надо, и все обращения к нему будут выполняться как к любому устройству такого класса (например для сетевой карты вы вообще ее как таковую не увидите)

Если устройство имеет свой собственный интерфейс для общения с прикладной программой, то его драйвер должен предпренять шаги для такого общения, в частности создать несколько имен в определенном месте таблицы имен объектов в кернеле, и тогда он сможет получать запросы из прикладных программ. Для них (программ) он (драйвер) будет выглядеть как специальный файл. Обычно для управления устройством используются IOCTL запросы, а для обмена большим количеством данных - Read/Write запросы или прямо отмэпированные области памяти.

Подробности см https://msdn.microsoft.com/en-us/library/windows/hardware/ff557573(v=vs.85).aspx

Автор: Flashed 28.5.2015, 10:22
xvr, развернуто и ясно.  Спасибо! smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)