当一个驱动程序访问另一个驱动程序内存时,64位环境中的BSOD

时间:2012-02-23 01:19:46

标签: 64-bit driver

我有两个驱动程序,即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位时,如何访问另一个驱动程序内存。

1 个答案:

答案 0 :(得分:1)

  

尝试从地址0000000005000020

中读取

地址不在内核空间中。应该是吗?

  

32位正常,但在64位环境下尝试失败

看起来问题在于将驱动程序移植到64位。访问另一个驱动程序内存的是32位和64位相同。