-1

我有一个微过滤器(内核模式)。我想从内核模式中删除具有特定路径(\Device\HarddiskVolume1\file.txt 或 C:\file.txt)的文件

有没有办法做到这一点?

更新:20150130

正如Harry Johnston所说,我尝试使用ZwDeleteFile 例程。这些是我的代码:

RtlInitUnicodeString(&gRedirectFullFilePath, "\\Device\\HarddiskVolume1\\test.txt"); // This file existed
InitializeObjectAttributes(&ObjectAttribute, &gRedirectFullFilePath, OBJ_CASE_INSENSITIVE, NULL, NULL); 
status = ZwDeleteFile(&ObjectAttribute);

但它使我的系统崩溃。我的代码有什么问题吗?=> 固定(这是答案)

谢谢!

4

4 回答 4

3

ZwDeleteFile例程

ZwDeleteFile 例程删除指定的文件。

于 2015-01-29T21:44:41.020 回答
1

通过通常的方法,它不可能从内核模式(即设备驱动程序)中删除文件。

这种做法或想法是非常不鼓励的。

于 2015-01-29T11:07:25.180 回答
1

FltSetInformationFile()函数与FileDispositionInformation类一起使用。

于 2015-01-29T11:09:24.490 回答
0

有很多方法可以做到这一点,如Microsoft的微过滤DeleteSample中所示。

  1. FILE_DELETE_ON_CLOSE标志,您可以在选择的 CreateFile 例程中使用它。
  2. 通过设置FileDispositionInformation
  3. 还要注意新引入的FILE_DISPOSITION_INFORMATION_EX

研究完样本后,一切都应该更清楚了。另请注意,您可以执行事务删除,也可以通过文件 ID 删除文件。

祝你好运。

于 2018-01-26T19:38:32.763 回答