使用WDK 8.0编译的FileSystem MiniFilter驱动程序未显示DbgPrint输出(DbgView / Win7 32位)

时间:2012-12-29 14:49:22

标签: debugging driver wdk debugview minifilter

我使用适用于Windows 7 32位的WDK 7.0构建实用程序编写并编译了一个minifilter驱动程序。然后我使用OSR的驱动程序加载程序实用程序将其安装在VMWare上运行的Windows 7(32位)计算机上。当我运行DbgView时,我可以准确地看到DbgPrint输出。

然后我使用集成在Microsoft Visual Studio Pro 2012 for Windows 7(32位)中的WDK 8.0编译了相同的驱动程序。结果创建了3个文件,一个sys,cat和inf文件。我在VMWare上运行的Windows 7(32位)计算机上安装了驱动程序,右键单击inf文件并选择“安装”。然后我从命令提示符启动服务,开始很好。但即使它是相同的代码/驱动程序,我也看不到DbgView中的DbgPrint输出,来自使用WDK 8.0 / VS2012 Pro编译的驱动程序。以下是实际执行打印的代码(IRP_MJ_CREATE的Post Operation Callback函数):

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;
}

我在这里缺少什么?

3 个答案:

答案 0 :(得分:2)

在vista及以上版本DbgPrint中,默认情况下会屏蔽。

在WinDbg提示中尝试此操作

ed Kd_DEFAULT_Mask 8

有关详细信息,请参阅此问题Kernel trace Windows 7 WinDbg或本文DbgPrint in vista and later

答案 1 :(得分:0)

您是否尝试使用适用于Windows 8 / Windows Server 2012的WDK 8进行编译

对于使用WinDDK编译的Windows 7的调试打印工作,但对于Windows 8 / Server 2012,必须使用WDK 8编译并且不打印调试信息。

答案 2 :(得分:0)

或者,您可以简单地编写一个注册脚本,默认情况下启用它们。 有问题的注册表项是:

  1. HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Debug Print Filter
  2. 价值:默认
  3. 数据: 0x8
  4. 同时检查this

相关问题