操作系统
文章平均质量分 61
free2o
这个作者很懒,什么都没留下…
展开
-
消息驱动系统模型
很多系统在设计的时候都会选择消息驱动的系统调度模型。这样的模型在交换机以及许多通讯产品的软件设计中被大规模使用,对于小型的没有操作系统的嵌入应用而言,这样的模型是很具有生命力的。 调度系统,可以分为若干模块,根据系统的实际需要可以设定若干模块,定义发到各个模块的消息类型,所有的消息都有相同的消息头。struct msg_hdr_t { int moduleID ;原创 2011-12-29 17:30:51 · 2864 阅读 · 0 评论 -
Mini Filter 操作消息的分析
Create :1. 在 Create preoperation 的时候, FsContext, FsContext2 ,Vpb, SectionObjectPointer 都是 02. 在 Create PostOperation 的时候, FsContext, FsContext2, Vpb, SectionObjectPointer 都被初始化成相应的数值3. 同原创 2014-03-24 21:30:52 · 1764 阅读 · 0 评论 -
FltGetFileNameInformation 函数
FltGetFileNameInformation 函数在Minifilter 中可以使用 FltGetFileNameInformation 来获取文件的名字,但是这个函数在如下几种情况下是不能够工作的:1. 当前thread 的 TopLevelIrp 不是NULL 2. Page I/O3. Pre Create 操作中4. Post Close 操作中如果原创 2014-04-13 21:23:24 · 5020 阅读 · 0 评论 -
调试 Minifilter 无法卸载
在做驱动开发的测试过程中,发现有时候驱动无法成功的unload,程序发生了死锁,导致驱动程序无法成功卸载。打开windbg, 连接运行的虚拟机。在命令窗口输入: !locks得到如下的输出: *** DUMP OF ALL RESOURCE OBJECTS **** KD: Scanning for held l原创 2014-03-28 21:39:41 · 2743 阅读 · 1 评论 -
Minifilter 设计之一 --- Post operation 设计
Post operation 可以发生在 IRQL = DISPATCH_LEVEL . 因此在处理 post operation 的时候,要格外注意。 对于基于 IRP 的 I/O 请求, mini filter 可以采用两种方法保证 Post operation 是在IRQL 不高于 APC_LEVEL 来处理的。1. 第一种方法是在 Post 处理中 pending I/O 操作。原创 2014-03-27 22:35:59 · 1977 阅读 · 0 评论 -
Postoperation 回调函数中 pending I/O 操作
Postoperation 回调函数中 pending I/O 操作在minifilter 的 posteroperation 的回调函数中可以用下面的步骤来 pending 一个 I/O 操作1. 调用 FltAllocateDeferredIoWorkItem 来分配一个 work item 2. 调用 FltQueueDeferredIoWorkItem 来把 work翻译 2014-03-27 20:38:55 · 4600 阅读 · 0 评论 -
WORK_QUEUE_ITEM 介绍
window 内核中有很多成熟的设计, WORK_QUEUE_ITEM 就是其中的一个。 这个设计的思想很简单,就是把要处理的任务扔到一个队列中,系统会自动调度处理这些任务。 WORK_QUEUE_ITEM 的结构很简单: typedef struct _WORK_QUEUE_ITEM { LIST_ENTRY List; //用原创 2014-03-16 22:43:16 · 4818 阅读 · 0 评论 -
创建 IRP 给底层驱动
创建 IRP 给底层驱动 在驱动开发的过程中,中间层的驱动可以需要创建 IRP 发送给底层的驱动, 在window 中常见有三种方法来创建 IRP 1. IoAllocateIrp 创建 IRP 并且把 I/O statck location 都初始化为 0 如果调用这个函数创建 IRP, 必须设置新创建的 IRP 的下一个底层驱动的 I/O原创 2014-03-16 19:37:09 · 1371 阅读 · 0 评论 -
I/O 请求
上图来自微软驱动 WDK DOC1. the subsystem calls an I/O system service to open a named file.2. I/O manager 调用 object manager 来查询文件, object manager 同时也会对 symbolic link 进行处理, 之后会调用 安全模块来检查 subsystem 是否有正确的翻译 2014-03-16 18:48:48 · 3610 阅读 · 0 评论 -
Notepad 打开文本文件所看到的 IRP
双击打开文本文件,看到notepad 发了下面这些 IRP IRP_MJ_ACQUIRE_FOR_SECTION_SYNCHRONIZATIONIRP_MJ_QUERY_INFORMATIONIRP_MJ_RELEASE_FOR_SECTION_SYNCHRONIZATIONIRP_MJ_CLEANUPIRP_MJ_CLOSE----------------原创 2014-04-21 10:23:29 · 3714 阅读 · 4 评论