问题标签 [irp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - 查找原始 IRP 处理程序
我的简短问题是,如果我知道一个驱动程序被 IRP 挂钩(例如在 IRP_MJ_READ),我怎样才能将此条目恢复为原始条目?如我所见,Xuetr/Pc Hunter 可以告诉我某些驱动程序的主要功能列表(例如 acpi、键盘、atapi 等)的“原始条目”,因此必须有一种方法 - 可能不是针对操作系统中的每个设备,而是对于一些特定的驱动程序。
(所以:列出当前条目并找出哪个条目被钩住不是问题,我只有在“_DRIVER_OBJECT-MajorFunctions”中找出原始条目时遇到问题)
windows - 未调用 Windows 文件过滤器驱动程序 IRP 回调
我有一个文件过滤器驱动程序没有接收到在 DriverEntry 中注册的 IRP 的回调。有没有人遇到过使用 FltRegisterFilter 注册的 PreOperation 和 PostOperation 回调在他们的文件过滤器驱动程序中没有被调用的问题?
我想我会测试 VS2013 文件过滤器驱动程序模板(而不是滚动我自己的),并立即注意到驱动程序没有被注册的 IRP 调用。
我正在获取 FltRegisterFilter 中指定的所有驱动程序回调的调试跟踪输出:
...但没有来自同一调用中提供的 IRP 处理程序。在 IRP 处理程序中设置断点也不会被命中,但在上述驱动程序回调中会命中断点。
来自 Win7 x86 目标的驱动程序 -
断点
回调转储
代码片段
同样,只有 DriverEntry 和 MyFileUnload 回调被调用(通过 dbg 跟踪和实时断点进行验证)。驱动程序中不会调用任何 IRP 处理程序(永远)。
谢谢参观!
filesystems - 如何查看微型过滤器驱动程序处理了哪些 IRP?
我们用fltmgr 注册了mini 文件系统过滤器驱动程序,即windows 中的过滤器管理器,并在其中注册了回调(操作前和操作后回调)的IRP。
好像我们知道要从过滤器管理器回调哪个 IRP 取决于我们自己。
所以我的问题是如何找出处理哪个 IRP 和哪个 IRP 没有处理的任何第三方过滤器驱动程序?
windows - I/O 请求流,APC 是否也用于阻塞请求?
我试图完全理解调用 ReadFile 时发生的 I/O 请求流。我知道 I/O 管理器如何创建 IRP 并将其传递到驱动程序堆栈。一旦从设备中检索到数据,就会发生中断,执行驱动程序 ISR 以调度 DCP。DCP 和正在填充数据的应用程序缓冲区之间会发生什么?
windows - FS 开发 - KMDF Windows 驱动程序
我是新来的,正在尝试为 tar '文件系统'(mount tar)开发一个概念 fs 驱动程序。我的问题是,操作系统如何检测到分区具有 TAR 文件系统并自动加载我的驱动程序?
windows - 键盘过滤器驱动程序蓝屏
我不明白为什么我的源代码不能正常工作。
我的源代码只是一个简单的驱动程序,它只是删除了 IRP。
下面是WinDbg的结果
CallBack 似乎无法正常工作。
我不知道问题出在哪里。
我刚刚删除了 IRP,但我不知道为什么会这样。
我已经搜索了两天的司机书籍和互联网,但没有找到原因。
当蓝屏出现时,会出现消息“iRQL_NOT_LESS_OR_EQUAL”。
帮助请。
PS我英语说得不好。这是第一个问题。如果我的问题很奇怪,我希望你能理解。
serial-port - IRP_MJ_DEVICE_CONTROL — 怎么做?
使用串口编写应用程序,在调试时,我不得不使用低级(链接控制)协议。我的问题就从这里开始了。嗅探器给我的值:IOCTL_SERIAL_SET_BAUD_RATE 80 25 00 00 表示波特率 9600。嗯,00 c2 01 00 表示 115200。怎么可能猜到呢?IOCTL_SERIAL_SET_TIMEOUTS 32 00 00 00 05 00 00 00 00 00 00 00 60 09 00 00 00 00 00 00 - 这是什么意思?价值是什么?允许值的范围是多少?例如,我读过 MSDN -“设置串行设备的读写超时”。Blah-blah-blah,但没有任何价值。读什么?如何理解嗅探器数据?以及如何控制它?
windows - 用于打开和保存文件的 Windows IRP 函数调用
我目前正在开发一个微过滤器驱动程序,我需要拦截这种事件:
- 列出文件夹内的文件
- 在应用程序中打开文件
- 关闭此文件
- 修改并保存文件
根据我的阅读,我想我需要过滤 IRP_MJ_CREATE、IRP_MJ_READ、IRP_MJ_WRITE,但我需要比猜测更好的东西。
我怎样才能准确地知道每个事件将发送哪个 IRP?
windows - 在处理 IRP_MJ_READ 时,我可以找出打开设备的符号链接吗?
我有驱动程序,它构造并返回 IRP_MJ_READ 请求的一些数据。我使用一些符号链接来打开和读取与驱动程序关联的设备。符号链接类似于\\DosDevice\\Name1
.
我想使用同一个设备从同一个驱动程序获取另一个数据。
驱动程序如何确定它将返回哪种类型的数据?
我认为,如果这是使用另一个符号链接(例如:)\\DosDevice\\Name2
到同一设备的某种方式来拆分对第一类数据的请求和对第二类数据的请求?否则,如果这是另一种方式,将一些识别信息与 thre IRP_MJ_READ 一起传递?
c - 通过 memcpy 将数据从用户应用程序复制到内核驱动程序
好的,我只是让事情变得简单,我如何使用共享内存从我的用户模式应用程序向我的内核驱动程序发送和接收数据。用一个实际的互斥体来指示我的请求是否完成。以及我如何调用读取内存函数而不将其添加到 Major_irp 函数,因为我不想添加任何 IOCTL 代码