0
드라이버 서비스가 시작될 때 볼륨을 연결하려고했지만 ""이 있습니다. 필터가 볼륨에 첨부 할 준비가되지 않았습니다. (FltStartFiltering가 호출되지 않았습니다.) "초기화하고 즉시 파란색 화면이 나타납니다. 나는 이미 을 FltStartFiltering이라고 불렀지 만, 왜 작동하지 않았는지 알 수 없습니다. 잘못뿐만 아니라"FltStartFiltering을 호출하지 못했습니다."DriverEntry에 볼륨을 연결하려고 시도하는 중 오류가 발생했습니다.
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 자동으로 기존 볼륨에 필터를 첨부하십시오 – RbMm
고마워요! 내 실수 야. 이제 작동합니다 ... PC를 다시 시작하면 필터 드라이버가 연결되지 않습니다. 나는 서비스를 확인하고 확실하게 실행 중이다 ... – SuperBerry
FltAttachVolume()을 호출하지 않으면 ... 그러나 FlightAttachVolume()을 DriverEntry에서 호출하면 서비스로드를 한 번 연결할 수 있지만 몇 초 후에 다시 블루 스크린이 나타납니다. 코드를 다시 확인해야합니다 ... 도움을 주셔서 감사합니다 – SuperBerry