
Driver
文章平均质量分 63
jtujtujtu
长期从事Windows下驱动程序开发,应用软件开发
展开
-
zz: WDM学习笔记
ZZ: http://blog.youkuaiyun.com/ffantasyYD/archive/2006/08/19/1095995.aspx完全是为了便于继续学习, 楼主勿怪!算起来,决定学习WDM也有一年时间了。不过,由于研一紧张的课程,以及研一下期教研室横向的压力,我也很少有时间能静下心来看看书看看代码。可以说是连三天打鱼两天晒网都不如。过了大半年,Walter Oney的《Windows转载 2009-04-16 13:53:00 · 916 阅读 · 0 评论 -
驱动中区分 win8 的 fast startup 与普通的 cold startup
win8在电源管理中有一个选项,default会是enable的。他就是 “turn on fast startup”。 我们要如何找到这个选项并进行设置呢,可以参考:http://www.eightforums.com/tutorials/6320-fast-startup-turn-off-windows-8-a.html Locates: control panel ->原创 2013-02-21 11:27:51 · 3914 阅读 · 0 评论 -
WDM Power IRP 学习 (一)
电源管理是WDM驱动的一个重点和难点,需要处理好,否则在测试、使用过程中很容易出现各种异常。最严重的就是 bug check 0x9F 相关的各种BSOD。这里简单介绍下,power Irp包括两类,一类是系统状态相关power Irp(system-irp),另一类是设备状态相关power Irp(device-irp)。我们在Driver Entry中注册的dispatch可以接受上述sy原创 2013-04-11 11:48:44 · 1976 阅读 · 0 评论 -
WDM Power IRP 讲解 (一)
xuexi 居然不能发??? 电源管理是WDM驱动的一个重点和难点,需要处理好,否则在测试、使用过程中很容易出现各种异常。最严重的就是 bug check 0x9F 相关的各种BSOD。这里简单介绍下,power Irp包括两类,一类是系统状态相关power Irp(system-irp),另一类是设备状态相关power Irp(device-irp)。我们在Driver E原创 2013-04-12 16:00:10 · 2179 阅读 · 0 评论 -
Turn off digital signature [Windows 64bit OS test driver数字签名出错的解法]
ZZ from:http://answers.microsoft.com/en-us/windows/forum/windows_7-windows_programs/how-to-i-turn-off-digital-signature/a7047647-bf29-468f-a885-8e23d60f3daa总结起来有两种办法:1,将打开 testsign, 并设置 lo翻译 2013-07-05 10:36:07 · 3467 阅读 · 0 评论 -
zz: 自定义StartIo
ZZ from : http://www.joenchen.com/archives/424这个系统给的StartIo虽然好用, 但是很多时候我们还是需要使用自定义的StartIo例程的. 因为系统提供的只能使用一个队列.如果是我们自己建立的话, 可以建立多个队列. 灵活性高, 但是稍微复杂些. 其实要说复杂也不尽然, 用那个系统的时候感觉不是很好,因为封装的时候不给力, 还需要在我们自己转载 2013-07-25 15:42:32 · 1075 阅读 · 1 评论 -
ZZ:windbg 常用命令
ZZ from:http://www.cppblog.com/Walker/archive/2012/06/28/146523.html不要再假装自己写的程序没bug了,不可能的,debug工具你早晚得用上。最常见的debug工具非printf(windows上用OutputDebugString函数)莫属,简单方便易学易用,但局限性也是显而易见的,首先它对debugee的影响很大,某些r转载 2013-11-07 11:23:56 · 13412 阅读 · 0 评论 -
WDM中通过driver name获取Driver Object并遍历此Driver产生的Device Object
这里需要用到一个未公开的(undocumented)API原创 2014-05-09 17:17:00 · 3711 阅读 · 0 评论 -
windbg中memory查找以及写到文件
在Debug Driver时,我们经常需要用到kernel debug来抓取LOG,但是如果没有Kernel Debug,如何来抓取Debug LOG呢?方法之一就是将log写到内存,在BSOD时,抓取kerenl memory dump文件进行分析,这里记录下这两个命令,用来查找内存块,写内存到文件。1,!poolfind TAG2,.writemem filename ra原创 2014-12-05 11:02:49 · 6048 阅读 · 0 评论 -
ZZ:INF文件中的注册表位置,譬如HKCR、HKLM、HKR等
ZZ:http://blog.youkuaiyun.com/weiwei22844/article/details/6088889最近在学习驱动编程的INF文件格式时,在AddReg等directive中有很多与注册表相关的内容,现总结如下:HKCR代表HKEY_CLASSES_ROOT;HKCU代表HKEY_CURRENT_USER;HKLM代表HKEY_LOCAL_MACHINE转载 2015-06-29 14:42:06 · 5565 阅读 · 0 评论 -
Driver build Error "error C2220: warning treated as error - no 'object' file generated"
VS2012 build NT driver时,发现platform选择Vista,没有任何问题,选择Win7则出现error C2220: warning treated as error - no 'object' file generated横看竖看没有看到问题,后来搜索发现,原来是没有使用的参数,需要用这个宏来标记:UNREFERENCED_PARAMETER()标原创 2015-05-25 15:18:55 · 1108 阅读 · 0 评论 -
Windows Driver升级到VS2015+Win10 WDK后build的Driver在Win7无法加载
之前一直用VS2013 + Win8.1 WDK,选择target OS Version为 Win7,build的Driver可以正常运行。 Win10 TH2发布后,有一项WHQL测试为DF - HyperVisor Code Integrity Readiness Test这项测试要求Driver支持Device Guard功能,具体可以参考:https://tech原创 2015-12-11 17:54:56 · 5565 阅读 · 0 评论 -
Win10 Windbg symbol path设置
我们经常用的windbg symbol path设置是:File -> Symbol File Path但是自从OS升级到Win10以后,发现这个设置只能单次有效,关闭windbg后再打开,又需要重新设置,对于Windows symbol很是麻烦,查了下MSDN,原来还可以通过环境变量进行设置,具体就是添加名为_NT_SYMBOL_PATH的环境变量,譬如 c:\symbols原创 2016-01-21 14:33:27 · 13640 阅读 · 0 评论 -
windbg + winRT (WOA windows on ARM) kernel debug
有看到WoA的机器,就想尝试在WoA上调试AP、Driver。目前,由于windbg没有ARM的版本,因此无法想x86、x64平台那样简单、快捷的来调试。因此只好通过remote debug的这种方式来尝试。首先想到的是利用windbg,进行本机kernel debug,在WoA的WDK中真的有windbg ARM版本,很兴奋的装上去,打开kernel debug时,发现local根本无法原创 2013-02-01 09:51:11 · 2671 阅读 · 0 评论 -
VS2012 + WDK8 编译WDM驱动
为了支持新的feature,需要update WDK的版本,目前最新的是win8 wdk RTM版。区别于之前的WDK,win8 WDK RTM已经不再自带build env,需要透过vs2012或者vs2010来build。以vs2012为例,vs2012需要将source code转为*.vcxproj才能build。方法一:打开VS2012, file -> open ->原创 2013-01-30 13:39:36 · 9267 阅读 · 0 评论 -
ZZ:开始驱动开发及WDK下载
ZZ: 开始驱动开发及下载WDKhttp://www.qpsoft.com/blog/wdk-windows-driver-kit-download/ WDK的全称是Windows Driver Kit,如果想从网上搜索下载的话,是很困难的:这个基本上没有!不过找到一个方法:成功的下载了For Server 2008 SP1的。随着Windows Vista和Windows Serve转载 2009-04-27 13:45:00 · 1638 阅读 · 3 评论 -
zz:用WinDbg在双机环境下调试驱动程序
zz From : http://blog.youkuaiyun.com/BackStrokeFish/article/details/2205404刚刚开始学习驱动,还希望各位不吝赐教:) 最近一直在学习Windows下驱动开发,尝试过SoftICE调试,可安装上后系统启动(Start NetICE)后,整个系统就死机了,以前在Win2K下安装挺好的,郁闷。所以改成WinDbg调试,发现很转载 2011-11-20 11:15:38 · 973 阅读 · 0 评论 -
利用Virtual Box/ VMware Workstation实现单机调试
最近刚刚学习驱动,对驱动调试这部分很不熟悉,因此希望通过搭建Debug平台来熟悉Windows下的Driver调试。从网上找了不少资料,帮助很大,下面简单介绍下基于Virtual Box / VMware Workstation建立单机调试环境。 1,安装虚拟机,可以是Virtual Box,也可以是VMware WorkStation,这两个都有安装过。Virtual Box的优原创 2011-11-20 11:44:54 · 1347 阅读 · 1 评论 -
Storport MSI (Message Signaled Interrupts)
最近在学习storport miniport Driver,在看到interrupt时,发现有两种方式,一种是通过HW_INITIALIZATION_DATA (Storport)中的HwInterrupt函数来响应,支持line-based interrupts和message-based interrupts;另外一种是通过PORT_CONFIGURATION_INFORMATION (Sto原创 2012-01-13 17:20:06 · 2553 阅读 · 0 评论 -
CurrentControlSet\Services 子项解释
zz: http://support.microsoft.com/kb/103000CurrentControlSet\Services 子项The Services subkeys under the following registry path contain parametersfor the device drivers, file system drivers,转载 2012-08-02 17:42:56 · 6157 阅读 · 0 评论 -
hide empty drive in computer folder in register(隐藏空的驱动盘)
win7的folder option中有这么一个选项:hide empty drive in computer folder in register(隐藏空的驱动盘)可以隐藏某些card reader报出来的空的驱动盘(通常是此时没有插卡的状态,但是如果你的card reader支持auto dlink,那么整个device都会从Device manager中消失,也就不会出现空的驱动盘)原创 2012-08-01 11:14:59 · 1638 阅读 · 0 评论 -
MDL的使用(一) IoAllocateMdl / MmInitializeMdl
MDL (memory descriptor list)通常用于描述Va对应的物理内存的位置。通常Driver中可以访问的内容包括Next、MdlFlags。WDK中定义了几个常用的宏来访问MDL中的一些变量,包括:MmGetMdlVirtualAddress returns the virtual memory address of the buffer.// 虚拟内原创 2012-12-31 11:08:12 · 4059 阅读 · 0 评论 -
zz: 在驱动和应用程序间共享内存
ZZ:http://www.cnblogs.com/lzjsky/archive/2010/11/19/1881911.html在不同的场合,很多驱动编写人员需要在驱动和用户程序间共享内存。两种最容易的技术是: 1,应用程序发送IOCTL给驱动程序,提供一个指向内存的指针,之后驱动程序和应用程序就可以共享内存。(应用程序分配共享内存) 2,由驱动程序分配内存页,并映射这转载 2012-12-31 13:39:18 · 978 阅读 · 0 评论 -
zz: 设备读写 之 直接方式(Direct I/O)MmGetMdlByteCount/MmGetMdlByteOffset/MmGetMdlVirtualAddress
最近一直在看WDM的驱动,在memory方面有一些不是很清楚,譬如 MDL 的具体结构、使用方法等等。在网络上搜刮一番,了解了MDL的具体使用,主要是MmGetMdlByteOffset这个宏的意义。之前一直认为这个值应该是0。事实并非如此,这个值是一个相对于page start addrss的offset,也就是说Va转为Pa时,并没有从page start address开始,而是从其中的转载 2012-12-31 10:50:27 · 2586 阅读 · 0 评论 -
D3 cold for storport miniport
Mark。。。http://msdn.microsoft.com/en-us/library/windows/hardware/hh920421(v=vs.85).aspxA miniport driver calls StorPortInitializePoFxPower to register a storage device with the power manageme原创 2012-12-31 14:05:07 · 2439 阅读 · 0 评论 -
bus-master dma 注意事项
DMA通常包括system dma和bus-master dma。他们的区别在于system dma是依赖于系统,device本身并没有dma控制传输的能力,而bus-master则相反,device有dma控制传输的能力。通常比较多见的是bus-master dma方式。 DMA的使用,首先在Start device中获取DMA_ADAPTER,透过DMA_ADAPTER提供的ca原创 2012-12-31 16:46:46 · 5901 阅读 · 0 评论 -
WDK/WinDDK setenv 路径设置
setenv是一个bat文件,他会设置当前build属性,譬如x86 or x64,check or free。本文只记录修改default路径通常,通过WDK的快捷方式调出Build Env时,会跳转到 $installDisk\WinDDk\7600.16385.1 (以7600.16385.1版本为例 )而我们通常希望他能够自动跳转到我们的常用目录,譬如 D:\mydriver原创 2013-01-07 17:41:17 · 3428 阅读 · 0 评论 -
zz: Windbg: debugging commands
zz from : http://karthikkv.blogspot.tw/2012/06/windbg-debugging-commands.htmlWindbg: debugging commands1. !thread/!process [address] e - on x64 will not show you the meaningless Args to Ch转载 2017-06-21 17:16:36 · 589 阅读 · 0 评论