本帖通过Augusdi的一篇博文进行重新总结

第一步:安装Visual stdio 2010

1.安装VS2010

第二步:安装WDK安装包

2.安装WindowsDriverKit7-GRMWDK_EN_7600_1.ISO

第三步:创建工程

1.这两个安装好以后,新建项目--VC ++控制台项目(选择为空项目)

2.新建完项目各个栏的状态是这个样子

第四步:创建新项目配置

1.新建项目配置WDKConfig(这个名字自己随便起)

2.创建完成就是这个样子的

3.属性管理器中,多了一个属性

第五步:配置项目配置

核心问题来了<__>配置新建项目属性WDKConfig

1.配置【常规】属性

将目标文件扩展名.exe改成.sys

配置属性<__>常规(配置之前)

配置属性<__>常规(配置之后)

2.配置【VC++目录】属性

//VC++目录
//1.可执行文件目录 C:\WinDDK\7600.16385.1\bin\x862.包含目录            C:\WinDDK\7600.16385.1\inc\ddk;C:\WinDDK\7600.16385.1\inc\crt;C:\WinDDK\7600.16385.1\inc\api3.库目录           C:\WinDDK\7600.16385.1\lib\win7\i386

配置属性<__>VC++ 目录(配置之前)

配置属性<__>VC++ 目录(配置之后)

3.配置【C、C十十】属性

