“尚未调用FltStartFiltering”尝试在DriverEntry中附加卷时出错

时间:2017-12-21 03:09:04

标签: winapi driver minifilter filefilter filter-driver

我试图在驱动程序服务启动时附加一个卷,但是我得到了“过滤器还没有准备好附加到卷,因为它还没有完成初始化(没有调用FltStartFiltering)。 “我立刻得到了蓝屏。我已经调用了 FltStartFiltering ,但我不知道为什么它不起作用。

以下是我的代码:

    pennies = 1
    nickels = 5

1 个答案:

答案 0 :(得分:0)

RtlInitUnicodeString(&uniString, L"\\Device\\HarddiskVolume1");
PFLT_VOLUME vol;
FltGetVolumeFromName(&MiniSpyData.Filter, &uniString, &vol);
status = FltAttachVolume(&MiniSpyData.Filter, vol, NULL, NULL);

上述部分根本不需要也不错。 让我解释一下:

  1. FltGetVolumeFromName 例程将PFLT_FILTER作为第一个参数,从我在您的代码中看到的,您给它一个PFLT_FILTER *
  2. 您不需要手动附加到卷,因为除非在实例上下文注册标志中设置 FLTFL_INSTANCE_SETUP_MANUAL_ATTACHMENT ,否则将自动附加并在实例上下文中调用。有关详细信息,请参阅this
  3. 您不希望在启动期间执行此操作,因为该卷可能尚未存在,因此您的潜在BSOD。
  4. 祝你好运。