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进制)

      

  • 相关阅读:
    日志命令
    QPS、TPS、PV、UV、GMV、IP、RPS
    Tmux实践
    1-2+3-4+5-6....-100 除了88以外其他数字的和 python 实现
    MCNN: 多列卷积神经网络的单图像人群计数
    facenet-pytorch库的简单使用
    SENet笔记
    目标检测 anchor的生成
    matplotlib动图绘制
    感知机算法及其对偶形式
  • 原文地址:https://www.cnblogs.com/talenth/p/7425155.html
Copyright © 2011-2022 走看看