Драйвер FileSystem MiniFilter, скомпилированный с WDK 8.0, не отображающий вывод DbgPrint (32-битный DbgView / Win7)
Я написал и скомпилировал драйвер минифильтра с помощью утилиты сборки WDK 7.0 для 32-битной Windows 7. Затем я установил его на Windows 7 (32-битную) машину, работающую на VMWare, используя OSR 'Утилита для загрузки драйверов. Когда я запустил DbgView, я смог точно увидеть вывод DbgPrint.
Затем я скомпилировал тот же самый драйвер, используя WDK 8.0, встроенный в Microsoft Visual Studio Pro 2012 для Windows 7 (32-разрядная версия). В результате было создано 3 файла: sys, cat и inf. Я установил драйвер на Windows 7 (32-битную) машину, работающую на VMWare, щелкнув правой кнопкой мыши на файле inf и выбрав «установить», Затем я запустил службу из командной строки, которая началась нормально. Но даже при том, что это был тот же самый код / драйвер, я не могу видеть вывод DbgPrint в DbgView от драйвера, который был скомпилирован с использованием WDK 8.0 / VS2012 Pro. Вот код, который фактически выполняет печать (функция обратного вызова после операции для IRP_MJ_CREATE):
FLT_POSTOP_CALLBACK_STATUS CreateFilePostOpCallback(__in PFLT_CALLBACK_DATA Data, __in PCFLT_RELATED_OBJECTS FltObjects,
__in_opt PVOID CompletionContext, __in FLT_POST_OPERATION_FLAGS Flags)
{
PFLT_FILE_NAME_INFORMATION fileNameInfo;
NTSTATUS status;
UNREFERENCED_PARAMETER(FltObjects);
UNREFERENCED_PARAMETER(CompletionContext);
UNREFERENCED_PARAMETER(Flags);
status = FltGetFileNameInformation(Data, FLT_FILE_NAME_NORMALIZED|FLT_FILE_NAME_QUERY_DEFAULT, &fileNameInfo);
if(!NT_SUCCESS(status))
return FLT_POSTOP_FINISHED_PROCESSING;
FltParseFileNameInformation(fileNameInfo);
DbgPrint("%wZ created/opened", &fileNameInfo->Name);
FltReleaseFileNameInformation(fileNameInfo);
return FLT_POSTOP_FINISHED_PROCESSING;
}
Что мне здесь не хватает?