zoukankan      html  css  js  c++  java
  • windows驱动开发前导知识

    从以下整理得到

      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:ProjectDriverTestDebug;srv*D:symbols*http://msdl.microsoft.com/download/symbols

      3 watch窗口的数值表示

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

      

  • 相关阅读:
    December 23rd 2016 Week 52nd Friday
    December 22nd 2016 Week 52nd Thursday
    December 21st 2016 Week 52nd Wednesday
    December 20th 2016 Week 52nd Tuesday
    December 19th 2016 Week 52nd Sunday
    December 18th 2016 Week 52nd Sunday
    uva294(唯一分解定理)
    uva11624Fire!(bfs)
    fzu2150Fire Game(双起点bfs)
    poj3276Face The Right Way
  • 原文地址:https://www.cnblogs.com/talenth/p/7425155.html
Copyright © 2011-2022 走看看