- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 第二简单的驱动程序 extern “C” { #include ntddk.h } VOID HelloDDKUnload (IN PDRIVER_OBJECT pDriverObject); NTSTATUS HelloDDKDispatchRoutine(IN PDEVICE_OBJECT pDevObj, IN PIRP pIrp); extern C NTSTATUS DriverEntry ( IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING pRegistryPath ) { NTSTATUS status = STATUS_SUCCESS; KdPrint((Enter DriverEntry\n)); KdPrint((RegistryPath: %wZ\n, pRegistryPath)); pDriverObject-DriverUnload = HelloDDKUnload; pDriverObject-MajorFunction[IRP_MJ_CREATE] = HelloDDKDispatchRoutine; pDriverObject-MajorFunction[IRP_MJ_CLOSE] = HelloDDKDispatchRoutine; pDriverObject-MajorFunction[IRP_MJ_WRITE] = HelloDDKDispatchRoutine; pDriverObject-MajorFunction[IRP_MJ_READ] = HelloDDKDispatchRoutine; KdPrint((Leave DriverEntry\n)); return status; } * 第二简单的驱动程序(续) VOID HelloDDKUnload (IN PDRIVER_OBJECT pDriverObject) { KdPrint((Enter DriverUnload\n)); KdPrint((Leave DriverUnload\n)); } NTSTATUS HelloDDKDispatchRoutine(IN PDEVICE_OBJECT pDevObj, IN PIRP pIrp) { NTSTATUS status = STATUS_SUCCESS; KdPrint((Enter HelloDDKDispatchRoutine\n)); KdPrint((Leave HelloDDKDispatchRoutine\n)); return status; } * 设备对象(Device Object) 针对每一个硬件设备,Windows都需要用一个数据结构来记录它的相关信息,这个数据结构就叫做 设备对象(Devcie Object)。 因为一个驱动程序可以同时管理多个同类型的硬件设备,因此一个驱动对象可以对应多个设备对象。 对应同一个驱动对象的多个设备对象构成一个链表挂接在驱动对象的DeviceObject字段上。 设备对象由驱动程序负责创建和初始化,由操作系统负责保存和管理。 设备对象可以有名字,其他驱动程序或应用程序可以通过该名字找到该设备对象。 * The Device Object * 设备对象的一些关键字段(一) DriverObject (PDRIVER_OBJECT) :指向与该设备对象相对应的驱动对象的指针。 NextDevice (PDEVICE_OBJECT):指向下一个设备对象的指针,利用该字段与同一个驱动对象对应的多个设备对象就可以构成一个单链表,该链表最后挂接在驱动对象的DeviceObject字段上。 * 设备对象的一些关键字段(二) Flags (ULONG):保存了一些标志位,这些标志位指示了该设备的一些工作方式。 DO_BUFFERED_IO Reads and writes use the buffered method (system copy buffer) for accessing user-mode data. DO_DIRECT_IO Reads and writes use the direct method (memory descriptor list) for accessing user-mode data. DO_EXCLUSIVE Only one thread at a time is allowed to open a -handle. DO_DEVICE_INITIALIZING Device object isn’t initialized yet. DO_
您可能关注的文档
- VS1户内高压真空断路器.ppt
- VPNManager操作维护.ppt
- 2012高考语文复习课件:字形.ppt
- VS2010有用小方法.ppt
- vtune使用心得.ppt
- W2-2文化塑造人生.ppt
- 2013-2014学年高二语文同步课件:诗歌5-2(新人教版选修《中国现代诗歌散文欣赏》).ppt
- WAP和WebApp区别.ppt
- WCDMA基本原理.ppt
- 20131届高三第一轮复习课件《文化生活》:第一课文化与社会.ppt
- 2025年智能电网柔性直流输电技术在我国西部地区应用前景.docx
- 7.2 弹力-人教版八年级物理下册.pptx
- 2025年智能电网柔性直流输电技术在智能变电站中的应用研究.docx
- 2025年智能电网柔性直流输电技术在智能电网智能化存储中的应用.docx
- 2025年智能电网柔性直流输电技术在新能源并网中的应用研究.docx
- 2025年智能电网柔性直流输电技术在智能电网智能化控制中的应用.docx
- 2025年智能电网柔性直流输电技术在智能电网智能化预测中的应用.docx
- 2025年智能电网柔性直流输电技术在智能电网智能化服务中的应用.docx
- 2025年智能电网柔性直流输电技术在智能电网智能化运维中的应用.docx
- 2025年智能电网柔性直流输电技术智能化保护系统研究.docx
最近下载
- 整本书阅读+《红岩》 统编版八年级语文上册.pptx VIP
- 孙永强《财务管理》武汉大学-第9章-短期资产管理.pptx VIP
- CY14-1B轴向柱塞泵说明书.pdf VIP
- 蒸汽发生器安装工程方案(3篇).docx
- (正式版)B 4706.9-2008 家用和类似用途电器的安全 剃须刀、电推剪及类似器具的特殊要求.docx VIP
- 2021年(广西壮族自治区)壮族自治区高中学业水平合格考英语真题(带答案).pdf VIP
- 《智能故障诊断》课件.ppt VIP
- 【长租公寓】冠寓运营管理手册.docx VIP
- 2023年江西中医药大学计算机科学与技术专业《操作系统》科目期末试卷B(有答案).docx VIP
- 融合新闻:通往未来新闻之路-暨南大学-中国大学MOOC慕课答案.pdf VIP
原创力文档


文档评论(0)