阅读:2273回复:5
Linux上虚拟机的问题!!(急)
大家好!
我的问题如下: 我是在linux系统上(FC6.2)安装了一个虚拟机VMware,虚拟机上安装了Windows XP 的OS。 然后我在这个虚拟机上的XP下运行我做的一个USB功能程序。这个USB功能程序很简单,就是读写我自己做的USB设备(USB功能驱动也是自己写的)。 USB设备采用端点1作为读写端口,等时模式(isochrous),每个帧的大小为64B。 如果是运行在普通机器(就是非虚拟机)的XP系统下,我的程序可以采用 WriteFile(.. , ..., 1920, ...)这个API函数进行USB数据的写(其他参数省略,1920表示一次读写的数据大小,单位为B),而且写入的数据可以达到1920B。 但是,如果我的程序运行在虚拟机上的XP系统下,上面这个API函数执行就不行了,写入的数据只是为0B。 然后,我把1920这个参数改了,发现以下规律: 凡是这个参数<= 64的,这个API函数都可以写入指定的数据大小,但是,如果这个该参数>64,则写入的数据都是0。 请问各位大大, 这是什么原因? 为何虚拟机与普通机有这个差别(装的XP系统都是同一张盘)? 我该如何解决呢? 谢谢啊 急,希望路过的给顶个,斑竹给帮个忙!! 万分感谢! |
|
沙发#
发布于:2007-10-13 18:48
linux &unix下的包大小和windows下的不一样,既然64可以,你就可以做个循环啊
|
|
板凳#
发布于:2007-10-13 20:11
楼上的大大,但是在虚拟机上的XP系统,调用WriteFile函数也是要时间的,如果一次只传输64B,时间上根本来不及的,循环也一样要花时间(好像在Windows下调用WriteFile需要16ms的时间)
|
|
地板#
发布于:2007-10-19 16:47
没有其他的大大遇到过这个问题么?
前天又做了个实验,在XP系统上装了个VMware,虚拟机里又装了一个XP的操作系统 这样我在Linux主机中遇到的问题就不存在了。 也就是说,如果主机是XP,虚拟机也是XP,则我的设备和程序在正常XP系统或者虚拟机的XP系统都能一样的应用。 但是,如果主机是Linux,而虚拟机是XP,则我的设备和程序就工作的不一样了。这种情况下:正常XP系统中,我的程序可以调用API,WriteFile一次性写入1920个字节;而在虚拟机的XP系统中,我的程序只能调用API,WriteFile一次性写入64(或者低于64)个字节的数据,大于64个字节的写操作都是无法成功写入。 请问各位大大,有没有遇到过这个问题呢? 大家帮帮忙 斑竹帮帮忙 谢谢!! |
|
地下室#
发布于:2007-10-22 12:04
VMware是什么版本?USB是2.0还是1.1?
VMware对USB2.0支持并不好,尤其是ISO端点。 甚至在VMware WorkStation6.0中,VMware还不能很好的支持USB2.0的ISO。 |
|
5楼#
发布于:2007-10-23 12:10
谢谢楼上的大大!!
我把我的环境汇报如下: VMware是6.0的 USB主机端口支持2.0,不过我的设备是1.1的 端口传输的类型是用ISO端点 但是如果是在XP的OS上安装VMware虚拟机,虚拟机上装XP,我的设备通信就正常了。 这是怎么回事呢? 麻烦你了。 |
|