Windows Server 2012 +WDK7600.16385.1+VS2010驱动开发环境搭建
本帖通过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驱动开发环境搭建相关推荐
- Windows Server 2012 +WDK7600.16385.1+VS2008驱动开发环境搭建
这个配置相较与Windows Server 2012 +WDK7600.16385.1+VS2010驱动开发环境搭建 要简单的多,不需要每次创建驱动工程时配置这么多的参数 下载WDK开发安装包,我已经 ...
- Windows Server 2012 R2单域及域森林环境搭建
Windows Server 2012 R2单域及域森林环境搭建 文章目录 1 单域环境搭建 1 引 言 2 域控制器环境的搭建 2.1 基础配置 2.2 Windows Server 2012 R2 ...
- 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 ...
- vs2010 wdk c语言,Windows7+WDK+VS2010+VisualDDK驱动开发环境搭建.doc
Windows7+WDK+VS2010+VisualDDK驱动开发环境搭建.doc [置顶]Windows7+WDK+VS2010+VisualDDK驱动开发环境搭建(菜鸟的经验) 分类: 驱动开发 ...
- windows驱动开发环境搭建以及helloworld
文章目录 前言 编译环境-WDK的安装 搭建测试驱动的虚拟机 win11虚拟机 win10虚拟机 在测试机器上运行驱动 修改注册表-显示调试信息 上面驱动代码含义 测试证书签名 其他 旧版本的visu ...
- Windows Server 2012 R2 VDI系列(一)—环境简介
从今天开始我们来谈谈Windows Server 2012 R2中的VDI,Windows Server 2012开始微软对VDI进行了彻底的整改,整个部署的过程简化了很多倍,下边我们就来看一下如何在 ...
- Windows编程—Windows驱动开发环境搭建
文章目录 前言 步骤 步骤一 步骤二 步骤三 连接测试 步骤四 步骤五 总结 前言 作为一个编写Windows程序的开发人员,对Windows驱动开发 并非必需要掌握,但是掌握 Windows驱动开发 ...
- Windows驱动开发环境搭建:VS2013+WDK8.1
你的Windows驱动开发环境之所以搭建不成功,是因为你没有看这篇博客 1.安装包准备 Visio Studio2013: https://pan.baidu.com/s/1P77yeSKuE7mWl ...
- windows10 驱动开发环境搭建vs2019 helloworld
因为特殊原因需要搭建win10驱动环境, 因此学习了一下 但是发现win10环境特别麻烦 vs2022已经出来了,但是没看到驱动支持, 因此还是选择vs2019 提前准备 1 查看系统版本 2 下载v ...
最新文章
- Oracle中启动和关闭的各种方式
- [软件工程] 查找二维数组最大子数组的之和 郭莉莉李亚文
- 探索Julia(part7)--数组与字典函数
- MTD/MT/MDD/MD以及LIB/DLL之间的一些联系和问题
- Nginx基本功能及其原理
- Kafka 分布式消息队列介绍
- 95-290-240-源码-内存管理-StreamRecord-StreamRecord简介
- vuex中actions配合mutation处理axios请求
- 初涉node.js做微信测试公众号一路填坑顺便发现个有趣的其他漏洞
- 图标文字对齐的几种常见方法
- table样式设置小结
- word鼠标右下角有一个小方块_word
- SetupAPI简介与设备管理
- 《稻盛和夫给年轻人的忠告》阅读笔记
- 关闭 OOM killer
- PostgreSQL:六. PostgreSQL函数
- Oracle递归死循环怎么办?
- 高德API 经纬度转换地市区县(含读取文件)
- linux xz压缩解压
- 微信小程序2D canvas绘制分享海报
热门文章
- 快速排序菜鸟python_python菜鸟教程学习13:文件操作
- python线程卡死问题解决
- 【带着canvas去流浪(5)】绘制K线图
- sass报 error (Line XX: Invalid GBK character \xE4) 的解决办法
- Spring Cloud 架构 五大神兽的功能
- 快升级 iOS 10.3.1,修补了致命WiFi安全漏洞!
- Html中的area元素的属性应用范例
- .NET 4.0的犄角旮旯
- CListCtrl 使用方法总结
- 剑指Offer——和为s的两个数字