WDK + Visual Studio 2008 compiler driver configuration


As it is known, Microsoft officially doesn't support integration of DDK with Visual Studio (any version). So we can use the Visual Studio editor (or any other text editor) for developing the source codes of a driver, but for compiling we should use the DDK build utility. Of course it is not very convenient because we must always switch between editor and console window, but the worst thing is that the developer must spend a lot of time to find lines with errors in the editor.


There are several ways to compile Drivers with Visual Studio. Co. can most of them in the Find Mark Roddy nice article, Windows Driver Build Methods and Tools .

Mark offers some third party utilities. That's good, but I will show a more handy way (IMHO): how to configure and use Visual Studio for compiling drivers.

Have Fun

  1. Setup Visual Studio 2008.
  2. Setup DDK (WDK).
  3. Add to VS paths DDK include files, libs and bins.
  4. Create new empty "Win32 project" and add source file (ie HelloWorld.c).
  5. Configure project properties (All Configurations):
    1. C \ C + + - General - Debug Information Format = Program Database (/ Zi)
    2. C \ C + + - Preprocessor - Preprocessor Definitions = _X86_ [add also DBG for Debug config]
    3. C \ C + + - Code Generation - Enable C + + Exceptions = No
    4. C \ C + + - Code Generation - Basic Runtime Checks = Default
    5. C \ C + + - Code Generation - Buffer Security Check = No (/ GS -)
    6. C \ C + + - Advanced - Calling Convention = __stdcall (/ Gz)
    7. C \ C + + - Advanced - Compile As = Compile as C Code (/ TC) [if you are going to use plain C]
    8. Linker - General - Output File = $ (OutDir) \ $ (ProjectName). Sys
    9. Linker - General - Enable Incremental Linking = Default
    10. Linker - Input - Additional Dependencies = ntoskrnl.lib hal.lib $ (NOINHERIT) [add needed libs here eg ntoskrnl.lib hal.lib]
    11. Linker - Input - Ignore All Default Libraries = Yes (/ NODEFAULTLIB)
    12. Linker - Manifest File - Generate Manifest = No
    13. Linker - System - SubSystem = Native (/ SUBSYSTEM: NATIVE)
    14. Linker - System - Driver = Driver (/ DRIVER)
    15. Linker - Advanced - Entry Point = DriverEntry
    16. Linker - Advanced - Base Address = 0x10000
    17. Linker - Advanced - Randomized Base Address = Disable (/ DYNAMICBASE: NO)
    18. Linker - Advanced - Data Execution Prevention (DEP) = Disable (/ NXCOMPAT: NO)
  6. OK. Done. Now you can test it with simple code, eg:
  7. #include "ntddk.h"

    About the Author

    Andrey Sergienko

  8. From: http://www.codeproject.com/KB/winsdk/vs2008_and_drivers.aspx

To find a Chinese version of the:

1, is to let Visual Studio 2008 to compile the driver, follow these steps:

(1) Open VS2008, click Tools -> Options; in the options bar select the list of projects and solutions -> C + + directory; in the left displays the following items in the first select include files, and in the following New D: \ WinDDK \ 6001.18002 \ inc \ api and D: \ WinDDK \ 6001.18002 \ inc \ ddk two paths (Note: D: \, please replace your WDK installation directory); and then displayed the following projects Select Library files, add the following D: \ WinDDK \ 6001.18002 \ lib \ wxp \ i386 (Note: D: \, please replace your WDK installation directory).

(2) Next is the time to create projects to do. First create a project to build the project and click project - "(project name) attribute, click the Configuration Manager and Configuration Manager to create a new configuration called the Free (new copy from the Release configuration); after the property the right side of the page select Configuration Properties -> C / C + + -> Advanced, and calling convention to __stdcall (/ Gz); then to the right of choice in the property page configuration properties -> linker, in the output of conventional file to $ (OutDir) \ $ (ProjectName). sys, in the manifest file to enable the User Account Control (UAC) to No (this is the new VS2008 features increase) in optimized code generation will be time to change the link the default value will be random address read in high default value (this is also the additional features in VS2008), and finally the command line, type:

/ Base: "0x10000"
/ Entry: "DriverEntry"
/ Subsystem: native
/ Nologo
/ Stack: 0x400000, 0x1000
/ Incremental: no
/ Nodefaultlib

Original from: http://flyxxtt.blogbus.com/logs/42680411.html

分类:CPP 时间:2010-04-12 人气:577
blog comments powered by Disqus


  • Hibernate code generation tools for the design of the entire Raiders -- Garden blog 2009-05-26

    Points Writing essay and the latest rankings here for easy access the main Ha ha - Big mouth Tsai - Big mouth Tsai - qianq put my keyboard with a small knife out of Alice, wiping a bit sensitive keyboard you reply! - steward good - students read the

  • SQL Server JDBC Driver configuration 2008-10-03

    SQL Server JDBC Driver configuration keywords: sql server jdbc driver configuration method a and download drivers. Download: http://download.microsoft.com/download/8/B/D/8BDABAE2-B6EA-41D4-B903-7916EF3690EF/sqljdbc_1.2.2323.101_enu.exe First, downloa

  • Run-dry statements use - in the code generation report, the data source specified 2010-08-20

    Run-dry statements use - in the code generation report, the data source specified 1, in the process of formulating the report template, click the menu "Configuration "=="" data set," open "data collection settings" dialo

  • Eclipse set source file encoding 2010-04-21

    If the plug-in development application will have a better international support, to the greatest degree of support for Chinese exports, it is best to use the Java UTF-8 encoded files. However, Eclipse workspace (workspace) the default operating syste

  • Jboss data source file password encryption 2010-05-29

    General wording of the data source file <?xml version="1.0" encoding="UTF-8"?> <datasources> <local-tx-datasource> <jndi-name>MySqlDS</jndi-name> //jndi First name <use-java-context>false</use-jav

  • fatal error C1083: Cannot open source file 2011-05-24

    In VS2008 VC + + project, created a new cpp file and then manually delete the physical hard disk, and to the following error. 1 >------ Build started: Project: test, Configuration: Debug Win32 ------ 1> Compiling ... 1> random.cpp 1> c1xx: fat

  • How to use ibatis in Eclipse automatic code generation tools Abator Collection 2010-07-13

    How to use ibatis in Eclipse automatic code generation tools Abator collection of the first contacts for in the end how to start using abator, relatively few resources, this paper documents the process of my initial use today, hope to have for beginn

  • kaptcha simple validation code generation tool 2010-09-11

    kaptcha is a very practical verification code generation tool, with it, you can generate a variety of styles verification code as it is configurable. kaptcha work principle is called com.google.code.kaptcha.servlet.KaptchaServlet, generate an image.

  • posted 09 traverse directory python practice to package name in the form of output java source file name 2010-09-22

    This is one thing to the Japanese side to package name in the form of output java source file name. The end result something like this com.abDjava com.abEjava com.abFjava Got this problem, I started with a "tree / F> java_file.list" However,

iOS 开发

Android 开发

Python 开发



PHP 开发

Ruby 开发






Javascript 开发

.NET 开发



Copyright (C) codeweblog.com, All Rights Reserved.

CodeWeblog.com 版权所有 闽ICP备15018612号

processed in 0.244 (s). 12 q(s)