kfireway001
驱动牛犊
驱动牛犊
  • 注册日期2008-06-16
  • 最后登录2010-02-18
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望68点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:6828回复:9

新手问题,KdPrint 打印的内容没有在 DebugView 中显示?

楼主#
更多 发布于:2008-06-18 11:11
如题: KdPrint 打印的内容没有在 DebugView 中显示?

1、我在网上查的资料是:KdPrint 会在 DebugVIew 中显示。如果不是,那是显示在哪里?
2、我是用“Checked Build Environment”模式编译的

.cpp 文件如下,请各位帮我看下。只是一个驱动的简单框架.

extern "C"
{
#include <ntddk.h>
}

typedef struct _DEVICE_EXTENSION
{
    PDEVICE_OBJECT fdo;
    PDEVICE_OBJECT NextStackDevice;
    UNICODE_STRING ifSymLinkName;
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;

extern "C" NTSTATUS addDevice(IN PDRIVER_OBJECT   DriverObject, IN PDEVICE_OBJECT PhysicalDeviceObject)
{
    KdPrint(("test!addDevice"));

    NTSTATUS status;
    
    PDEVICE_OBJECT fdo;
    status = IoCreateDevice(DriverObject,
                            sizeof(DEVICE_EXTENSION),
                            NULL,
                            FILE_DEVICE_UNKNOWN,
                            0,
                            FALSE,
                            &fdo);
    if( !NT_SUCCESS(status) )
        return status;
    
    PDEVICE_EXTENSION dx = (PDEVICE_EXTENSION)fdo->DeviceExtension;
    dx->fdo = fdo;
    
    dx->NextStackDevice = IoAttachDeviceToDeviceStack(fdo, PhysicalDeviceObject);
    
    fdo->Flags |= DO_BUFFERED_IO | DO_POWER_PAGABLE;
    fdo->Flags &= ~DO_DEVICE_INITIALIZING;
  
    return STATUS_SUCCESS;    
}

extern "C" NTSTATUS Pnp(IN PDEVICE_OBJECT DriverObject, IN PIRP Irp)
{    
    KdPrint(("test!Pnp"));
    
    PDEVICE_EXTENSION dx = (PDEVICE_EXTENSION)DriverObject->DeviceExtension;
    
    PIO_STACK_LOCATION IrpStack = IoGetCurrentIrpStackLocation(Irp);
    ULONG MinorFunction = IrpStack->MinorFunction;

    IoSkipCurrentIrpStackLocation(Irp);
    NTSTATUS status = IoCallDriver( dx->NextStackDevice, Irp );

    if( MinorFunction == IRP_MN_REMOVE_DEVICE )
    {
        IoSetDeviceInterfaceState(&dx->ifSymLinkName, FALSE);
        RtlFreeUnicodeString(&dx->ifSymLinkName);

        if( dx->NextStackDevice )
            IoDetachDevice(dx->NextStackDevice);

        IoDeleteDevice(DriverObject);
    }

    return STATUS_SUCCESS;
}


extern "C" NTSTATUS DriverEntry(IN PDRIVER_OBJECT   DriverObject, IN PUNICODE_STRING  RegistryPath)
{
    KdPrint(("test!DriverEntry"));
    
    DriverObject->DriverExtension->AddDevice = addDevice;
    DriverObject->MajorFunction[IRP_MJ_PNP]  = Pnp;        
    
    return STATUS_SUCCESS;
}

kfireway001
驱动牛犊
驱动牛犊
  • 注册日期2008-06-16
  • 最后登录2010-02-18
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望68点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-06-19 09:51
引用第1楼hyy301于2008-06-18 19:07发表的  :
你的驱动安装了吗



楼上的,我是通过控制面板的增加新硬功件,然后选择INF来安装的,而且成显示安装成功,能够在设备管理器看到相关的设备,就是调试信息不显示。

另外,DebugView 的 Capture 下面能打勾都打勾了。
kfireway001
驱动牛犊
驱动牛犊
  • 注册日期2008-06-16
  • 最后登录2010-02-18
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望68点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-06-24 16:59
引用第4楼hyy301于2008-06-20 08:07发表的  :
DebugView应该没问题,程序都是一样的,你按照我的步骤做
1、先卸载掉你的驱动
2、打开DEBUGVIEW,勾上Capture Kernel
3、安装你的驱动
这时DbgPrint的信息应该能显示


这样试过,它就是没有显示出来

引用第5楼petsatan于2008-06-22 14:27发表的  :
同意楼上.
你的驱动 只能执行 打印   DriverEntry ,要是你先加载驱动,后打开debugview那就什么都没有了...

这个我知道,我在装驱动之前就已经打开 DebugView 了

我在怀疑是不是
1、sys 的问题          ------------- 有谁可以编译一个 sys && .inf  文件让我试下
2、inf的问题
3、安装驱动的问题      ------------ 我是通过控制面板的增加硬件..... 来安装的
kfireway001
驱动牛犊
驱动牛犊
  • 注册日期2008-06-16
  • 最后登录2010-02-18
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望68点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-06-25 10:10
谁可以搞一个有 kdprintf 的 .sys 和 .inf 给我,让我试一下???谢谢....


我的邮箱是 kfireway@21cn.com
游客

返回顶部