Windows内核级全局关键部分

时间:2012-06-13 10:30:16

标签: windows driver kernel critical-section wdk

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

在Windows上的内核模式驱动程序中输入一种“全局关键部分”是否有办法(如果是这样,首选方式是什么)允许驱动程序获得排他性以便在系统范围内进行处理时间,以便驱动程序可以保证独占访问用户空间中的缓冲区?

1 个答案:

答案 0 :(得分:1)

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

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