![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
驱动开发
文章平均质量分 78
floweronwarmbed
这个作者很懒,什么都没留下…
展开
-
调试器和相关工具
没有摘要转载 2010-06-11 15:51:00 · 1162 阅读 · 0 评论 -
【转帖】在内核模式下创建和终止线程
// Globals to communicate with our system threadPVOID ThreadObjectPointer=NULL; // Thread pointerBOOLEAN ExitNow; // Set to cause thread to exitKEVENT T转载 2008-11-03 11:11:00 · 854 阅读 · 1 评论 -
【转帖】驱动编程学习笔记之IO处理
典型的i/o处理过程=================操作系统将所有的i/o请求都抽象成针对一个虚拟文件的操作,从而掩盖了“一个i/o操作的目标可能不是一个文件结构的设备“这样的事实。这一抽象也使得应用程序对待设备的接口变得泛化。用户模式api |i/o系统服务api(Ntxxx) |i/o管理器(Ioxxx) |内核模式设备驱动程序------驱动程序支持例程(Io,转载 2008-11-03 11:14:00 · 1790 阅读 · 0 评论 -
【转帖】驱动程序与应用程序之间的通信
驱动程序必须与应用程序进行通信,才能最终达到应用程序控制设备的目的,不然驱动有QIU用。要通信就涉及到3个方面: 1.应用程序与驱动程序通信2.驱动程序与应用程序通信3.数据传输下面分别讨论1。应用程序与驱动程序通信1-1 应用程序实现与驱动通信的过程: ---用CreateFile打开设备,然后用DeviceIoControl和驱动通信,包括从驱动读数据和写数据2种情况也可以使用ReadF转载 2008-11-03 10:39:00 · 949 阅读 · 0 评论 -
【转帖】如何建立应用程序和驱动程序间的通信
驱动程序是为设备的硬件层编程服务的,但同样需要提供和应用程序进行通信的能力,从而最终达到应用程序控制设备的目的。本文主要讨论应用程序与驱动程序的通信和驱动程序与应用程序的通信。 在Windows中,应用程序实现与WDM通信的过程是:应用程序先用CreateFile函数打开设备,然后用DeviceIoControl和WDM进行通信,包括从WDM读数据和写数据给WDM两种情况,也可用ReadFil转载 2008-11-03 10:45:00 · 671 阅读 · 0 评论 -
【转帖】驱动程序和应用程序之间通信(For Win2000 or later version)
正文 Q: 请问有什么方法实现驱动程序主动和应用程序进行实时通讯,而不用应用程序采用定时查询的方法? 比如驱动有一事件发生需要立即通知应用程序,或驱动程序需要向应用程序读取一些内容. A: 有一个很容易的方式,在驱动程序和应用程序之间用一个事件。 在应用程序CreateFile的时候,驱动程序IoCreateSynchronizationEvent一个有名的事件,然后应用程序CreateEven转载 2008-11-03 10:41:00 · 506 阅读 · 0 评论 -
【转帖】安装驱动的inf文件资料
INF是Device INFormation File的英文缩写,是Microsoft公司为硬件设备制造商发布其驱动程序推出的一种文件格式,INF文件中包含硬件设备的信息或脚本以控制硬件操作。在INF文件中指明了硬件驱动该如何安装到系统中,源文件在哪里、安装到哪一个文件夹中、怎样在注册 表中加入自身相关信息等等。安装监视器、调制解调器和打印机等设备所需的驱动程序,都是通过INF文件,正是INF的转载 2008-11-03 10:34:00 · 896 阅读 · 0 评论 -
【转帖】简单建立VC + DDK的驱动开发环境
我们可以使用DDK的编译环境,即进入相应的编译环境"Windows Checked Build Enviroment", 在驱动源程序目录下,使用build命令编译驱动,生成SYS。或者如果条件充许,你可以使用像DriverStudio 3.x这样的专业软件.实际上, 我们可以对VC进行简单的设置,就能搭建出自己的VC + DDK的驱动开发/编译环境。 (1)VC+DDKB转载 2008-11-01 16:50:00 · 710 阅读 · 0 评论 -
【转帖】应用程序如何使用驱动程序
应用程序中使用 CreateFile,ReadFile,WriteFile,DeviceIoControl,CloseHandle 来指示驱动程序完成某种任务。比如我们在应用程序中使用 ReadFile 来让驱动读取硬件设备,我们在应用程序中使用 WriteFile 来让驱动写硬件设备,我们在应用程序中使用 DeviceIoContorl 来让驱动完成某些驱动支持的功能。而 ReadFi转载 2008-11-01 16:44:00 · 1474 阅读 · 1 评论 -
【】编写驱动拦截NT的API实现隐藏文件目录
目前NT下有很多种隐藏文件和目录的方法,其中最简单的一种是给文件和文件夹加上系统属性和隐藏属性,操作系统就会不在显示了,而且查找也找不到了,但是这种方法一点都不彻底,没有可用性!下面我们来介绍用NT驱动程序来拦截NTAPI来实现彻底隐藏文件和目录的目的。NT下有一个文件NTDLL.DLL,大部分NTAPI都是在这个库中封装的。其中实现查找文件和目录的API接口是ZwQueryDirectoryF转载 2008-11-03 15:51:00 · 564 阅读 · 0 评论 -
【转帖】驱动开发学习笔记
驱动开发学习笔记1 很久没有网了,出了一段时间的差,近来,莫名的就有点郁闷!前不久在大富翁上发了一份帖子是关于delphi程序员的发展,大家的反应并不都是很好。于是开始觉得可以考虑换个方向。以前我是做MIS开发的。换哪个方向呢?人越多的方向,好像越是没有前途。想想当初上大学,那可是越多人考的学校,学费越贵啊!可现在的职业呢?越多人干的事,越是没有前途了。考虑来考虑去,决定学习一下驱动程序的转载 2008-11-03 16:28:00 · 811 阅读 · 0 评论 -
【转帖】如何从内核模式设备驱动程序中打开一个文件以及如何读取或写入文件
本文介绍如何从内核模式设备驱动程序中打开磁盘文件以及如何读取或写入文件。回到顶端更多信息对象名称来引用文件内核模式设备驱动程序对象名称来引用文件。 此名称是 /DosDevices 一起与该文件的完整路径。 是例如 C:/Windows/Examp...对象名称来引用文件内核模式设备驱动程序对象名称来引用文件。 此名称是 /DosDevices 一起与该文件的完整路转载 2009-06-01 16:48:00 · 881 阅读 · 0 评论 -
【转帖】文件系统驱动编程基础篇
文件系统驱动编程基础篇之一——我们的准备一、导言在四个月漫长的征战后,终于在国庆节的今天完成了基础篇系列。本文写作的初衷很简单,就是给平静的池水中加入一点波澜,如果大家在阅读后感受到一点生气,激起探索未知的热情,笔者也会感到由衷的喜悦。本系列文章为业余编程爱好者而写,仅仅作为初学者的一个借鉴,真正的精华存在于参考资料*中。知识的积累将经历从薄到厚,再从厚到薄的反复过程,为了打下牢固的基转载 2009-08-26 09:07:00 · 5231 阅读 · 0 评论 -
【转帖】实战DeviceIoControl 系列
实战DeviceIoControl 之一:通过API访问设备驱动程序Q 在NT/2000/XP中,我想用VC编写应用程序访问硬件设备,如获取磁盘参数、读写绝对扇区数据、测试光驱实际速度等,该从哪里入手呢? A 在NT/2000/XP中,应用程序可以通过API函数DeviceIoControl来实现对设备的访问―获取信息,发送命令,交换数据等。利用该接口函数向指定的设备驱动发送正确的控制转载 2009-06-06 11:58:00 · 1595 阅读 · 0 评论 -
【转帖】内核同步对象
内核同步对象(上) Windows NT提供了五种内核同步对象(Kernel Dispatcher Object),你可以用它们控制非任意线程(普通线程)的流程。表4-1列出了这些内核同步对象的类型及它们的用途。在任何时刻,任何对象都处于两种状态中的一种:信号态或非信号态。有时,当代码运行在某个线程的上下文中时,它可以阻塞这个线程的执行,调用KeWaitForSingleObject或Ke转载 2009-06-01 17:54:00 · 3279 阅读 · 0 评论 -
【转帖】驱动研究日记-链表+后备链表
驱动研究日记-链表+后备链表链表的使用:① 定义一个链表头,单链表为SINGLE_LIST_ENTRY,双链表为LIST_ENTRY。然后要对链表头进行初始化。单链表链表头初始化要将它的Next域设为NULL,双链表直接调用InitializeListHead。② 往链表中插入元素:对于单链表使用PushEntryList双链表可以从链表头也可以从链表尾插入:I转载 2009-06-01 17:38:00 · 1244 阅读 · 0 评论 -
【转帖】网络驱动程序编程要点
网络驱动程序编程要点编写Windows 2000的任何网络驱动程序时通常都需要考虑的几点问题1 可移植性2 多处理器支持3 IRQLs4 同步和指示5 包结构6 使用共享内存7 异步I/O和完成函数1. 可移植性NDIS驱动程序应很容易在支持Windows 2000的平台间移植。一般说来,从一个硬件平台移植到另一个平台只需要将它在兼容系统的编译中重新编译即何转载 2009-06-01 17:30:00 · 557 阅读 · 0 评论 -
【转帖】INFO: Windows NT 驱动程序开发人员提示 -- 应注意避免的事项
下面是对创建 Windows NT 设备驱动程序的一些提示。 这些提示适用于所有技术。 还可以将这些提示用作解决驱动程序问题的核对清单。 要有效地使用下面提供的信息,您需要具备 Windows NT 体系结构的基本知识和某些设备驱动程序的开发经验。 有关开发设备驱动程序的详细信息,请参见 Windows NT 设备驱动程序工具包 (DDK),该工具包可以通过 MSDN Professional 成转载 2009-06-01 17:25:00 · 475 阅读 · 0 评论 -
【转帖】驱动开发之一 --- 创建一个简单的设备驱动 【译文】
驱动开发之一 --- 创建一个简单的设备驱动 【译文】2008-04-19 15:50在这里,我们将描述如何创建一个简单的设备驱动程序,动态的加载和卸载,以及在用户模式与之通讯。理论:在开始之前,我们需要了解几个概念:我们知道一个程序经过编译器和连接器,最终生成一个一定格式二进制文件,这个格式可以被操作系统识别。在windows系统中,这个格式就是PE格式。在这个格式中,有转载 2009-06-01 18:07:00 · 867 阅读 · 0 评论 -
【转帖】使用 C++ 编写内核模式驱动程序的优点与缺点
使用 C++ 编写内核模式驱动程序的优点与缺点2009-04-26 17:17转C++ 及其对象特性似乎与 Microsoft Windows Driver Model (WDM) 和 Windows Driver Foundation (WDF) 驱动程序的语义非常吻合。但是,对于内核模式驱动程序,C++ 语言的一些特性可能导致难以发现和解决的问题。为了帮助您进行转载 2009-06-01 17:00:00 · 901 阅读 · 0 评论 -
【转帖】个人收藏的一些学习站点(随时更新)
对于从事Windows驱动开发的朋友,或者是对Windows内核感兴趣的朋友,以下几个BLOG值得经常看看!1,Kernel Mustard by Steve Dispensa link: http://kernelmustard.com/category/ddk/他以前的BLOG地址为:http://msmvps.com/blogs/kernelmustard/de转载 2008-11-01 15:42:00 · 452 阅读 · 0 评论 -
【转帖】DDK常用函数列表
(A)ASSERT ASSERTMSG (C)CM_FULL_RESOURCE_DESCRIPTOR CM_PARTIAL_RESOURCE_DESCRIPTOR CM_PARTIAL_RESOURCE_LIST CM_RESOURCE_LIST CONFIGURATION_INFORMATION CONTAINING_RECORD CONTROLLER_OBJECT (转载 2008-11-01 15:28:00 · 580 阅读 · 0 评论 -
【转帖】利用VMWare和WinDbg调试驱动程序
心里总感觉 SOFTICE 的发展快到末路了。果然在 2006 年时Compuare 宣布停止 SOFTICE 开发。这里消息确实令很多人心痛。但与此同时,Windows 的配套调试器 windbg , cdb 等不断更新,功能不断强大,你必须选择它,虽然它内核调试速度不理想。后来我知道了 syser debuger, 国人写的不错的调试器,基本上 SOFTICE 命令等相似,上手很转载 2008-11-01 14:17:00 · 1017 阅读 · 0 评论 -
【转帖】VMWare和WinDbg调试驱动程序环境配置
首先,最好先下载符号表,然后安装到真实系统中。再下载WinDbg程序的最新版本,同样也安装到真实系统中。接下来我们要在虚拟机中装系统了,我用的是WinXP SP2。安装完成后修改boot.ini文件。在里面[operating systems]节中加入一行," multi(0)disk(0)rdisk(0)partition(1)/WINDOWS="Microsoft Windows X转载 2008-11-01 14:16:00 · 682 阅读 · 0 评论 -
[转载]利用VMWare和WinDbg调试驱动程序
这几天上网查了一些关于WINDBG的资料,发现很多朋友在寻找关于WINDBG的教程.(呵呵,我也在寻找有关于此的一些材料)本来是一想写关于sr.sys的分析的,不过觉得始终不妥,一句老话,授人以鱼不如授人以渔,所以这篇文章以sr.sys分析作为示例,不过我们的重点却是要放在WINDBG的使用上.首先来介绍一下搭建的环境:WINDBG:Windows Debugger Version转载 2008-11-01 14:06:00 · 615 阅读 · 0 评论 -
[转载]利用VMWare和WinDbg调试驱动程序
也许很多人早就知道了,但是我不知道,以前一直抓住softice大腿不放,但是由于在我的Hyber Thread处理器上,Softice实在是运行的太不理想了。故而只能利用WinDbg了。不过听牛人说过,WinDbg可以把内核的全部结构都显示出来,要比Softice强。等我以后测试看看。首先,最好先下载http://msdl.microsoft.com/download/symbols/p转载 2008-11-01 13:57:00 · 680 阅读 · 0 评论 -
【转帖】Windows内核方面的经典书籍
Inside Windows 2000;Microsoft Windows Internals。这两本书分别是同一套Windows内核架构分析书籍的第三版和第四版,两位作者在编写本书的过程中被授权察看Windows的相关源码,所以可以说这两本书是Windows内核分析的第一手资料; Programming the Microsoft Windows Driver Model,本书转载 2008-11-01 15:44:00 · 1387 阅读 · 1 评论 -
【转贴】WINDOWS 蓝屏错误代码说明一览表
<b style="mso-bidi-font-weight:normal">WINDOWS <span style="font-size:22.0pt;font-family:宋体;mso-ascii-font-family:"Times New Roman";mso-hansi-font-family:"Times New Roman"">蓝屏错误代码说明一览表<b styl转载 2008-11-01 15:39:00 · 566 阅读 · 0 评论 -
【转帖】关于WinDbg的一些文章
A word for WinDbg:不错的入门文章,介绍了WinDbg的安装、Symbols、常用命令和一个调试示例。A word for WinDbg (2)More on debugging with SOS.DLL - enter Visual StudioTroubleshooting ASP.NET using WinDbg and the SOS extension、、转载 2008-11-01 15:34:00 · 3713 阅读 · 0 评论 -
【转帖】驱动版Hello World
我们学习程序设计,都是从“Hello World”开始的,驱动程序也不例外,今天我就写一个驱动版的“Hello World”来热热身,目的希望大家能对驱动程序的基本框架有所了解。驱动程序分为2类,一个是Kernel模式驱动,另一个是Windows模式驱动,2种模式本质是相同,但细节不同,本文介绍的是内核模式驱动和驱动程序的安装、使用。驱动程序同普通的EXE,DLL一样,都属于PE文件转载 2008-11-01 15:30:00 · 604 阅读 · 0 评论 -
【转帖】WinDBG+VMware=调试内核
呵呵,搞点突兀的标题而已。其实说的还是如何使用WinDBG和VMware来搭建调试内核的环境而已,这些网上已经有数不清的教程了,不过我喜欢自己亲手写一下。第一,把这个过程写一遍能加深印象,就算以后忘记了也可以有笔记查找,快速想起来。第二、网上的教程很多都是互相抄来抄去,连错误也抄过去了。很典型一个错误就是Baud Rate,前面还写115200,后面就写成了11520了,狂汗!按照我这篇转载 2008-11-01 14:21:00 · 1751 阅读 · 1 评论 -
【转帖】使用WinDBG和VMware调试驱动程序
环境的搭建参考:http://hi.baidu.com/1ian9yu/blog/item/bbaf1301240d7ad3267fb524.html,这里只说调试。还是先统一一下名称,真实的操作系统叫HostOS,在VMware里虚拟的操作系统叫GuestOS。我们编写完驱动后,当然要进行调试,这不可能在HostOS(本机)里调试,否则BOSD就麻烦了,而且支持本机调试的调试器比较流行转载 2008-11-01 14:24:00 · 906 阅读 · 0 评论 -
【转帖】驱动编写与windbg调试
一.驱动编写随着对windows系统的深入研究,越来越多的内核方面的知识被挖掘出来了,今天我们讨论下如何写一个简单的驱动,并使用现在比较新的windbg调试器进行调试。首先写驱动要对驱动有一个比较全面的认识。一个简单的驱动一般有以下几个部分组成:1,一个入口点(DriverEntry):用于创建设备对象及符号连接,以及其它初使化操作,如分配池内存等.2,一个出口(DriverUnload):删除转载 2008-11-01 14:28:00 · 570 阅读 · 0 评论 -
【转帖】DDK学习笔记---入门
DDK学习笔记---入门驱动程序的结构:1.1 一个入口点(DriverEntry):用于创建设备对象及符号连接,以及其它初使化操作,如分配池内存等.1.2 一个出口(DriverUnload):删除符号连接与设备对象,并释放已经分配的各种资源,如池内存等1.3 几个DispatchHandler:用于响应Ring3程序的请求及其它驱动事件,并做相关处理2.内存管理2.1 分配转载 2008-11-01 15:22:00 · 1760 阅读 · 0 评论 -
【转帖】windbg常用命令集
windbg常用命令集!strct eprocessdt -v -r ntdll!_peb (windows2003下改为:dt -v -r nt!_peb)dt _eprocessdt -v -r _eprocess (加上-v -r显示详细结构)dt nt!_driver_object列出可以调试的驱动程序lm t n (以前是!drivers)加入源转载 2008-11-01 15:17:00 · 2833 阅读 · 0 评论 -
【转帖】windbg the easy way
windbg the easy way (step 1)2008-10-08 09:14Introduction What is your favourite debugger? If you would ask me this question, I would probably reply that it is “Visual Studio + WinDbg转载 2008-11-01 14:52:00 · 2165 阅读 · 0 评论 -
【转帖】简单驱动编写与windbg调试
一.驱动编写随着对windows系统的深入研究,越来越多的内核方面的知识被挖掘出来了,今天我们讨论下如何写一个简单的驱动,并使用现在比较新的windbg调试器进行调试。首先写驱动要对驱动有一个比较全面的认识。一个简单的驱动一般有以下几个部分组成:1,一个入口点(DriverEntry):用于创建设备对象及符号连接,以及其它初使化操作,如分配池内存等.2,一个出口(DriverUnloa转载 2008-11-01 14:43:00 · 679 阅读 · 0 评论 -
【转帖】学习WinDbg - (1)查看内核数据结构
首先进入本地内核调试,菜单“File” -- “Kernel Debug..”,选“Local”项,确定。然后要设定好符号文件,WinDbg就是通过符号文件才能显出内核数据结构。对于查看内核数据结构,我们只要设定好ntoskrnl.exe的符号文件就可以了。 //设定符号文件路径到本地及微软服务器:lkd> .sympath SRV*H:/Symbols*http://msdl.micr转载 2008-11-01 14:41:00 · 1074 阅读 · 0 评论 -
【转帖】通往WinDbg的捷径(一)(二)
通往WinDbg的捷径(一)原文:http://www.debuginfo.com/articles/easywindbg.html译者:arhat时间:2006年4月13日关键词:CDB WinDbg 导言你钟情什么样的调试器?如果你问我这个问题,我会回答是“Visual Studio + WinDbg”。我比较喜欢Visual Studio那朴实无华且易操作的接口,更喜欢它能迅速把我需要的信转载 2008-11-01 14:39:00 · 1465 阅读 · 0 评论 -
【转帖】实战windbg调试驱动例子
这几天上网查了一些关于WINDBG的资料,发现很多朋友在寻找关于WINDBG的教程.(呵呵,我也在寻找有关于此的一些材料)本来是一想写关于sr.sys的分析的,不过觉得始终不妥,一句老话,授人以鱼不如授人以渔,所以这篇文章以sr.sys分析作为示例,不过我们的重点却是要放在WINDBG的使用上.首先来介绍一下搭建的环境:WINDBG:Windows Debugger Version 6转载 2008-11-01 14:33:00 · 957 阅读 · 0 评论