2

我正在从内核级驱动程序(来自 IOControl 功能)写入用户空间缓冲区,我需要确保用户级程序/服务不会在驱动程序完成写入之前覆盖缓冲区或读取它给它。

有没有办法(如果有,首选方式是什么)在 Windows 上的内核模式驱动程序中输入一种“全局临界区”,允许驱动程序在短时间内获得在系统范围内处理的独占权,以便驱动程序可以保证对用户空间中的缓冲区的独占访问?

4

1 回答 1

1

考虑到您在评论中的回复,实现此目的的一种方法是维护与每个系统处理器关联的内核模式线程,并在您写入缓冲区时将它们的 IRQL 提升到 DPC。DPC IRQL 不允许线程调度,因此用户模式应用程序将无法控制。

注意:这是问题的答案,但基本上我同意评论说你不应该这样做。您可能应该重新设计驱动程序,以便它在用户模式缓冲区可以随时更改的假设下工作。

于 2012-06-15T17:36:52.067 回答