从以下整理得到

  https://blog.csdn.net/suxinpingtao51/article/details/8610528

  http://www.cnblogs.com/bugchecker/archive/2012/10/26/3041591.html

  http://msdn.microsoft.com/zh-cn/library/ff554739(VS.85).aspx

一 历史

1 95/98/ME下,驱动模型为:Vxd,相关资料可以看《编程高手箴言》的前几个章节,里面有很详细的介绍,虽然这个东西已经过时,但大概看看还是会增长见识的。

2 2000/XP/2003下,Windows采用WDM驱动模型(Windows Driver Model),开发2000/XP/2003的驱动开发包为:DDK。

3 Vista及以后版本,采用了WDF驱动模型(Windows Driver Foudation),其中不支持电源管理, 即插即用的叫NT式驱动, 反之叫WDM驱动; 对应的开发包:WDK。

其实WDK可以看做是DDK的升级版本,现在一般的WDK是包含以前DDK相关的功能,现在XP下也可以用WDK开发驱动,WDK能编译出2000-2008的各种驱动。

4 Vxd驱动文件扩展名为:.vxd; WDM和WDF驱动文件扩展名为:.sys。

二 WDK开发中的头文件包含关系

在 Windows Vista 版本的 WDK 之前,用于驱动程序开发的主要头文件为 Wdm.hNtddk.h 和 Ntifs.h,它们包含很多重复声明。

从 Windows Vista 版本的 WDK 开始,Wdm.hNtddk.h 和 Ntifs.h 将按层次结构来组织并且不包含重复信息。上层的文件将包含下层的文件。每个函数和结构声明仅出现一次。

Ntifs.h 包含 Ntddk.h,而 Ntddk.h 又包含 Wdm.h。下图显示了此结构。

三 win10禁用跟启用驱动签名检查

  bcdedit.exe /set nointegritychecks on //禁用

  bcdedit.exe /set nointegritychecks off //启用

四 安装nt式驱动

  跟安装服务的方法类似

  sc create 驱动服务名称 type= kernel binpath= "路径"

五 Inf文件编写

  这个就是一个配置文件, 至于怎么写, 找一个现成的, 然后参照这msdn上的说明进行修改

  https://docs.microsoft.com/en-us/windows-hardware/drivers/install/inf-file-sections-and-directives

六 windbg相关的问题

  0 MD, 刚学内核编程, 各种坑, 555...

  1 windbg版本

  调试内核尤其是win10的内核要用最新或者次新的windbg, 不然即使符号下载正确了, 也可能遇到各种奇奇怪怪的问题, 比如说正常能用的命令, 结果却用不了...

  windbg不知道从哪一个版本起, 已经不再单独发布, 而是随着WDK或者SDK一起发布(应该是), 能够下载到的单独版本已经是很久很久以前的版本了

  2 符号路径(https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/symbol-path)

  符号路径可以设置多段, 段与段之间用"*"隔开.

   "srv*" 开头的是符号下载缓存路径, 格式: (srv*本地缓存目录*远程下载地址).

  同时需要注意: 本地的路径是用反斜杠"\", 微软的符号服务器用的是正斜杠"/"; 要调试的路径放在前边, 可以加快符号搜索速度

  以下是其中一个例子

    D:\Project\DriverTest\Debug;srv*D:\symbols*http://msdl.microsoft.com/download/symbols

  3 watch窗口的数值表示

    0x 前缀(16进制)、0n 前缀(10进制)、0t 前缀(8进制)、0y 前缀(2进制)

  

