<?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=337115&amp;view=findpost&amp;p=2945723</guid>
        <pubDate>Wed, 27 Jul 2011 08:39:35 +0000</pubDate>
        <title>Как настроить Visual Studio для разработки драйверов</title>
        <link>https://forum.sources.ru/index.php?showtopic=337115&amp;view=findpost&amp;p=2945723</link>
        <description><![CDATA[B.V.: <strong class='tag-b'>Что нужно для того, что бы подготовить Visual Studio, в частности, VC++ к разработке драйвера:</strong><br>
<br>
1. Подразумевается, что у вас уже установлен VC++. Если же нет, то сначала нужно скачать и установить актуальную версию: http://www.microsoft.com/visualstudio/en-us/try<br>
2. Скачать и установить актуальную версию Windows Driver Kit: http://www.microsoft.com/whdc/DevTools/WDK/WDKpkg.mspx<br>
3. Создать в студии пустой проект типа Win32 Project<br>
<br>
<strong class='tag-b'>Настройка студии и проекта:</strong><br>
<br>
В старых версиях студии, вплоть до 2008, глобальные настройки путей располагались в настройках студии. Начиная с 2010 студии настройки путей были оставлены только в свойства проекта, Configuration Properties -&gt; VC++ Directories. В директории необходимо добавить пути к inc, lib и bin директориям WDK.<br>
<br>
Теперь необходимо изменить следующие настройки проекта:<br>
<br>
General -&gt; Target Extension = .sys<br>
<br>
C/C++ -&gt; General -&gt; Debug Information Format = Program Database (/Zi)<br>
C/C++ -&gt; Preprocessor -&gt; Preprocessor Definitions = _X86_ для 32-битного драйвера/_AMD64_ для 64-битного и DBG для Debug-сборки<br>
C/C++ -&gt; Code Generation -&gt; Enable C++ Exceptions = No<br>
C/C++ -&gt; Code Generation -&gt; Basic Runtime Checks = Default<br>
C/C++ -&gt; Advanced -&gt; Calling Convention = __stdcall (/Gz)<br>
C/C++ -&gt; Advanced -&gt; Compile As = Compile as C Code (/TC)<br>
<br>
Linker -&gt; Input -&gt; Additional Dependencies = ntoskrnl.lib (и добавьте сюда остальные требуемые)<br>
Linker -&gt; Input -&gt; Ignore All Default Libraries = Yes (/NODEFAULTLIB)<br>
Linker -&gt; Manifest File -&gt; Generate Manifest = No<br>
Linker -&gt; System -&gt; SubSystem = Native (/SUBSYSTEM:NATIVE)<br>
Linker -&gt; System -&gt; Driver = Driver (/Driver)<br>
Linker -&gt; Advanced -&gt; Entry Point = DriverEntry<br>
Linker -&gt; Advanced -&gt; Base Address = 0x10000<br>
Linker -&gt; Advanced -&gt; Randomized Base Address = Disable (/DYNAMICBASE:NO)<br>
Linker -&gt; Advanced -&gt; Data Execution Prevention (DEP) = Disable (/NXCOMPAT:NO)<br>
<br>
И наконец, добавить в проект новый файл, например, DriverMain.c, и определить там функцию инициализации DriverEntry:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#include &#60;ntddk.h&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">#include &quot;DriverMain.h&quot;</div><div class="code_line">&nbsp;</div><div class="code_line">NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;//</div><div class="code_line">&nbsp;&nbsp; &nbsp;return STATUS_SUCCESS;</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
Для использования Windows Driver Model или Windows Driver Foundation вместо Windows NT Driver Model, замените ntddk на wdm или wdf соответственно.]]></description>
        <author>B.V.</author>
        <category>C/C++ FAQ</category>
      </item>
	
      </channel>
      </rss>
	