zoukankan      html  css  js  c++  java
  • VS2008+Windows DDK 7的环境配置

    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 (i.e. HelloWorld.c).
    5. Configure project properties (All Configurations):
      1. CC++ - General - Debug Information Format = Program Database (/Zi)
      2. CC++ - Preprocessor - Preprocessor Definitions = _X86_ [add also DBG for Debug config]
      3. CC++ - Code Generation - Enable C++ Exceptions = No
      4. CC++ - Code Generation - Basic Runtime Checks = Default
      5. CC++ - Code Generation - Buffer Security Check = No (/GS-)
      6. CC++ - Advanced - Calling Convention = __stdcall (/Gz)
      7. CC++ - 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 e.g. ntoskrnl.lib hal.lib]

        不用拷贝两个lib文件到项目根目录中,只需要在项目属性的链接器-> 常规中将附件库目录设置成DDK中对应的lib文件夹就可以,比如: C:WinDDK7600.16385.1libwxpi386。为什么要用wxp下的那?参考了这个文章,不然好像会报错:http://www.codeexperts.com/showthread.php?829-unresolved-external-symbol-security_cookie

      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)

      (应该为默认值)
       19. 
      Linker-->Command Line:(我自己加的,在编译时有警告,应用解决方案后警告消失)

      Additional options = /SECTION:INIT,D /IGNORE:4078 /safeseh:no

              这项是为了去掉以下警告:

               LINK : warning LNK4078: multiple 'INIT' sections found with different attributes (E2000020)

               LINK : error LNK2001: 无法解析的外部符号__load_config_used

              参考了这个文章: http://www.cnblogs.com/erika/articles/2427184.html

       6. OK. Done. Now you can test it with simple code, e.g.:

    Hide   Copy Code

    #include"ntddk.h"

    NTSTATUS

    DriverEntry(PDRIVER_OBJECT DriverObject,PUNICODE_STRING

    RegistryPath)

    {

    return STATUS_UNSUCCESSFUL;

    }

  • 相关阅读:
    tensorboard以时间命名每一个文件夹
    图像分割loss集合
    博客园使用markdown
    Processed foods make us fatter easily
    python 有4个数字1234,能组成多少个互不相同且无重复的三位数数字。
    python 实现计算器功能 输入字符串,输出相应结果
    解决idea关闭Run窗口时点了Disconnect导致项目一直在跑的问题
    idea导入SpringBoot项目,没有启动按钮,没有maven
    Bean with name 'xxxService' has been injected into other beans [xxxServiceA,xxxServiceB] in its raw version as part of a circular reference, but has eventually been wrapped
    工厂模式
  • 原文地址:https://www.cnblogs.com/time-is-life/p/5140548.html
Copyright © 2011-2022 走看看