首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >驱动程序到用户模式的通信

驱动程序到用户模式的通信
EN

Stack Overflow用户
提问于 2018-10-31 22:59:03
回答 2查看 804关注 0票数 0

我正在尝试编写一个工具来监控进程。只要创建了具有系统权限的高权限进程,它就会向用户发出警报。我正在使用一个监控每个进程创建的驱动程序和一个用户模式应用程序来检查它是否在系统下运行,如果是,则发出警报。要做到这一点,用户模式应用程序应该侦听驱动程序。我正在尝试用event来做这件事。只要创建了一个进程,驱动程序就会用IoCreateNotificationEvent通知事件(使用模式的应用程序通过WaitForSingleObject监听),然后应用程序会向驱动程序发送一个IRP来获取pid。这对我来说并不好用,我正在寻找其他方法来完成从司机到监听用户模式应用程序的通信,但我找不到这样的方法。我怎么才能让它工作呢?

感谢你的帮助

EN

回答 2

Stack Overflow用户

发布于 2018-11-01 01:30:26

通常的方法是使用异步IOCTL,完全忘记事件,如果没有未完成的进程创建要读取,只需让驱动程序保存IOCTL,然后在获得新进程时完成IOCTL。这确实要求客户端在进程创建之前提交IOCTL请求。为了获得最好的结果,我建议您将设备句柄绑定到IOCP (我发现IOCP比跟踪哪个事件与哪个重叠的事件更容易处理)。

票数 1
EN

Stack Overflow用户

发布于 2018-11-02 09:49:46

从驱动程序到用户模式进程通信的另一种方法是用户模式进程在消息模式下打开管道并监听来自内核的消息。它比实现异步IOCTL更简单,因为您不必处理可能需要取消的挂起IOCTL。确保在打开管道时,它是正确的ACL,以便只有内核可以与用户模式进程打开的管道进行通信。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53086355

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档