Sterownik FileSystem MiniFilter skompilowany z WDK 8.0 nie pokazującym wyjścia DbgPrint (DbgView / Win7 32 bit)
Napisałem i skompilowałem sterownik minifiltera za pomocą narzędzia do budowania WDK 7.0 dla Windows 7 32-bit. Następnie zainstalowałem go na komputerze z systemem Windows 7 (32-bitowym) działającym na VMWare przy użyciu narzędzia ładującego sterowniki OSR. Kiedy uruchomiłem DbgView, mogłem dokładnie zobaczyć wyjście DbgPrint.
Następnie skompilowałem ten sam sterownik za pomocą WDK 8.0 zintegrowanego z Microsoft Visual Studio Pro 2012 dla Windows 7 (32-bitowego). W wyniku tego powstały 3 pliki, plik sys, cat i inf. Zainstalowałem Driver na komputerze z systemem Windows 7 (32-bitowym) działającym na VMWare, klikając prawym przyciskiem myszy plik inf i wybierając „install”. Następnie uruchomiłem usługę z wiersza poleceń, która zaczęła się dobrze. Ale mimo że był to ten sam kod / sterownik, nie widzę wyjścia DbgPrint w DbgView, ze sterownika skompilowanego za pomocą WDK 8.0 / VS2012 Pro. Oto kod, który faktycznie wykonuje drukowanie (funkcja wywołania zwrotnego po operacji dla 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;
}
Czego mi tu brakuje?