Windows 732ビット用のWDK7.0ビルドユーティリティを使用してミニフィルタードライバーを作成し、コンパイルしました。次に、OSRのドライバーローダーユーティリティを使用して、VMWareで実行されているWindows 7(32ビット)マシンにインストールしました。DbgViewを実行すると、DbgPrintの出力を正確に確認できました。
次に、Microsoft Visual Studio Pro 2012 for Windows 7(32ビット)に統合されたWDK 8.0を使用して、まったく同じドライバーをコンパイルしました。その結果、sys、cat、infファイルの3つのファイルが作成されました。infファイルを右クリックし、[インストール]を選択して、VMWareで実行されているWindows 7(32ビット)マシンにドライバーをインストールしました。その後、正常に起動したコマンドプロンプトからサービスを開始しました。しかし、同じコード/ドライバーであったとしても、WDK 8.0 /VS2012Proを使用してコンパイルされたドライバーからのDbgPrint出力をDbgViewで見ることができません。実際に印刷を行うコードは次のとおりです(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;
}
ここで何が欠けていますか?