阅读:959回复:3
读取urb里的数据,为什么会page fault?
我写的是usbstor.sys的下层驱动,监视它往usb发送的数据。当我收到_URB_BULK_OR_INTERRUPT_TRANSFER的URB时,就从其TransferBuffer(当TransferBuffer !=NULL时)开始,调试输出一串长度为TransferBufferLength 的数据。为什么会page fault?
3x@Q |
|
沙发#
发布于: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。 |
|