// 设置C/C++选项
//
常规选项卡 1 调试信息格式 :    (C7 兼容(/Z7)                                     //可选 2 警告等级 :       (2 级(/W2)                                        //可选 3 将警告视为错误 :   (是(/wx)                                          //可选 优化选项卡 1.优化 :  (禁用/Od)                                                 //可选 预处理器选项卡 1.预处理器定义 : WIN32=100;_X86_=1;WINVER=0x501;DBG=1              //必选 代码生成选项卡 1.启用最小重新生成 : 否                                            //可选    2.基本运行时检查 :        默认值                                        //可选 3.运行时库 :            多线程调试(/MTd)  或  多线程(/MT)             //建议选 <本人选择的是多线程调试(/MTd)> 4.缓冲区安全检查 :        否                                            //可选 //(可避免出现  LINK : error LNK2001:  无法解析外部符号  __security_cookie)高级选项卡 调用约定 :   __stdcall(/Gz)                                           //必选

在工程中添加一个ConfigDrvierApp.c文件(否则配置属性时是没有C/C++ 属性这一条目栏的)

配置属性<__>C/C++ <__>常规(配置之前)

配置属性<__>C/C++ <__>常规(配置之后)

配置属性<__>C/C++ <__>优化(配置之前)

配置属性<__>C/C++ <__>优化(配置之后)

配置属性<__>C/C++ <__>预处理(配置之前)

配置属性<__>C/C++ <__>预处理(配置之后)

配置属性<__>C/C++ <__>代码生成(配置之前)

配置属性<__>C/C++ <__>代码生成(配置之后)

配置属性<__>C/C++ <__>高级(配置之前)

配置属性<__>C/C++ <__>高级(配置之后)

4.配置【链接器】属性

// 链接器设置
//
常规选项卡 1.启用增量链接 :    否(/INCREMENTAL:NO)                               //建议 选上 2.忽略导入库 :      是                                                // 可选  //( 设置为此值时,必须在附加库目录中加: E:\WinDDK\7600.16385.1\lib\win7\i3865  这样项目就不会依赖 IDE 环境的设 置)//如果否  (  设置为此值时,将依赖  IDE  的环境的相关设置  ) 输入选项卡 1.附加依赖项 :     ntoskrnl.lib;Hal.lib;wdm.lib;wdmsec.lib;wmilib.lib;ndis.lib;MSVCRT.LIB;LIBCMT.LIB       //必选   //NT式驱动  ntoskrnl.lib    WDM式驱动    wdm.lib //( HalXXX 函数在Hal.lib, WmiXXX 函数在  wmilib.lib  , NdisXXX函数在  ndis.lib ) //(  必要时需要增加微软的标准库  MSVCRT.LIB MSVCRTD.LIB(调试库) LIBCMT.LIBIBCMTD.LIB(调试库) ) //(  如果源码中有  source  文件,那么该文件的  TARGETLIBS  字段会列出该项 目需要的库  )2.忽略所有默认库:   是 (/NODEFAULTLIB)                                //必选  清单文件选项卡 1.启用用户账户控制(UAC) :    否                                        //必选 //不然会出现  >LINK : fatal error LNK1295: “/MANIFESTUAC”与“/DRIVER”规范不兼容;链接时不使用“/MANIFESTUAC”   调试选项卡 1.生成调试信息 : 是(/DEBUG)                                        //可选 2.生成映像文件 :    是(/MAP)                                          //可选 3.映像文件名 :     $(TargetDir)$(TargetName).map                     //可选 系统(System)选项卡 子系统 :      控制台(/SUBSYSTEM:CONSOLE)                            //必选 堆栈保留大小 :    4194304                                               //可选 堆栈提交大小 : 4096                                                  //可选 驱动程序 :       驱动程序(/DRIVER)                                     //必选   高级选项卡 1.入口点 :              DriverEntry                                                    //必选 2.随机基址 :            清空           //把框里的数据删掉。(yes也不是no也不是就是要一个干干净净的文本框)   //必选 //不然会出现  e:\xxx.sys : fatal error LNK1295: “/DYNAMICBASE”与“/DRIVER”规范不兼容;链接时不使用“/DYNAMICBASE”3.数据执行保护(DEP) :   清空 //把框里的数据删掉。(yes也不是no也不是就是要一个干干净净的文本框) //必选   //不然会出现  e:\xxx.sys : fatal error LNK1295: “/NXCOMPAT:NO”与“/DRIVER”规范不兼容;链接时不使用“/NXCOMPAT:NO”   4.设置效应和 :            是(/RELEASE)                                  //可选5.基址 :             0x10000                                       //建议选上
命令行选项卡 1./SECTION:INIT,D /IGNORE:4078                                        //(建议不要写进去,会报错!)

配置属性<__>链接器<__>常规(配置之前)

配置属性<__>链接器<__>常规(配置之后)

配置属性<__>链接器<__>输入(配置之前)

配置属性<__>链接器<__>输入(配置之后)

配置属性<__>链接器<__>清单(配置之前)

配置属性<__>链接器<__>清单(配置之后)

配置属性<__>链接器<__>调试(配置之前)

配置属性<__>链接器<__>调试(配置之后)

配置属性<__>链接器<__>系统(配置之前)

配置属性<__>链接器<__>系统(配置之后)

配置属性<__>链接器<__>高级(配置之后)

配置属性<__>链接器<__>高级(配置之后)

第六步 编译一个简单的程序,测试驱动开发配置

在新建的文件ConfigDrvierApp.c中写上如下代码一共编译测试

//基本信息///
// ><免责声明 ><  Copyright (c) 2017-2017 by Xie Zhimin All Rights Reserved
// ><创建日期 ><  2017/06/04
// ><创建时间 ><  2017年:06月:04日   03时:11分:18秒
// ><文件     ><  comcap.c
// ><文件路径 ><  D:\newSvnCode\WindowsDriver\branches\VS2010WDKEmptyProject\VS2010WDKEmptyProject
// ><隶属工程><
// ><当前用户 ><  Administrator
// ><作者     ><
// ><出处     >< 《http://blog.csdn.net/zhiyuan_x/article/details/72852750》
// ><出处     >< 《 寒江独钓-Windows内核安全编程(完整版)的30页例子》
// ><目的     ><      Windows Server 2012 +WDK7600.16385.1+VS2010驱动开发环境搭建
// ><         ><  1.  Windows Server 2012 +WDK7600.16385.1+VS2010驱动开发环境搭建
// ><         ><  2.  Windows Server 2012 +WDK7600.16385.1+VS2010驱动开发环境搭建
// ><         ><  3.  Windows Server 2012 +WDK7600.16385.1+VS2010驱动开发环境搭建
// ><         ><  4.  Windows Server 2012 +WDK7600.16385.1+VS2010驱动开发环境搭建
// ><设计技术 ><      Windows Server 2012 +WDK7600.16385.1+VS2010驱动开发环境搭建
// ><         ><  1.  Windows Server 2012 +WDK7600.16385.1+VS2010驱动开发环境搭建
// ><         ><  2.  Windows Server 2012 +WDK7600.16385.1+VS2010驱动开发环境搭建
// ><         ><  3.  Windows Server 2012 +WDK7600.16385.1+VS2010驱动开发环境搭建
// ><         ><  4.  Windows Server 2012 +WDK7600.16385.1+VS2010驱动开发环境搭建
//迭代修改///
// ><作者     ><  xzm
// ><修改日期 ><  2017年:06月:04日   03时:11分:18秒
// ><原因     ><
// ><         ><  1.
// ><         ><  2.
// ><         ><  3.
/
#include "ntddk.h"//
//
VOID DriverUnload(PDRIVER_OBJECT driver){// 打印一句话DbgPrint("first: our driver is unloading...\r\n");
}//
// 这是内核模块的入口,可以在这里写下我们想要的东西
//
NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject,PUNICODE_STRING RegistryPath)
{// 打印first:Hello,my salary!DbgPrint("first:Hello,my salary!");// 设置一个卸载函数,便于这个函数退出DriverObject->DriverUnload = DriverUnload;return STATUS_UNSUCCESSFUL;
}

