
初学驱动
vbsourcecode
这个作者很懒,什么都没留下…
展开
-
应用程序与驱动通信的若干方式
////////////////////////////////////////////////////////////////////////////////// 栀子花驿站:http://www.zhizihua.com// 栀子博客 :http://www.zhizihua.com/blog// 作者 :goodone//////////////////////////转载 2013-02-25 13:42:39 · 617 阅读 · 0 评论 -
(精华)Ring3与Ring0通信方法若干
本人在[(原创)应用程序与驱动通信的若干方式]文章中阐述了,上下层通信的技术实现部分,但没有结合应用,下面的文章就具体应用给大家展示了使用方法,希望能够大家一些启发。 Ring3与Ring0同步是很有用的手段,在此做一个简要的整理,希望对开发这方面程序的朋友有帮助,好了,开始吧。 1 同步的策略 初写驱动的朋友都知道,通过Dev转载 2013-02-25 13:40:55 · 2061 阅读 · 0 评论 -
关于DO_POWER_INRUSH 和DO_POWER_INRUSH 同时设置问题
Beginning with Windows Vista, driverscan set boththe DO_POWER_PAGABLE flag and the DO_POWER_INRUSH flag. In Windows Server 2003, Windows XP, and Windows 2000, drivers cannot set both the D原创 2013-02-25 12:23:45 · 1170 阅读 · 0 评论 -
硬盘的数据结构
硬盘的数据结构 1.MBR区 MBR(Main Boot Record 主引导记录区)位于整个硬盘的0磁道0柱面1扇区。不过,在总共512字节的主引导扇区中,MBR只占用了其中的446个字节,另外的64个字节交给了DPT(Disk Partition Table硬盘分区表)(见表),最后两个字节“55,AA”是分区的结束标志。这个整体构成了硬盘的主引导扇区。(图) 主引导记转载 2013-02-19 11:43:23 · 3015 阅读 · 0 评论 -
IRP的传递与完成
在Windows分层驱动模型中,设备栈中的设备一般都是通过对上层传来的IRP做相应的处理来实现驱动的功能。这里对常用的几种IRP传递及完成的方式进行归纳和总结:1. 在本层驱动中完成1.1 在本层驱动中以同步方式完成在本层同步完成一般做完相应处理后,设置Irp->IoStatus.Status和Irp->IoStatus.Information,调用IoCompleteRequ转载 2013-02-09 13:50:29 · 1002 阅读 · 0 评论 -
关于NT驱动irp pending的注意事项
关于NT驱动irp pending的注意事项发布时间:2008-04-02 20:38:30 在NT内核中,有时候不能立马完成一个irp,需要pending它,这个时候有一些微妙的地方需要注意,因为NT得代码没有真正公开,详细搞清楚NT处理IRP的过程很不容易,以前网上有两篇文章讨论过,但我觉得还是讲的不是很清楚.现在win2k得代码泻了很久了,里面也转载 2013-02-09 13:38:36 · 1608 阅读 · 0 评论 -
《寒江独钓》键盘过滤部分程序修改
《寒江独钓》键盘过滤部分程序修改 看书的时候,发现书里第四章的键盘过滤程序并不能实现打印出扫描码详细信息的功能。我将程序修改了一下以后,可以实现该功能。以下是我的修改之处:void __stdcall print_keystroke(UCHAR sch,USHORT stch){ UCHAR ch = 0; int off = 0; if (!s转载 2013-02-09 11:50:15 · 738 阅读 · 0 评论 -
漫谈兼容内核之十二: Windows的APC机制(毛德操)
前两篇漫谈中讲到,除ntdll.dll外,在启动一个新进程运行时,PE格式DLL映像的装入和动态连接是由ntdll.dll中的函数LdrInitializeThunk()作为APC函数执行而完成的。这就牵涉到了Windows的APC机制,APC是“异步过程调用(Asyncroneus Procedure Call)”的缩写。从大体上说,Windows的APC机制相当于Linux的Signal机制,转载 2013-02-07 21:12:43 · 2477 阅读 · 0 评论 -
总结:使用IoMarkPending的原因及原理
为了使系统吞吐量最大化,I/O管理器希望驱动程序推迟其耗时IRP的完成。驱动程序通过在某个派遣例程中调用IoMarkIrpPending函数并返回STATUS_PENDING来表示完成操作被推迟。(注意:以下讨论未加说明均指在操作被推迟情况下)I/O管理器的原始调用者通常希望在继续执行之前等待操作完成,所以I/O管理器在处理推迟完成时有下面类似的逻辑(不代表真正的Microsoft源代码):转载 2013-02-07 21:07:15 · 512 阅读 · 0 评论 -
IoMarkIrpPending
IoMarkIrpPending IoMarkIrpPending例程用于标记指定的IRP,标志着某个驱动的分发例程(分发函数)因需要被其他的驱动程序进一步处理最终返回STATUS_PENDING状态。 VOID IoMarkIrpPending( IN OUT PIRP Irp ); 参数:Irp 将被标记转载 2013-02-07 20:53:02 · 580 阅读 · 0 评论 -
irp概述
一、简述任何内核模式程序在创建一个IRP时,都同时创建了一个与之关联的IO_STACK_LOCATION结构数组:数组中的每个堆栈单元都对应一个将处理该IRP的驱动程序,另外还有一个堆栈单元供IRP的创建者使用。堆栈单元中包含该IRP的类型代码和参数信息以及完成函数的地址。IRP的CurrentLocation为当前IO堆栈单元的索引,IRP的Tail.Overlay.CurrentStack转载 2013-02-07 14:34:07 · 569 阅读 · 0 评论 -
IoSetCompletionRoutine
IoSetCompletionRoutine宏注册一个IO完成例程,这个完成例程将会在调用此函数的驱动的下一层驱动完成IRP指定的操作请求时被调用。 void IoSetCompletionRoutine( IN PIRP Irp, IN PIO_COMPLETION_ROUTINE CompletionRoutine, IN PVOID Cont转载 2013-02-07 14:12:35 · 632 阅读 · 0 评论 -
UNICODE_STRING 总结
UNICODE_STRING:typedef struct _UNICODE_STRING { USHORT Length; //UNICODE占用的内存字节数,个数*2; USHORT MaximumLength; PWSTR Buffer;} UNICODE_STRING ,*PUNICODE_STRING;参数定义:Length-----buf转载 2013-01-31 17:10:49 · 946 阅读 · 0 评论 -
VMware 虚拟机中添加新硬盘的方法
随着在虚拟机中存储的东西的逐渐的增加,虚拟机的硬盘也逐渐告急,因此急需拓展一块新的虚拟磁盘。以下便是在VMware 中添加新的虚拟磁盘的方法: 一、VMware新增磁盘的设置步骤(建议:在设置虚拟的时候,不要运行虚拟机的系统,不然添加了新的虚拟磁盘则要重启虚拟机)1、选择“VM”----“setting”并打开,将光标定位在hard Disk这一选项,然后点击下方的Add按钮转载 2013-01-30 21:33:52 · 634 阅读 · 0 评论 -
MDL(内存描述符表) 详解
以下的虚拟内存可以理解成逻辑内存,因为我觉得只有这样才能讲通下面所有的东西。以下的“未分页”指没有为页进行编码。以下为MDL结构体(我很郁闷,我在MSDN上没有找到这个结构体)typedef struct _MDL { struct _MDL *Next; //下一个MDL CSHORT Size; //大小 CSHORT MdlFlags;转载 2013-01-25 18:07:31 · 4563 阅读 · 0 评论 -
文件系统驱动(IFS DDK)学习笔记 (转)
文件系统驱动是windows系统中最复杂的驱动种类之一。它的全称 IFS DDK 是指可安装文件系统 设备驱动程序开发工具。这方面的资料非常少,我从网上找到的资料大都是文档,都是一些在学习文件系统驱动的人自己写的,几乎没有这方面的专门书籍,更不用说中文资料了。而且ifs ddk中的帮助文档没多大意义,文件系统相关的ddk帮助极其简略,很多重要的部分仅仅轻描淡写的带过。下图是我们的IFS D转载 2013-01-24 22:09:44 · 1068 阅读 · 0 评论 -
文件系统过滤基础知识
一、何谓文件系统过滤驱动? 文件系统过滤驱动是一种可选的,为文件系统提供具有附加值功能的驱动程序。文件系统过滤驱动是一种核心模式组件,它作为Windows NT执行体的一部分运行。 文件系统过滤驱动可以过滤一个或多个文件系统或文件系统卷的I/O操作。按不同的种类划分,文件系统过滤驱动可以分成日志记录、系统监测、数据修改或事件预防几类。通常,以文件系统过滤驱动为核心的转载 2013-01-24 22:04:43 · 583 阅读 · 0 评论