WDF框架分析
分析分析
Eugene800
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
WDF队列分析(3)
《WDF队列分析(2)----IoQueue的创建》还留了一个结尾没完成,这篇接着往下分析。原创 2018-06-26 23:16:51 · 1136 阅读 · 0 评论 -
WDF队列分析(2)----IoQueue的创建
如果阅读了《WDF队列分析(1)--序幕》,可能你还记得在那篇文章的结尾部分提到过进入DispatchWorker函数后,框架根据IRP类型进入不同的Dispatch函数。当时我们的关注点其实集中在DriverObject上(派遣函数) FxPackage* GetDispatchPackage( __in UCHAR MajorFunction )...原创 2018-06-18 23:26:14 · 1467 阅读 · 0 评论 -
WDF队列分析(1)--序幕
WDF提供的队列IoQueue相当复杂,需要诺干篇幅才能写完。本篇先从队列创建入手。原创 2018-06-17 11:00:26 · 1279 阅读 · 0 评论 -
WDF框架系列:同步域,运行级别
本篇内容对应<竹林蹊径>3.4.7对象同步一节。作者对WDF同步域及运行级别的解释停留在纸面,然而,这两个概念却涉及到WDF设备\WDF队列的初始化,因此,不得不探究其背后的原理。...原创 2018-05-12 00:33:36 · 956 阅读 · 0 评论 -
WDF对象上下文2
上回讲到ToasterFdoGetData内部通过调用WdfObjectGetTypedContextWorker以获得自定义Context结构,当时由于篇幅所限,没有展开分析WdfObjectGetTypedContextWorker的实现。为了填补这个空白,乃有此文。其实<竹林蹊径>中提到过函数WdfObjectGetTypedContextWorker,只是作者成书之时限...原创 2018-04-11 23:34:45 · 630 阅读 · 0 评论 -
WDF对象上下文1
其实竹林蹊径中已经详述了WDF_DECLARE_CONTEXT_TYPE_WITH_NAME宏定义,写这篇博文的目的无非是为后文做个引子。toaster中如此使用该宏:typedef struct _FDO_DATA{ WDFWMIINSTANCE WmiDeviceArrivalEvent; BOOLEAN WmiPowerDeviceEnableRegiste...原创 2018-04-09 21:14:43 · 859 阅读 · 0 评论 -
Wdf框架之WdfObject状态机(3)-前篇
好久没写关于Wdf框架的博客了,因为有各种琐碎事缠身,得赶在RS4 RTM前把状态机(3)系列完成。WdfObject状态机(2)系列将注意力集中在驱动程序的继承层次上只存在单薄一层WdfDriver上;而这篇文章将要分析的情形将具备一定的普遍性:在代码上参考并修改了toaster\kmdf\func\simple。下图是默认KMDF对象层次结构 simple虽然没有包含图中所有元素,但它仍然...原创 2018-04-02 00:12:33 · 615 阅读 · 0 评论 -
Wdf框架之WdfObject状态机(2) 一文再补充
万万没想到<Wdf框架之WdfObject状态机(2) >的内容如此之多,2篇博客的篇幅还不够承载,需要第三篇来完成最后一击。本文将进入FxObject::DeleteWorkerAndUnlock的else分支,分析DrvDestroyCallback/DrvCleanupCallback的调用时机。 进入else分支后,首先遇到的函数是FxObject::Dispos...原创 2018-02-17 23:12:34 · 480 阅读 · 0 评论 -
Wdf框架之WdfObject状态机(2) 一文补充
本文是前一篇文章<Wdf框架之WdfObject状态机(2)>的补充。MS设计如此复杂的状态机的目的,是在状态发生改变时调用适当的回调函数,如:EvtCleanupCallback/EvtDestroyCallback,可是前一篇文章舍本逐末的关注了FxObject状态的变化,而忽略了这些回调函数的调用时机,遗漏部分就在此文中补充。源码也有所改动,先贴于此:typedef struct...原创 2018-02-17 17:07:55 · 755 阅读 · 0 评论 -
Wdf框架之WdfObject状态机(2)
前一篇博文<Wdf框架之WdfObject状态机(1)>提到调用WdfObjectCreate使框架对象被纳入对象状态机的管理之下。本篇我们看下框架对象的销毁过程,即如何结束它的生命周期,进而退出状态机。由于对象的销毁往往会引发着子对象的销毁,整个过程跟迷宫一样复杂,所以我们先在迷宫外了解一下穿越迷宫的捷径,暂时不深入探索----即假设程序中只创建一个Wdf驱动对象(空驱动,没...原创 2018-02-02 16:39:23 · 581 阅读 · 0 评论 -
Wdf框架之WdfObject状态机(1)
"WDF对象有共同的根....共同的头部(WDF_OBJECT)..WDF_OBJECT对象中包含了这样一些基本信息:对象类型(Type),对象长度(Len),引用计数,指向Parent对象和子对象列表的指针等"----引自<竹林蹊径-深入浅出Windows驱动开发> P57。诚如按作者所说,source insight(下文简称SI)给出的引用关系图反应出FxDriver类中...原创 2018-01-30 17:13:49 · 656 阅读 · 0 评论 -
wdf框架之WdfVersionBind函数分析(1)
最近学习了一下IDA的使用,正好拿WdfLdr.sys练个手。结合windbg的调试输出,逆向了其中的WdfVersionBind函数。我在文章的结尾部分给出了对应的idb文件的网盘链接(用CSDN上传资源的成功率太低了,我只能放弃了...)。以下是我逆向得到的WdfVersionBind函数实现的伪代码。整个函数中指针变量v5 v9对应的结构体未知,无法逆向出来,比较遗憾,不过应该不影响把握原创 2017-12-25 22:56:02 · 3385 阅读 · 0 评论 -
Wdf框架:FxDriverEntry----驱动程序的入口函数
在前面的文章中简单的提到过WdfVersionBind函数的作用,但是没有来得及分析这个函数的调用处。今天得空,借这篇文章写下WdfVersionBind函数的调用者:FxDriverEntry。 在写这篇文章前,我被WdfLdr.sys的名字误导,以为这个sys文件是内核的加载器,用于加载整个内核启动(Ldr是Loader的缩写)。所以,当时我很粗浅的认为这个驱动只在系统引导阶段才被调原创 2017-11-27 23:40:01 · 2298 阅读 · 0 评论 -
Wdf框架中WdfDriverGlobals对象的创建
前面写过一篇,反响一般,不过这不会成为阻挡我继续写下去的绊脚石~本篇我们继续来分析Wdf框架。 WdfDriverGlobals对象的身影活跃在wdf框架的各个角落,几乎每个DDI接口内部都会使用它:_Must_inspect_result___drv_maxIRQL(PASSIVE_LEVEL)NTSTATUSWDFEXPORT(WdfDriverCreate)( P原创 2017-11-21 16:41:52 · 1856 阅读 · 0 评论 -
WDF基本对象和句柄定义
1 对象和句柄定义1.1 struct FX_OBJECT_INFO数组FxObjectsInfo:Fxobjectinfokm.cpp中定义了一个结构体FX_OBJECT_INFO数组FxObjectsInfo[],WDF自定义的对象,如WDFDRIVER、WDFDEVICE等都在该数组中登记对应的信息。 typedef struct _FX_O原创 2017-11-08 15:35:52 · 849 阅读 · 0 评论 -
源码级调试WDF框架
转自MSDNNew support for source-level debugging of WDF code in Windows 10Last March we published the WDF source code on GitHub for all to read, debug, and learn from. Today we are happy to转载 2017-11-08 21:32:26 · 1072 阅读 · 0 评论 -
对<源码级调试WDF框架>一文进行补充
MS 曾在他的Github站点上提出过《源码级调试WDF框架》的方法,文中提到通过.srcfix命令使windbg源码服务器路径指向MS的源码服务器。这样当调试到wdf框架代码时,windbg会去源码服务器下载对应的源码并加载显示在源码窗口。我尝试过这种方法,然而结果并不像预计的那样:0: kd> .reload /f wdf01000.sys0: kd> !lmi wdf01000.s原创 2017-11-10 14:37:35 · 1249 阅读 · 1 评论
分享