首先到这个网站里去下载Visual Studio2019,注意目前最新版的WDK仅支持Visual Studio2019,如果要下载2022版本目前推出了预览版,但需要申请下载,所以这里以2019为例。

以前的 WDK 版本和其他下载 - Windows drivers | Microsoft Docs

打开网站后往下拉,找到Visual Studio2019下载,选择一个适用于你的版本,如果个人的话建议Community版本

下载之后双击打开进入安装界面,安装时选择C++的桌面开发要选中,同时“用于Windows 10 SDK)”这个也要选中,WDK基于这些LIB。

如果你电脑上已经有VS了,但是没有装win10SDK,你可以到这个网站下载SDK:Windows SDK - Windows 应用开发

如果网页提示Win11 SDK也没事,可以下载安装到你的Win10上,因为这个是兼容的。

然后在页面往下拉,可以看到WDK,这里有许多版本,你不用在意你的Win10版本,你只需要下载最新的一个就可以了,是向前兼容的。

下载下来以后用管理员权限运行并安装到你的电脑上就可以了,记住安装顺序,先安装好Visual Stuio2019以后在安装WDK,安装WDK时记得记住安装路径,因为等下需要到安装路径下去安装Visual Stuio2019 Tools插件。

安装完成之后打开WDK安装路径,一直往下拉找到“Vsix”目录双击进去

可以看到vs2019,双击进去

然后双击WDK.vsix,注意,执行这一步之前先退出Visual Stuio2019

安装完成之后在打开Vs2019,在新建项目里就可以看到WDK的项目了,后面括号里(KMDF)的意思是Kernel MDF模型,WDK使用的是MDF开发框架模型,所以这里叫MDF。

我们创建一个WDK项目,这里创建的是一个基础内核MDF模型项目,注意这里选择“Kernel Model Driver,Empty”空项目,这样更容易理解,如果创建非空项目的话不适合基础开发人员理解,我们先创建一个空项目编写一个基础的代码,这样方便上手

然后我们在增加一个“driver.c”的源文件,注意这里一定要以.c结尾,只能是C语言文件,在Visual Studio里如果.c结尾的则会用C编译器来编译,这样会节省很大的代码空间,如果是C++的话还会增加额外的一些代码,如普通函数里也会增加try异常代码,以及结构体里会增加构造函数调用之类的代码,这也是为什么我们平常看到的C++程序会比C语言的要大。

另外最重要的一点是Windows内核是C语言编写的,用C编译器编译出来的程序更符号内核程序的入栈方式。

这里文件可以随意命名,以.c结尾就好了,起driver只是windows driver开发中惯用这个名字作为main文件

 然后我们包含基础头文件:

这个是ddk的头文件,我们的wdk基于ddk,只不过wdk增加了一些针对电源、PNP的功能,WDK原本就是DDK框架的增强版,只不过现在改名了叫WDK了,WDK包含了DDK框架并增加了一些增强功能,以便能够将过去的一些驱动移植到最新的系统中。

本例程创建一个NTDDK的驱动框架,后续会写文章教大家编写WDK框架的驱动。

#include <ntddk.h>

然后创建一个DriverEntry函数,这个函数就相当于main函数,原型以及返回值都有要求的,这个函数会在驱动被调用时执行。

NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath){return STATUS_SUCCESS;}

然后直接build

build可能会出现这个问题:

这个是Spectre缓解库的问题,MS官方推出的一个库,默认在驱动开发时会开启,但是需要你电脑上安装对应的VS Spectre库,这个库的作用是用来保证硬件开发时的漏洞问题,它对应的是C++库,你可以把它理解为C++的增强安全库,它里面的函数对指针与堆栈溢出代码做了很好的防范,使用这个库可以保证你的代码不会出现内存溢出或指针非法引用。

解决这个问题有两个方案,第一是到官网下载对应的Spectre缓解库,但是比较麻烦,第二是在项目中禁用它,这里我们先禁用它:

build之后就可以在文件夹下看到生成的sys文件以及inf文件:

