Я попытался присоединить том во время запуска службы драйвера, но получил сообщение «Фильтр не готов для присоединения к томам, потому что он не завершил инициализацию (FltStartFiltering не был вызван).» и немедленно У меня синий экран. Я уже вызвал FltStartFiltering, но не знаю, почему это не сработало.
Ниже мой код:
status = FltRegisterFilter(DriverObject,
&FilterRegistration,
&MiniSpyData.Filter);
if (!NT_SUCCESS(status)) {
leave;
}
status = FltBuildDefaultSecurityDescriptor(&sd,
FLT_PORT_ALL_ACCESS);
if (!NT_SUCCESS(status)) {
leave;
}
RtlInitUnicodeString(&uniString, WOODY_PORT_NAME);
InitializeObjectAttributes(&oa,
&uniString,
OBJ_KERNEL_HANDLE | OBJ_CASE_INSENSITIVE,
NULL,
sd);
status = FltCreateCommunicationPort(MiniSpyData.Filter,
&MiniSpyData.ServerPort,
&oa,
NULL,
SpyConnect,
SpyDisconnect,
SpyMessage,
1);
FltFreeSecurityDescriptor(sd);
if (!NT_SUCCESS(status)) {
leave;
}
//
// We are now ready to start filtering
//
status = FltStartFiltering(MiniSpyData.Filter);
if (!NT_SUCCESS(status)) {
FltUnregisterFilter(MiniSpyData.Filter);
}
else {
//Here is what I want to attach
RtlInitUnicodeString(&uniString, L"\\Device\\HarddiskVolume1");
PFLT_VOLUME vol;
FltGetVolumeFromName(&MiniSpyData.Filter, &uniString, &vol);
status = FltAttachVolume(&MiniSpyData.Filter, vol, NULL, NULL);
}
FltGetVolumeFromName
иFltAttachVolume
должны быть не&MiniSpyData.Filter
, аMiniSpyData.Filter
- это фатальная ошибка. также как общее примечание - для чего вы называетеFltAttachVolume
? fltmgr автоматически прикрепляет ваш фильтр к существующим томам - person RbMm   schedule 21.12.2017