【发布时间】:2011-06-03 15:27:16
【问题描述】:
我正在创建文件系统过滤器驱动程序,需要打开一些文件来检查调度例程中的属性。我正在使用 ZwCreateFile()。但是在每个文件系统请求时都会调用我的调度例程,因此我的 ZwCreateFile() 将再次调用我的调度例程。不进入死锁的最佳方法是什么?我认为使用标志或其他东西是不错的选择?
我已经测试并简单地在设备扩展中签名标志在某些情况下仍然没有更改标志或标志包含旧数据。
谢谢
【问题讨论】:
-
那不是死锁,那是重入
-
谢谢@David,你能给我指出一个关于这个的资源吗?
-
我找到了信息,但我该如何解决我的问题?我认为驱动程序调度功能默认情况下总是可重入的。也许我可以检查 IRP createfile 请求中的一些标志来检查它的来源?
-
@David Heffernan:可能会出现死锁——不是向下一层,而是两层(例如,打开“a.txt”-> 打开“file_used_by_filter”-> 打开“file_used_by_filter”-> .. .).
标签: c windows filesystems device-driver