编译,生成,如下图

很是完美,哈哈

但是在安装完驱动时发现出现了问题,启动驱动程序出现以下错误,

命令行 eventvwr 调用windows事件查看器,查看最近日志信息如下,并未发现问题的原因

最后,我修改了源代码,在编译,安装驱动,启动就正常了,所以说驱动的入口参数的变量名没事别瞎改

//基本信息///
// ><免责声明 ><  Copyright (c) 2017-2017 by Xie Zhimin All Rights Reserved
// ><创建日期 ><  2017/06/04
// ><创建时间 ><  2017年:06月:04日   03时:11分:18秒
// ><文件     ><  comcap.c
// ><文件路径 ><  D:\newSvnCode\WindowsDriver\branches\VS2010WDKEmptyProject\VS2010WDKEmptyProject
// ><隶属工程><
// ><当前用户 ><  Administrator
// ><作者     ><
// ><出处     >< 《http://blog.csdn.net/zhiyuan_x/article/details/72852750》
// ><出处     >< 《 寒江独钓-Windows内核安全编程(完整版)的30页例子》
// ><目的     ><      Windows Server 2012 +WDK7600.16385.1+VS2010驱动开发环境搭建
// ><         ><  1.  Windows Server 2012 +WDK7600.16385.1+VS2010驱动开发环境搭建
// ><         ><  2.  Windows Server 2012 +WDK7600.16385.1+VS2010驱动开发环境搭建
// ><         ><  3.  Windows Server 2012 +WDK7600.16385.1+VS2010驱动开发环境搭建
// ><         ><  4.  Windows Server 2012 +WDK7600.16385.1+VS2010驱动开发环境搭建
// ><设计技术 ><      Windows Server 2012 +WDK7600.16385.1+VS2010驱动开发环境搭建
// ><         ><  1.  Windows Server 2012 +WDK7600.16385.1+VS2010驱动开发环境搭建
// ><         ><  2.  Windows Server 2012 +WDK7600.16385.1+VS2010驱动开发环境搭建
// ><         ><  3.  Windows Server 2012 +WDK7600.16385.1+VS2010驱动开发环境搭建
// ><         ><  4.  Windows Server 2012 +WDK7600.16385.1+VS2010驱动开发环境搭建
//迭代修改///
// ><作者     ><  xzm
// ><修改日期 ><  2017年:06月:04日   03时:11分:18秒
// ><原因     ><
// ><         ><  1.
// ><         ><  2.
// ><         ><  3.
/
#include "ntddk.h"//
//
VOID DriverUnload(PDRIVER_OBJECT driver){// 打印一句话DbgPrint("first: our driver is unloading...\r\n");
}//
// 这是内核模块的入口,可以在这里写下我们想要的东西
//
/*
NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject,PUNICODE_STRING RegistryPath)
{// 打印first:Hello,my salary!DbgPrint("first:Hello,my salary!");// 设置一个卸载函数,便于这个函数退出DriverObject->DriverUnload = DriverUnload;return STATUS_UNSUCCESSFUL;
}
*/
NTSTATUS DriverEntry(PDRIVER_OBJECT driver/*这个变量的名称不要随便乱改*/, PUNICODE_STRING reg_path/**/)
{// 这是我们的内核模块的入口,可以在这里写入我们想写的东西。// 我在这里打印一句话。因为”Hello,world” 常常被高手耻笑,所以// 我们打印一点别的。DbgPrint("first: Hello, my salary!");// 设置一个卸载函数便于这个函数能退出。driver->DriverUnload = DriverUnload;return STATUS_SUCCESS;
}

