阅读:2738回复:9
关于DeviceIoControl
我使用的是:EZ-USB 开发板(芯片是AN2131QC)。已经将所给例子改成一个文件传输的程序。出现以下问题,希望给予帮助,给分决不吝惜。
1) DeviceIoControl :最大分组可以是64K字节,但在程序中只能输入65535,而不能是65536,一输入65536就错误。为什么?(15分) 2) 但我这个例子执行时:速度既然达到了1M字节/秒,但这肯定有问题,那位高手有建议?(10分) 3) 目前我只是使用了一个端点,如何使用多个端点提高速率?特别时双缓存技术?(20分) |
|
|
沙发#
发布于:2001-10-11 00:16
> 1) DeviceIoControl :最大分组可以是64K字节,但在程序中只能输入65535,而不能是65536,一输入65536就错误。为什么?(15分)
I think it's because 65535 is the biggest integer in a word, i.e. 65535=0xffff, while 65536 = 0x10000 is beyond one word. |
|
板凳#
发布于:2001-10-11 09:35
> 1) DeviceIoControl :最大分组可以是64K字节,但在程序中只能输入65535,而不能是65536,一输入65536就错误。为什么?(15分)
>开始,我也以为这是在程序中将该变量定义位WORD的缘故,但后来发现DeviceIoControl 最大一次只允许传输65535字节。这是不是要求我把一个大文件分割成小文件时:只能分成若干个65535,而不是65536,但文档中的64K作合解释? 请高手指点! |
|
|
地板#
发布于:2001-10-11 13:19
[QUOTE]原本由 fanwei7 发表
[B]> 1) DeviceIoControl :最大分组可以是64K字节,但在程序中只能输入65535,而不能是65536,一输入65536就错误。为什么?(15分) >开始,我也以为这是在程序中将该变量定义位WORD的缘故,但后来发现DeviceIoControl 最大一次只允许传输65535字节。这是不是要求我把一个大文件分割成小文件时:只能分成若干个65535,而不是65536,但文档中的64K作合解释? 请高手指点! [/B][/QUOTE] 有driver的源代码吗?可以自己改啊! |
|
|
地下室#
发布于:2001-10-11 13:30
别的问题我不会,不过64k就是65535,你就不要钻牛角尖了。。。
|
|
|
5楼#
发布于:2001-10-11 13:57
KDriver: 你怎么这么肯定。
如果如此:是不是将一个大文件分割成小文件是,也必须是若干个 65535字节。 |
|
|
6楼#
发布于:2001-10-11 15:34
请大家指教
|
|
|
7楼#
发布于:2001-10-12 14:24
[QUOTE]原本由 fanwei7 发表
[B]我使用的是:EZ-USB 开发板(芯片是AN2131QC)。已经将所给例子改成一个文件传输的程序。出现以下问题,希望给予帮助,给分决不吝惜。 1) DeviceIoControl :最大分组可以是64K字节,但在程序中只能输入65535,而不能是65536,一输入65536就错误。为什么?(15分) 2) 但我这个例子执行时:速度既然达到了1M字节/秒,但这肯定有问题,那位高手有建议?(10分) 3) 目前我只是使用了一个端点,如何使用多个端点提高速率?特别时双缓存技术?(20分) [/B][/QUOTE] 兄弟,我真服了你,都一两个月了,还在钻研这个哪? 1,EZ-USB General Purpose Driver Specification,page 12: 5.2.2 IOCTL_EZUSB_BULK_WRITE ...... The transfer size must be less than 64KB. ..... 只少了你一个Byte,不至于这样紧张吧,:),除了分割成小块好象别无它法。 2,为什么这么肯定是个问题?万一是真的不是很好吗? 3,既然有双缓存,不用就浪费了。端点多了要晕头。 4,我记得你以前要过程序,请把你的信箱告诉我,我把我的发给你,东西简陋了点,不好意思,麻烦你看看我弄的对不对,是不是和你一样的,拜托拜托。asgump@163.com 5,God bless you. [sunkai 编辑于 2001-10-12 14:42] |
|
8楼#
发布于:2001-10-13 13:57
> 1) DeviceIoControl :最大分组可以是64K字节,但在程序中只能输入65535,而不能是65536,一输入65536就错误。为什么?(15分)
>1)首先,这给程序中将该变量定义位WORD的缘故有关。 其次,我们所说的文件大小是64K,而在计算机内计数的起始值为0,故一个WORD的最大值为65535。如果你选择从1开始,那么64K的容量空间应该在65536,而不是65535。 |
|
|
9楼#
发布于:2001-10-15 10:04
谢谢大家指点!散分!
|
|
|