大家好,我用DS作USB驱动,基本的数据传输都没有问题了,可惜我用了CancelSpinLock

coolqiu 2003-12-16 12:03:12
后就出问题,蓝屏。如果启动SoftICE,碰到错误后也可以忽略后继续运行成功。下面
是我的cancel例程:
我没有用startio:

VOID USB160Device::CancelReadCallback(KIrp I)
{
CancelSpinLock::Release( I.CancelIrql() );

blockingIRP *blckirp=(blockingIRP *) PIRP(I) ->Tail.Overlay.DriverContext[0];
ULONG Address=(0x400000 & 0xfff00000);
ULONG NCAddress=(blckirp->c6xTdescAddr & 0xfffff)+BAR2BASEADDRESS;
t<<" Enter CancelReadCallback NCAddress " << NCAddress << EOL;

WRITE_PLX_SPACE0_LOCAL_ADDR(Address);
if( blckirp->operation == TRANSFER_DMAtoPC )
USB160_WRITE_REG(NCAddress+4, TRANSFER_CANCEL_DMAtoPC);
else
USB160_WRITE_REG(NCAddress+4, TRANSFER_CANCEL_DMAtoC6X);

WRITE_PLX_P2LDBELL( (ULONG)MASK_BIT31 );

}

...全文
27 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