阅读:2487回复:7
请教,USB驱动中如何加工数据
有2个疑问:
1 需要在USB驱动中,处理下发上传数据,会改变数据的长度,如何处理啊? 2 处理数据时,希望使用一些系统API,如文件系统处理,图像处理函数等,如何处理? 麻烦解答一下,谢谢! |
|
|
沙发#
发布于:2010-08-11 10:13
第一个问题能用filter解决吗?
看到一些例子是可以拦截IRP,不下发到设备,设置数据后,直接调用完成例程。 第二个问题有点困难啊! |
|
|
板凳#
发布于:2010-08-11 17:15
2.简单的文件处理可以用Zw-或是Nt-系的函数,字符处理可以用Rtl-函数
图像处理就不知道了,没接触过。 |
|
地板#
发布于:2010-08-12 09:18
谢谢
关于问题1,对于数据的处理有没有好的建议啊? |
|
|
地下室#
发布于:2010-08-12 19:46
楼主应该重新设计下架构,弄明白为什么要在usb driver中进行图像处理,为什么不能通过user space的application 调用usb driver的接口
取到预期数据之后,再进行图像处理? |
|
5楼#
发布于:2010-08-17 18:34
application是别人开发的,我们只能在DRIVER里进行过滤处理,没办法啊!
还是得考虑驱动的架构来实现。 |
|
|
6楼#
发布于:2010-09-23 10:11
>>有2个疑问:
>>1 需要在USB驱动中,处理下发上传数据,会改变数据的长度,如何处理啊? 1. 如果是别人的驱动,要写一个filter驱动,在功能驱动之前截取IRP包;如果是你自己写的功能驱动,不需要。 2. 取IRP包中的数据(inputbuffer或其他方式传递下来的数据包) 3. 创建若干个IRP/URB,并把数据包分成你希望的大小,使用这些IRP/URB发送下去(下层是USBD总线驱动)。 >>2 处理数据时,希望使用一些系统API,如文件系统处理,图像处理函数等,如何处理? 不可以的。Win32 API一个都不能在内核使用。Ntoskrnl重新了部分CRT运行库,比如strcpy之类是可以在内核中使用的,添加<dontusb.h>即可。但从文件名称你就可以知道,他不建议在内核中被使用。文字处理,在内核中,首先选择使用<ntstrsafe.h>中定义的运行时函数。 |
|
|
7楼#
发布于:2010-12-04 00:25
用户被禁言,该主题自动屏蔽! |
|