daor
驱动牛犊
驱动牛犊
  • 注册日期2001-05-16
  • 最后登录2018-04-15
  • 粉丝0
  • 关注0
  • 积分-25分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:948回复:3

读取urb里的数据,为什么会page fault?

楼主#
更多 发布于:2003-04-10 12:37
我写的是usbstor.sys的下层驱动,监视它往usb发送的数据。当我收到_URB_BULK_OR_INTERRUPT_TRANSFER的URB时,就从其TransferBuffer(当TransferBuffer !=NULL时)开始,调试输出一串长度为TransferBufferLength 的数据。为什么会page fault?
3x@Q
daor
驱动牛犊
驱动牛犊
  • 注册日期2001-05-16
  • 最后登录2018-04-15
  • 粉丝0
  • 关注0
  • 积分-25分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-04-11 13:30
以(UCHAR*)转换的。以下是我的调试输出函数调用。如果我把下面这句注释掉的话,就不会pagefault。
DbgDataOut( (UCHAR*)pUrbBulk->TransferBuffer, pUrbBulk->TransferBufferLength);
输出函数定义为:
OID DbgDataOut(UCHAR* pData, ULONG ulDataLength)
{
    for(ULONG i = 0; i< ulDataLength; i++)
    {
        t.Trace(TraceAlways,\"%02x  \", pData);
        
        if( (i+1)%8 == 0 )
        {
            t<<\"\\n\";
        }
        else if( (i+1)%4 == 0 )
        {
            t<<\"--  \";
        }  
        
    }
    

}
其中t.Trace是用的DS的函数,相当于ddk的DbgPrint。
游客

返回顶部