<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416775&amp;view=findpost&amp;p=3820590</guid>
        <pubDate>Fri, 07 Feb 2020 11:03:26 +0000</pubDate>
        <title>Программирование драйверов Windows</title>
        <link>https://forum.sources.ru/index.php?showtopic=416775&amp;view=findpost&amp;p=3820590</link>
        <description><![CDATA[JoeUser: <strong class='tag-b'>Pavia</strong>, огромное спасибо за развернутые ответы&#33;&#33;&#33;<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=416775&view=findpost&p=3820589'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Pavia &#064; <time class="tag-quote__quoted-time" datetime="2020-02-07T13:42:17+03:00">07.02.20, 10:42</time></span><div class='quote '>Лично у меня в голове картридер и HID не вяжется.</div></div><br>
Да там все просто - провожу карту, в текущем месте ввода печатаются символы. Примерно тоже самое, если бы это печаталось с клавиатуры.]]></description>
        <author>JoeUser</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416775&amp;view=findpost&amp;p=3820589</guid>
        <pubDate>Fri, 07 Feb 2020 10:42:17 +0000</pubDate>
        <title>Программирование драйверов Windows</title>
        <link>https://forum.sources.ru/index.php?showtopic=416775&amp;view=findpost&amp;p=3820589</link>
        <description><![CDATA[Pavia: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=416775&view=findpost&p=3820555'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2020-02-07T05:22:28+00:00">07.02.20, 05:22</time></span><div class='quote '>* HID keyboards and mice cannot be accessed using the native HID driver as Windows reserves exclusive access to them.</div></div><br>
Это означает что у вас будет эксклюзивный доступ.<br>
<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=416775&view=findpost&p=3820555'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2020-02-07T05:22:28+00:00">07.02.20, 05:22</time></span><div class='quote '>1) Какой &quot;комплект&quot; начать изучать WDM (Windows DDK) или WDF (Windows Driver Frameworks). На сколько я понял, WDF создавался с целью упрощения написания драйверов, и позволяет сократить время и усилия?<br>
</div></div><br>
Думаю WDF вам подойдет.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=416775&view=findpost&p=3820555'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>JoeUser &#064; <time class="tag-quote__quoted-time" datetime="2020-02-07T05:22:28+00:00">07.02.20, 05:22</time></span><div class='quote '>2) При использовании WDF нужен ли рядом WDK?</div></div><br>
Да нужно. Первое это обёртка над вторым, но для низкого уровня второе нужно.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>3) Для написания драйверов хватит ли Windows Build Tools, или нужно ставить полную студию?</div></div><br>
Лично я ставил Win7 + 2015 студию. Плюс WDK времён Win7 ибо совместимость ужасная. <br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>4) Есть ли свежая и не отсталая альтернатива WinDBG?</div></div><br>
На Wasm.In  его считают лучшим отладчиком. <br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>5) WDF состоит из дух компонентов KMDF и UMDF, в моем случае (драйвера-фильтра) что нужно использовать (если буду использовать WDF)?</div></div><br>
UMDF вам не нужен. Это нужно если вы напишите драйвер ядра и захотите к нему свой API придумать и раздавать DLL. Правда и в этом случае ценность UMDF  сомнительно. Вы что DLL сами не напишете что-ли? Тем более вызов ядерного драйвера это 2 строчки.<br>
Короче UMDF совсем не нужен, поэтому МС даже толком его и не документировала.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>6) Относительно самого драйвера-фильтра тоже не понятно - писать драйвер для HID устройства, или на более низком уровне как для USB-устройства? Мне нужно только перехватывать весь вывод из устройства и давать возможность моей прикладной программе его читать. Если моя прикладная программа не запущена - просто перехватывать вывод от устройства и никуда его дальше не передавать.</div></div><br>
Лично у меня в голове картридер и HID не вяжется.<br>
<br>
Раз перехватить почему просто не использовать USBPcap ?<br>
<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '> Кроме изучения MSDN есть ли какой свежий полезный материал по WDF/WDM?</div></div><br>
Исходники драйверов на git это основной источник материала.]]></description>
        <author>Pavia</author>
        <category>C/C++: Прочее</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=416775&amp;view=findpost&amp;p=3820555</guid>
        <pubDate>Fri, 07 Feb 2020 05:22:28 +0000</pubDate>
        <title>Программирование драйверов Windows</title>
        <link>https://forum.sources.ru/index.php?showtopic=416775&amp;view=findpost&amp;p=3820555</link>
        <description><![CDATA[JoeUser: Я во временном тупичке и очень прошу помощи&#33;  :unsure: <br>
<br>
<strong class='tag-b'>Ситуация следующая</strong><br>
<br>
Передо мной лежит устройство - USB Card Reader. В системе оно распознается как HID Keyboard. Мне нужно написать небольшую программу, которая будет пользоваться этим устройством. Но основной затык в том, что программа должна им пользоваться <span class='tag-u'>единолично</span>&#33; Т.е. каким-то образом его &quot;захватить&quot;. И если будет активным другое приложение - весь вывод с устройства должен идти в мою программу. Без &quot;захвата&quot; устройство работает как обычная клава. К примеру, если будет активным окно ворда, после считывания магнитной карты, данные с устройства запишутся в ворд.<br>
<br>
Сперва я хотел обойтись малой кровью. Нашел библиотеку libusb (и на заметке была еще hidapi). Даже было уже начал эксперименты, см. <a class='tag-url' href='https://forum.sources.ru/index.php?showtopic=416723' target='_blank'>соседний пост</a>. Но, как начал углубляться в тему, споткнулся о пренеприятнейший для меня тупичок. Цитата из libusb FAQ: <br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>* HID <span class="tag-color tag-color-named" data-value="red" style="color: red">keyboards</span> and mice <span class="tag-color tag-color-named" data-value="red" style="color: red">cannot be accessed using the native HID driver</span> as Windows reserves exclusive access to them.</div></div><br>
<br>
<strong class='tag-b'>ADD:</strong> или я не так понял утверждение выше???<br>
<br>
Засим мои эксперименты с libusb, считаю, бессмысленными. На сколько я понял по дальнейшему изучению материала - мне нужно писать драйвер-фильтр. И уже своей прогой общаться с этим драйвером. Но драйверов я никогда не писал, а надо. Перед стартом углубления в эту тему возникли вопросы. Хочу найти отправную точку, чтобы тупо не тратить месяцы на поиски правильных путей. Поэтому прошу, кто в курсе - помогите с ответами&#33;<br>
<br>
<strong class='tag-b'>Вопросы</strong><br>
<br>
1) Какой &quot;комплект&quot; начать изучать WDM (Windows DDK) или WDF (Windows Driver Frameworks). На сколько я понял, WDF создавался с целью упрощения написания драйверов, и позволяет сократить время и усилия?<br>
<br>
2) При использовании WDF нужен ли рядом WDK?<br>
<br>
3) Для написания драйверов хватит ли Windows Build Tools, или нужно ставить полную студию?<br>
<br>
4) Есть ли свежая и не отсталая альтернатива WinDBG?<br>
<br>
5) WDF состоит из дух компонентов KMDF и UMDF, в моем случае (драйвера-фильтра) что нужно использовать (если буду использовать WDF)?<br>
<br>
6) Относительно самого драйвера-фильтра тоже не понятно - писать драйвер для HID устройства, или на более низком уровне как для USB-устройства? Мне нужно только перехватывать весь вывод из устройства и давать возможность моей прикладной программе его читать. Если моя прикладная программа не запущена - просто перехватывать вывод от устройства и никуда его дальше не передавать.<br>
<br>
7) Кроме изучения MSDN есть ли какой свежий полезный материал по WDF/WDM?<br>
<br>
Уфффф  :wall:]]></description>
        <author>JoeUser</author>
        <category>C/C++: Прочее</category>
      </item>
	
      </channel>
      </rss>
	