Windows Server 2012 +WDK7600.16385.1+VS2010驱动开发环境搭建相关推荐

  1. Windows Server 2012 +WDK7600.16385.1+VS2008驱动开发环境搭建

    这个配置相较与Windows Server 2012 +WDK7600.16385.1+VS2010驱动开发环境搭建 要简单的多,不需要每次创建驱动工程时配置这么多的参数 下载WDK开发安装包,我已经 ...

  2. Windows Server 2012 R2单域及域森林环境搭建

    Windows Server 2012 R2单域及域森林环境搭建 文章目录 1 单域环境搭建 1 引 言 2 域控制器环境的搭建 2.1 基础配置 2.2 Windows Server 2012 R2 ...

  3. 2012 r2 php mysql_Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境搭建教程

    准备篇 一.环境说明: 操作系统:Windows Server 2012 R2 PHP版本:php 5.5.8 MySQL版本:MySQL5.6.15 二.相关软件下载: 1.PHP下载地址: 2.M ...

  4. vs2010 wdk c语言,Windows7+WDK+VS2010+VisualDDK驱动开发环境搭建.doc

    Windows7+WDK+VS2010+VisualDDK驱动开发环境搭建.doc [置顶]Windows7+WDK+VS2010+VisualDDK驱动开发环境搭建(菜鸟的经验) 分类: 驱动开发 ...

  5. windows驱动开发环境搭建以及helloworld

    文章目录 前言 编译环境-WDK的安装 搭建测试驱动的虚拟机 win11虚拟机 win10虚拟机 在测试机器上运行驱动 修改注册表-显示调试信息 上面驱动代码含义 测试证书签名 其他 旧版本的visu ...

  6. Windows Server 2012 R2 VDI系列(一)—环境简介

    从今天开始我们来谈谈Windows Server 2012 R2中的VDI,Windows Server 2012开始微软对VDI进行了彻底的整改,整个部署的过程简化了很多倍,下边我们就来看一下如何在 ...

  7. Windows编程—Windows驱动开发环境搭建

    文章目录 前言 步骤 步骤一 步骤二 步骤三 连接测试 步骤四 步骤五 总结 前言 作为一个编写Windows程序的开发人员,对Windows驱动开发 并非必需要掌握,但是掌握 Windows驱动开发 ...

  8. Windows驱动开发环境搭建:VS2013+WDK8.1

    你的Windows驱动开发环境之所以搭建不成功,是因为你没有看这篇博客 1.安装包准备 Visio Studio2013: https://pan.baidu.com/s/1P77yeSKuE7mWl ...

  9. windows10 驱动开发环境搭建vs2019 helloworld

    因为特殊原因需要搭建win10驱动环境, 因此学习了一下 但是发现win10环境特别麻烦 vs2022已经出来了,但是没看到驱动支持, 因此还是选择vs2019 提前准备 1 查看系统版本 2 下载v ...

最新文章

  1. Oracle中启动和关闭的各种方式
  2. [软件工程] 查找二维数组最大子数组的之和 郭莉莉李亚文
  3. 探索Julia(part7)--数组与字典函数
  4. MTD/MT/MDD/MD以及LIB/DLL之间的一些联系和问题
  5. Nginx基本功能及其原理
  6. Kafka 分布式消息队列介绍
  7. 95-290-240-源码-内存管理-StreamRecord-StreamRecord简介
  8. vuex中actions配合mutation处理axios请求
  9. 初涉node.js做微信测试公众号一路填坑顺便发现个有趣的其他漏洞
  10. 图标文字对齐的几种常见方法
  11. table样式设置小结
  12. word鼠标右下角有一个小方块_word
  13. SetupAPI简介与设备管理
  14. 《稻盛和夫给年轻人的忠告》阅读笔记
  15. 关闭 OOM killer
  16. PostgreSQL:六. PostgreSQL函数
  17. Oracle递归死循环怎么办?
  18. 高德API 经纬度转换地市区县(含读取文件)
  19. linux xz压缩解压
  20. 微信小程序2D canvas绘制分享海报

热门文章

  1. 快速排序菜鸟python_python菜鸟教程学习13:文件操作
  2. python线程卡死问题解决
  3. 【带着canvas去流浪(5)】绘制K线图
  4. sass报 error (Line XX: Invalid GBK character \xE4) 的解决办法
  5. Spring Cloud 架构 五大神兽的功能
  6. 快升级 iOS 10.3.1,修补了致命WiFi安全漏洞!
  7. Html中的area元素的属性应用范例
  8. .NET 4.0的犄角旮旯
  9. CListCtrl 使用方法总结
  10. 剑指Offer——和为s的两个数字