[Spice-devel] about the usbredirect lib problem run under Windows

zhou link freboat at gmail.com
Sat Apr 27 19:09:52 PDT 2013


Hans de Goede  & Gerd Hoffmann:


theses  days   i  try  to migrate the usbredir  lib to  Windows

the  usbredir-0.6/usbredirserver/usbredirserver.c  connect to qemu's
redirect channel and spicec connect to the guest

the usbredirserver  works smooth in Linux,  spicec show the usb disk works
well.


when i compile usbredir on Windows,  usbredirserver connect and open usb
device ok,

but qemu's guest(windows xp) in spicec can detect the usb device,  but only
show unkown usb device,

i open the device in hardware manager, and  found pid and vid is all 000.


i debug the qemu's redirect  code(hw/usb/hcd_ehci.c),  and found the diff
between  linux's and windows's  usbredirserver
is here:

-----------------------------------------------------------------------------------------
static int ehci_execute(EHCIPacket *p, const char *action)
...............
   p->pid = ehci_get_pid(&p->qtd);
    p->queue->last_pid = p->pid;
    endp = get_field(p->queue->qh.epchar, QH_EPCHAR_EP);   ///On windows it
always return 0

             ///while Linux it will return 0, 1 or 2
    ep = usb_ep_get(p->queue->dev, p->pid, endp);

-------------------------------------------------------------------------------------------

i found the qh.epchar read from dma,  but can not find who write it,
can you  explain it the flow of the function.
how  doest usbredirect   control the dma ?

thanks you tow  very much.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/spice-devel/attachments/20130428/a9163605/attachment.html>


More information about the Spice-devel mailing list