我有两个驱动程序,即SCSI驱动程序(PCI设备)和虚拟NIC驱动程序(数据通过SCSI驱动程序)。
虚拟网卡驱动程序初始状态将调用SCSI驱动程序来获取用户设置的数据。 32位是正常的,但是当我在64位环境中尝试时失败。我使用windbg.exe调试并获取0x0000007e
错误,详细信息是
Arg1:ffffffffc0000005,未处理的异常代码
Arg2:fffff800040c4bb9,发生异常的地址
Arg3:fffff880045cde88,异常记录地址
Arg4:fffff880045cd6e0,上下文记录地址
调试详情:
EXCEPTION_CODE:(NTSTATUS)0xc0000005 - 0x%08lx
FAULTING_IP:nt!strncmp + 49 fffff800`040c4bb9 488b01 mov rax,qword ptr [rcx]
EXCEPTION_RECORD:fffff880045cde88 - (.exr 0xfffff880045cde88)
ExceptionAddress:fffff800040c4bb9(nt!strncmp + 0x0000000000000049)
ExceptionCode:c0000005(访问冲突)ExceptionFlags:00000000
NumberParameters:2
参数[0]:0000000000000000
参数[1]:0000000005000020尝试从地址0000000005000020
中读取
当我处于64位时,如何访问另一个驱动程序内存。
答案 0 :(得分:1)
尝试从地址0000000005000020
中读取
地址不在内核空间中。应该是吗?
32位正常,但在64位环境下尝试失败
看起来问题在于将驱动程序移植到64位。访问另一个驱动程序内存的是32位和64位相同。