系统装好了, 接下来要装VC了, 原来一直用的是VC9也就是VS2008, 于是乎便开是安装VS2008, 然而 Windows 10 居然不支持VS2008的直接安装, 还需要下载老版本的.net, 看来 Windows 10 已经把 VS2008 当成原始人使用的工具了! 倘若是要在 Windows 10 下安装 VS2008 就不得不在新系统里先装一堆老...
- WIN10+VS2015编译驱动程序
最近为了赶上比尔老哥的前进步伐, 我这一码农也开始玩起了Windows 10, 玩Windows 10装VS至少也得装个VS2015, 还在用VS2008那就out了, 当然要能装VS2018更好, 不过手头上没安装包, 还是算了. 系统和VS都安装好后接下来要弄的就是DDK了, 当然老版本的DDK也是不适合的, 现在新出的驱动开发工具都叫WDK了. 于是便在微软官网上下载了个Windows 10 WDK安装, Win 10 WDK有很多版本, 下载时需要自己做出选择. VS2015在安装WDK之后是可以直接编译驱动程序的, 这比老版本的DDK方便多了.
系统和开发工具的安装都还是比较简单的, 不过安装及使用过程中还是有些地方需要注意的, 为便于以后查找或帮助其他有需要的人, 我把需要注意的地方记录如下:
1. 安装VS2015时勾选Universal Windows App Development Tools也就是SDK, 这在编译驱动程序时也是...
- DeviceExtension与DeviceObjectExtension的关系
DeviceExtension与DeviceObjectExtension是DEVICE_OBJECT中的两个成员变量, 其在DEVICE_OBJECT中的原型分别为:PVOID DeviceExtension和struct _DEVOBJ_EXTENSION *DeviceObjectExtension, 可以看出两个成员均为指针.
DeviceExtension指向的是设备对像创建者自定义的结构, 网上能搜到很多驱动示例会用到 DeviceObjectExtension - DeviceExtension来计算DeviceExtension所指向数据结构的长度, 那么二者到底是什么关系以至于该算式能得到DeviceExtension所指向数据结构的长度? 想必大多数读者的猜想跟我是一样的, IoCreateDevice创建DeviceObject时, 会在DeviceExtension数据结构之后分配DeviceObjectExtension数据结构的空间, 这样便可以用DeviceObjectExtension - DeviceExtension来计算DeviceExtension所指向数据结构的长度. 事实如何呢? 我们可以做一个简单的实验来验证.
我写一个简...
- Windows7开启调试模式
开启目标系统的调试模式是驱动程序调试中必不可少的一步, 在XP时代可以通过编辑boot.ini开启系统的调试模式, 然而Windows7里boot.ini已不复存在. 那么如何开启Windows7的调试模式呢, 欲知详情且看后文解说.
Windows7的引导配置可以用bcdedit(其中文名为Windows启动管理器)来进行设置, 我们可以依照下列过程来为Windows7增加一个调试启动项:
1. 用Administrator身份运行cmd.
2. 进入command line模式, 输入bcdedit命令, 会显示出系统引导信息. 在没做任何修改的情况下我们可以看到表项里只有一条启动加载器记录.
3. 利用bcdedit设置调试端口为com_1, bcdedit /dbgsettings serial baudrate:115200 debugport:1 (*备注:debugport:1也就是com_1, 其实该步骤是可以省略掉的, 如果直接输入bcdedit /dbgsettings, ...
- 调试Windows7时显示KdPrint信息
直接联调Windows7驱动时我们会发现Windbg里没有任何KdPrint的输出显示, 如果无法显示KdPrint输出的话, 那我们便两眼一抹黑只能瞎调试了, 微软肯定不会做这么愚蠢的事情, 必定是有哪些地方需要设置才能让KdPrint的输出到Windbg里显示出来. 下文便是我找到的开启调试Windows7时显示KdPrint信息的方法:
1. 打开注册标项:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Manager
2. 新建一项Debug Print Filter.
3. 新建一个DWORD值, 名称为DEFAULT(*注意:必须全部是大写), 值为8.
修改完后注册表对应项配置如下:
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerDebug Print Filter]
"DEFAULT"=dword:00000008