windows操作系统-io系统.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
windows操作系统-io系统

* * * * * * * * * * * * * * * * * * * * * * 可以通过核心调试器的!thread命令查看挂起的线程IRP * * 可以通过资源工具包以及DDK工具查看Windows加载的驱动程序信息,包括设备映射、驱动程序对象、设备对象等等 * * * * * * * * * * * IRP的处理 I/O请求包 ??? 驱动程序 1 驱动程序 2 驱动程序 3 驱动程序 4 I/O 堆栈单元 1 I/O 堆栈单元 2 I/O 堆栈单元 3 I/O 堆栈单元 4 IRP 最低 最高 WDM的核心概念和数据结构 用户对设备的访问过程 Windows中对设备的访问分为用户态和核心态两种方式: 用户态通过调用Win32 API函数如ReadFile、WriteFile等访问设备,它不能直接控制硬件 核心态通过发送I/O请求包IRP来运行驱动程序实现对设备的控制 WDM的核心概念和数据结构 用户对设备的访问过程 应用程序 Win32子系统 用户态 核心态 I/O系统服务 I/O管理器 IRP 高层驱动程序 中层驱动程序 低层驱动程序 HAL WDM的核心概念和数据结构 WDM驱动程序的结构 分发例程 I/O 控制例程 StartIo AdapterControl OnInterrupt DpcForIsr DriverEntry AddDevice 基本驱动程序例程 必须的驱动程序例程 处理请求队列需要包含 StarIo 如果设备产生中断需要包含中断和 DPC 例程 DMA 操作需要包含 AdapterControl 例程 可选的 IRP 分发例程 DispatchPnp DispatchPower DispatchWmi DispatchRead DispatchWrite DriverEntry例程 驱动程序向I/O管理器显露一个名为DriverEntry的函数,在启动驱动程序的时候, I/O管理器将调用这个入口函数。 DriverEntry相当于作为应用程序入口的main函数或WinMain函数. 驱动程序可以被多个类似的硬件使用,但驱动程序的某些全局初始化操作只能在第一次被装入时执行一次,DriverEntry例程就是用于这个目的 DriverEntry例程的主要工作是把各种函数指针填入驱动程序对象,这些指针为操作系统指明了驱动程序容器中各种子例程的位置 WDM驱动程序的结构 DriverEntry例程 WDM驱动程序的结构 AddDevice例程 AddDevice函数的基本职责是创建一个设备对象并把它连接到以pdo为栈底的设备堆栈中,主要步骤如下: 调用IoCreateDevice创建设备对象,并建立一个私有的设备扩展对象。 注册一个或多个设备接口,以便应用程序能知道设备的存在。另外,还可以给出设备名并创建符号连接。 调用IoAttachDeviceToDeviceStack函数,把新设备对象放到堆栈上。 初始化设备对象的Flag成员。 WDM驱动程序的结构 1.创建设备对象与设备扩展对象 AddDevice例程 WDM驱动程序的结构 AddDevice例程 WDM驱动程序的结构 2.注册设备接口 AddDevice例程 WDM驱动程序的结构 3.建立设备堆栈 AddDevice例程 WDM驱动程序的结构 4.设置设备标志 其他必须的例程 DispatchPnp例程 DispatchPower例程 DispatchWmi例程 WDM驱动程序的结构 其他必须的例程??? DispatchPnp例程 WDM驱动程序的结构 NTSTATUS DispatchPnp(PDEVICE_OBJECT fdo, PIRP Irp) { PIO_STACK_LOCATION stack = IoGetCurrentIrpStackLocation(Irp); ULONG fcn = stack - MinorFun ction; NTSTATUS status = StaTUS_SUCCESS; Switch( fcn ) { case IRP_MN_START_DEVICE : status = PnpStartDeviceHandler(fdo, irp); break; case IRP_MN_ REMOVE _DEVICE : status = PnpRemoveDeviceHandler(fdo, irp); break; ... default: PnpD efa

文档评论(0)

sandaolingcrh + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档