注册 登录
编程论坛 操作系统内核开发

驱动编程,蓝屏问题,求助

gpp6025 发布于 2011-04-28 20:37, 1303 次点击
编译是过了,但是只要一加载就直接蓝了!DbgPrint("the  DriverEntry !!");这句也没执行到~~也没什么低中断级的函数调用,是在不知道哪里处理处了问题了~~
NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject,PUNICODE_STRING unstr)
{
    NTSTATUS status=STATUS_UNSUCCESSFUL;
    PUNICODE_STRING SymbolicLinkName=NULL;
    PUNICODE_STRING D_Name=NULL;
    PDEVICE_OBJECT DeviceObject=NULL;
    ULONG i;
    DbgPrint("the  DriverEntry !!");
    RtlInitUnicodeString(D_Name,L"\\Device\\K_antive");
    RtlInitUnicodeString(SymbolicLinkName,L"\\DosDevices\\A_safe");
    DbgPrint("the device is prepare creat !!");
    for(i=0;i<IRP_MJ_MAXIMUM_FUNCTION;++i)
    {
        DriverObject->MajorFunction[i]=mydispatch;
    }
    DriverObject->DriverUnload=Antive_unload;
    status=IoCreateDevice(DriverObject,0,D_Name,
        FILE_DEVICE_UNKNOWN,
        0,
        FALSE,
        &DeviceObject);
    if(status!=STATUS_SUCCESS)
    {
        DbgPrint("the device is creat fail!!");
        return status;
    }
    DeviceObject->Flags &= ~DO_DEVICE_INITIALIZING;//DeviceObject+1ch Flags
    status=IoCreateSymbolicLink(SymbolicLinkName,D_Name);
    if(status!=STATUS_SUCCESS)
    {
        DbgPrint("the symbolic link is creat fail !!");
        IoDeleteDevice(DeviceObject);
        return status;
    }

    return status;
}
5 回复
#2
zaixuexi2011-06-02 10:02
用windbg看下memory.dmp,先定位到问题点
#3
kpyyy2011-06-13 11:55
郁闷看不懂
#4
AleTiff2015-04-10 16:09
看不出来。

建议虚拟机环境下挂接MS官方的调试符号,打印出日志。在日志里通常会非常清晰地显示错误原因,如果是源代码里有错误,把你源代码的符号文件也放到符号目录去,日志会打印出哪行出的问题。
#5
narutokou2015-05-10 21:00
PUNICODE_STRING SymbolicLinkName=NULL;
PUNICODE_STRING D_Name=NULL;
改为:
UNICODE_STRING SymbolicLinkName=NULL;
UNICODE_STRING D_Name=NULL;并把以后的相应代码改了。
内核无法把字符串分配到NULL内存区,引起访问违规
#6
李亚韧2015-05-20 08:20
菜鸟路过
1