IRP_MJ_CREATE的问题,想知道一些真正的原因

lsaturn 2010-11-18 11:16:31
之前写好了一个驱动,安装、启动、停止、卸载都可以正常的进行。
之后发现使用CreateFile打开这个设备的时候却无法打开,返回的句柄为0xfffffff
查阅资料之后发现,原来是IRP_MJ_CREATE的handler没有实现
增加pDriverObject->MajorFunction[IRP_MJ_CREATE] = HelloDDKDispatchRoutine;就好了
DDK的文档我也查了,关于这个也只说了IRP_MJ_CREATE一定要实现,多的没有看到。

1.原因是什么呢?
2.为什么去除IRP_MJ_CLOSE, IRP_MJ_WRITE,IRP_MJ_READ这些的handler就没有关系呢?
3.HelloDDKDispatchRoutine这个handler返回STATUS_UNSUCCESSFUL,为什么都不会导致CreateFile失败?

谢谢。
...全文
482 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yihandrensunyong 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 coohai 的回复:]
CreateFile()调用会导致驱动处理,相应驱动中的处理IRP就是IRP_MJ_CREATE,所以若这个IRP没有处理,创建文件会失败.
而CLOSE,WRITE,READ相应的是CloseHandle(),WriteFile(),ReadFile()这些API,同样,如果没在驱动中实现,返回也会是失败.
3. 未知,期待高手回答
[/Quote]

学习
lsaturn 2010-12-10
  • 打赏
  • 举报
回复
谢谢楼上的,继续询问3号问题。
MoXiaoRab 2010-12-10
  • 打赏
  • 举报
回复
一个驱动程序并不需要支持所有的功能代码,比如如果一个驱动程序根本就不必要与用户模式客户程序交互,那么就不用支持IRP_MJ_CREATE和IRP_MJ_CLOSE。又如设备不支持设备读写,就不用支持IRP_MJ_READ和IRP_MJ_WRITE。

驱动程序对象是在操作系统启动驱动程序、在调用驱动程序入口DriverEntry之前就已经创建好了的,并且作为DriverEntry 函数的参数传递给驱动程序。IRP_MJ_CREATE失败也不影响驱动内核对象的建立。
coohai 2010-11-18
  • 打赏
  • 举报
回复
CreateFile()调用会导致驱动处理,相应驱动中的处理IRP就是IRP_MJ_CREATE,所以若这个IRP没有处理,创建文件会失败.
而CLOSE,WRITE,READ相应的是CloseHandle(),WriteFile(),ReadFile()这些API,同样,如果没在驱动中实现,返回也会是失败.
3. 未知,期待高手回答
IRPTrace2.00.002.zip ,IRP跟踪工具,支持Windows7。 IRPTrace 2.00.002, Build Date September 23, 2015 File name = README.TXT ====================================================================== CONTENTS ========= 1) IRPTrace Components 2) Release Notes 3) Known problems & limitations 4) Known bugs 5) Update to the documentation 6) List of supported I/O requests We strongly recommend that you read the following information about this release. 1) IRPTrace Components ===================== README.TXT - This file HOWTOREG.TXT - How to register IRPTrace and contact APSoft IRPTrace.EXE - Main application module IRPDRV.SYS - Driver for Windows NT/2000/XP/Server 2003 TERMINAL - Terminal log file TERMINAL.DLL - IRPTrace library UNINSDRV.DLL - IRPTrace library TSCUST.DLL - IRPTrace library IRPTRACE.CHM - Help file TIPS.TXT - 'Tip of the Day' tips GUID.INI - GUID database IRPTRACE.INI - Driver uninstallation information UNINST.ISU - Installation/uninstallation log file 2) Release Notes ================ Release 2.00.002 1. Fixed processing of IRPs at elevated IRQLs 2. Added support for Windows 10 Release (Build 10240) 3. Corrected processing of USB IOCTLs 4. Release 2.00.001 1. Added support for x64 Windows. 2. Added support for Windows Vista, 7 and 8.x. 3. Added decoding of all USB kernel-mode messages. 4. Added decoding of all CDB messages. 5. Revised Terminal tracing. 6. Revised on-line help file. 7. Revised list of known IOCTLs. 8. Revised list of known GUIDs. Release 1.00.007 1. Added support for Microsoft Windows Vista (?). 2. Redesign right panel view. 3. Fix bug with processing of Image hooks. 4. Several minor bugs were fixed. Release 1.00.006 1. A BSOD (blue screen) was fixed, which appeared o

2,644

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