Windows Driver开发_安装与配置环境相关推荐

  1. Windows配置Java环境变量(下载、安装、配置环境)

    本人以 博客专家 担保,本篇文章可以解决你的问题,若未解决,将为你远程操作,但希望你为我点一个关注!!! 推荐文章MySql 5.7 安装教程(超详细) https://myhub.blog.csdn ...

  2. 配置iscsi服务器_在Windows Server 2016上安装和配置iSCSI目标服务器

    配置iscsi服务器 In this article, I am going to explain how we can install and configure the iSCSI Target ...

  3. Chocolatey:Windows软件包管理系统_安装及使用指南

    Chocolatey: Windows软件包管理系统_安装及使用指南 Why chocolatey? Chocolatry是Windows下的软件包管理工具,可快速安装软件.Linux下通常使用apt ...

  4. java基础学习总结一(java语言发展历史、jdk的下载安装以及配置环境变量)

    最近一段时间计划复习一下java基础知识,使用的视频课程是尚学堂高淇老师的,上课过程中的心得体会 直接总结一下,方便以后复习. 一:计算机语言的发展 1:机器语言,最原始的语言,主要有"01 ...

  5. Xamarin.Forms教程下载安装JDK配置环境变量

    Xamarin.Forms教程下载安装JDK配置环境变量 Xamarin.Form环境配置下载安装JDK JDK是编程Java程序必须的软件.也许有人会问我们用的C#为什么还有Java呢?这是因为我们 ...

  6. Windows下Tuxedo的安装与配置-无数据库

    Windows下Tuxedo的安装与配置-无数据库 草木瓜 2005-5-18 一.安装前的文件准备 下载Tuxedo For Windows版本和License文件,本机采用的是Tuxedo9 wi ...

  7. Java环境配置——JDK的选择、下载、安装与配置环境变量

    Java环境配置--JDK的选择.下载.安装与配置环境变量 JDK的简介以及版本选择.下载与安装 JDK历史版本(除最新版以外的版本) java平台移植性的原因 解释执行和编译执行 JDK的Linux ...

  8. Windows下Tuxedo的安装与配置

    Windows下Tuxedo的安装与配置-无数据库 一.安装前的文件准备 下载Tuxedo For Windows版本和License文件,本机采用的是Tuxedo9 windows版本.具体 Win ...

  9. Windows10 JDK9安装及配置环境变量与Eclipse安装

    一 下载JDK9 http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html 选择版本,系统 ...

最新文章

  1. SAP ECM(Engineering Change Management) 相关表
  2. 手机安全卫士——进程管理
  3. 使用java搭建直播平台,我就不信你还听不明白了!
  4. 页面生成周期中的两个Application池的详情小弟了解
  5. keras 自定义评估函数和损失函数loss训练模型后加载模型出现ValueError: Unknown metric function:fbeta_score
  6. 爬取异步请求(XHR/JS)数据方法
  7. 前端React结构工程-改写render
  8. Earth’s best1段有机南瓜泥
  9. asp.net生成高质量缩略图通用函数
  10. python elementtree 命名空间_用Python中的命名空间通过‘ElementTree’解析XML
  11. socket.io 中文手册 socket.io 中文文档
  12. 嵌入式ttf字体裁减说明
  13. php 冗余代码检测,冗余代码检查工具Simian | 求索阁
  14. 信息化和信息系统知识点总结
  15. Java标准I/O流编程一览笔录
  16. vue2.0 基础知识
  17. Microsoft Office 2013 word MathType 报错 (MathPage.wll)
  18. 名帖204 蔡襄 行书《行书帖选》
  19. linux syslog原理,Linux日志管理之詳解 syslog/vsyslog
  20. 【OH】SET System Variable Summary SQLPLUS 系统变量设置

热门文章

  1. linux动态库路径生效,Linux下如何解决动态库的链接问题
  2. win10 漏洞 蓝屏代码
  3. windows系统bat批处理 一键添加共享打印机
  4. 用Python显示灰度图像的灰度直方图
  5. unity 斥力_基于绝对能量守恒原理的基础物理理论-国家科技图书文献中心.PDF
  6. s1200 博图高速脉冲计数值没有变化_如何实现SIMATIC S7-1200的高速计数器(HSC)软件门控制?...
  7. 批处理定时执行任务_[Abaqus tips ] 分析任务的定时执行
  8. android多个网络请求如何依次执行,Android 并发和串行网络请求
  9. dds通信中间件_车内的中间件协议:是面向服务,还是以数据为中心,或是RESTful?...
  10. python列表使用技巧大全_Python 基础起步 (六) List的实用技巧大全