windows驱动开发前导知识的更多相关文章

  1. C++第三十三篇 -- 研究一下Windows驱动开发(一)内部构造介绍

    因为工作原因,需要做一些与网卡有关的测试,其中涉及到了驱动这一块的知识,虽然程序可以运行,但是不搞清楚,心里总是不安,觉得没理解清楚.因此想看一下驱动开发.查了很多资料,看到有人推荐Windows驱动 ...

  2. Windows驱动开发(中间层)

    Windows驱动开发 一.前言 依据<Windows内核安全与驱动开发>及MSDN等网络质料进行学习开发. 二.初步环境 1.下载安装WDK7.1.0(WinDDK\7600.16385 ...

  3. [Windows驱动开发](一)序言

    笔者学习驱动编程是从两本书入门的.它们分别是<寒江独钓——内核安全编程>和<Windows驱动开发技术详解>.两本书分别从不同的角度介绍了驱动程序的制作方法. 在我理解,驱动程 ...

  4. windows驱动开发推荐书籍

    [作者] 猪头三 个人网站 :http://www.x86asm.com/ [序言] 很多人都对驱动开发有兴趣,但往往找不到正确的学习方式.当然这跟驱动开发的本土化资料少有关系.大多学的驱动开发资料都 ...

  5. Windows 驱动开发 - 5

    上篇<Windows 驱动开发 - 4>我们已经完毕了硬件准备. 可是我们还没有详细的数据操作,比如接收读写操作. 在WDF中进行此类操作前须要进行设备的IO控制,已保持数据的完整性. 我 ...

  6. windows 驱动开发入门——驱动中的数据结构

    最近在学习驱动编程方面的内容,在这将自己的一些心得分享出来,供大家参考,与大家共同进步,本人学习驱动主要是通过两本书--<独钓寒江 windows安全编程> 和 <windows驱动 ...

  7. Windows驱动——读书笔记《Windows驱动开发技术详解》

    =================================版权声明================================= 版权声明:原创文章 谢绝转载  请通过右侧公告中的“联系邮 ...

  8. Windows 驱动开发 - 7

    在<Windows 驱动开发 - 5>我们所说的读写操作在本篇实现. 在WDF中实现此功能主要为:EvtIoRead和EvtIoWrite. 首先,在EvtDeviceAdd设置以上两个回 ...

  9. Windows 驱动开发 - 8

    最后的一点开发工作:跟踪驱动. 一.驱动跟踪 1. 包括TMH头文件 #include "step5.tmh" 2. 初始化跟踪 在DriverEntry中初始化. WPP_INI ...

随机推荐

  1. JavaScript获取元素尺寸和大小操作总结(转载)

    一.获取元素的行内样式 var obj = document.getElementById("test"); alert(obj.height + "\n" + ...

  2. qt 利用 HTML 生成PDF文档,不能显示jpg图片

    利用 QPrinter 和html 生成 pdf文档 其中用html语句有显示图片的语句 但只能显示png格式的图片,不能显示jpg格式图片. 经过排查:语法,文件路径等都正确,最终在stack ov ...

  3. 【EMV L2】Processing Restrictions

    目的: 处理限制(Processing Restrictions)的目的是确定终端中的应用程序与ICC中的应用程序的兼容程度,并进行任何必要的调整,包括可能拒绝交易. 执行条件: 终端应该都要执行Pr ...

  4. linux nginx 如何配置多个端口

    在linux下发布.netcore 应用,并使用nginx进行反向代理,参照博客园文章 https://www.cnblogs.com/ants/p/5732337.html#autoid-7-3-0 ...

  5. python利用requests和threading模块,实现多线程爬取电影天堂最新电影信息。

    利用爬到的数据,基于Django搭建的一个最新电影信息网站: n1celll.xyz  (用的花生壳动态域名解析,服务器在自己的电脑上,纯属自娱自乐哈.) 今天想利用所学知识来爬取电影天堂所有最新电影 ...

  6. Codeforces1099D.Sum in the tree(贪心)

    题目链接:传送门 思路: 一个节点放的数越大,那么以它为根的子树的节点权值之和就越小. 所以我们要在合法的范围内,使偶数层节点的权值尽可能地大.也就是说,令它的权值是子节点的最小值,这样保证了它的子节 ...

  7. chrome中安装.crx后缀的离线插件

    在前端开发中常常需要在chrome中安装一些插件辅助开发,比如最常用的Postman.React Developer Tools.Vue.js devtools等等...今天分享一下不需要“FQ”的插 ...

  8. backref 用法

    源码 def backref(name, **kwargs): """Create a back reference with explicit keyword argu ...

  9. 你想知道吗?come

    从大二接触Java开始,到现在也差不多三个年头了.从最基础的HTML.CSS到最后的SSH自己都是一步一个脚印走出来的,其中开心过.失落过.寂寞过.虽然是半道出家但是经过自己的努力也算是完成了“学业” ...

  10. 整合spring+springmvc+mybatis

    开发环境: jdk 1.8 eclipse 4.7.0 (Oxygen) tomcat 8.5.29 mysql 5.7 开发前准备: spring 框架的jar包,在这里使用的是spring-5.0 ...