阅读:1445回复:2
驱动异步调用的问题,请各位帮忙解答
在用驱动进行异步读取USB 口的时候有个疑问:应用程序发出了DeviceIoContol后,驱动的派遣函数中对发来的ioctl 处理时,是返回了STATUS_PENDING,那这时候,派遣函数已经返回了,但我还没有进行数据读取的操作啊!我该在什么地方,启动读取USB口的操作函数,并设置IoCompleteRequest()函数来结束IRP啊?因为我这时已经不能控制驱动了啊,是不是要在return STATUS_PENDING前,开启一个内核线程来读取USB口数据呢?还是在结束设备时,在DispatchCleanup派遣函数中,完成读USB口的工作阿?希望各位高手帮忙解答一下,不胜感激!!!
|
|
沙发#
发布于:2009-02-22 13:31
方法很多,你可以在Displath时候就去读,
也可以将IRP队列起来使用现成去处理, 还可以启动Work Item等 |
|
|
板凳#
发布于:2009-03-01 09:32
非常感谢AllenZh的回复,我是个菜鸟级的,所以对您的回复还有些疑问,望能解答。
1. 在Displath时就去读,那是不是Displath就阻塞了,不能及时返回SUSPENDING了? 2. Work Item 是指的什么啊,我没有见到这个用法啊。 您如果能够再给一些解答或给一点代码提示,不胜感激!!!! |
|