cy_jj
驱动牛犊
驱动牛犊
  • 注册日期2002-02-13
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1016回复:1

如何在驱动中定时通过USB端口读取数据? 急急急!!!

楼主#
更多 发布于:2002-07-25 19:16
    如何在驱动中定时通过USB端口读取数据?
    我原想通过在定时调用代码中创建URB来实现,但在提交请求时总是出错,用Softice跟踪,发现似乎提交请求代码不能运行在Dispatch_level优先级,但DPC本身就是运行在Dispatch_level的呀,我该怎么办?

    我在定时调用中的代码如下:
 Time_DPC
{
t << \"Entering BulkRead\\n\";
ULONG RetValue = 0;

NTSTATUS status = STATUS_SUCCESS;
ULONG nBufferLength = dataLen;

KUsbPipe* pipe = FindPipe(pipeNum);

if(NULL == pipe)
{
t << \"Error: Invalid pipe parameter\\n\";
return STATUS_INVALID_PARAMETER;
}

if( nBufferLength > pipe->MaximumTransferSize() )
{
t << \"Error: Invalid transfer size parameter\" << pipe->MaximumTransferSize() << \"\\n\";
return STATUS_INVALID_PARAMETER;
}

PURB pUrb = pipe->BuildBulkTransfer(
pBuffer,
nBufferLength,
TRUE,
NULL,
TRUE
);

      status = pipe->SubmitUrb(pUrb,NULL,NULL,100);
if(STATUS_TIMEOUT == status )
{
status = pipe->Abort();
RetValue = 0;
//status = pipe->Reset();
}
else if( STATUS_SUCCESS == status )
{
RetValue = pUrb->UrbBulkOrInterruptTransfer.TransferBufferLength;
t << \"RetValue\" << RetValue << \"\\n\";
}
delete pUrb;
 }  
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2002-07-26 19:07
发现似乎提交请求代码不能运行在Dispatch_level优先级,但DPC本身就是运行在Dispatch_level的呀  

那不就对了?DPC在Dispatch_Level,而你的什么请求代码不能在这个level运行,当然出错了。
游客

返回顶部