阻止创建PAGING FILE!!!
作者:陆麟
转载请征得作者同意.
2003.4.24
在FSD FILTER/FSD的编写过程中. 很少有人注意到PNP IRP的作用. 这边提供一个小小的TRICK.可以使得在特定的DEVICE上无法存在PAGING
FILE.
PNP IRQ的MINOR操作IRP_MN_DEVICE_USAGE_NOTIFICATION, 是用作查询FSD/STORAGE FDO/PDO,
该FS或者存储区域上是否支持保存PAGING FILE/CRASH DUMP FILE/Hibernation File. 这个IRP的命名有些古怪.
我也无法理解为什么起了个DEVICE_USAGE的名字. 不过它的作用就是查询所说文件是否可以存放在该区域.
因此. 只要将这个IRP FAIL掉. 就可阻止在相应的DEVICE上创建PAGING FILE/CRASH DUMP FILE/Hibernation
File. 阻止用户创建PAGING FILE/CRASH DUMP FILE/Hibernation File, 是个古怪的想法, 但是或许会有用也未可定.
:D
但是要确保IRP_MN_DEVICE_USAGE_NOTIFICATION被截获, 要求到是挺高. FILTER必须是BOOT类型. 这样才有可能阻止BOOT时刻就已经创建好PDO的DEVICE.
时机需要掌握在PDO创建而OS尚未尝试创建PAGING FILE前. 嘿嘿. :) 当然, BOOT区的PAGING FILE从根本上来说是无法关闭的.
因为即使FILTER失败调IRP_MN_DEVICE_USAGE_NOTIFICATION,不让创建PAGING FILE. OS仍然会绕过PNP
IRP处理, 创建一个临时的PAGING FILE.
用户会得到一个警告, 说无法创建PAGING FILE, 但是实际上一个临时的PAGING FILE又很正常地工作着. :D
就说到此.