阅读:1014回复:1
如何在驱动中定时通过USB端口读取数据? 急急急!!!
如何在驱动中定时通过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; } |
|
沙发#
发布于:2002-07-26 19:07
发现似乎提交请求代码不能运行在Dispatch_level优先级,但DPC本身就是运行在Dispatch_level的呀 那不就对了?DPC在Dispatch_Level,而你的什么请求代码不能在这个level运行,当然出错了。 |
|