<div dir="ltr">Hans de Goede & Gerd Hoffmann:<div><br><div><br></div><div style>theses days i try to migrate the usbredir lib to Windows</div><div style><br></div><div style>the usbredir-0.6/usbredirserver/usbredirserver.c connect to qemu's redirect channel and spicec connect to the guest</div>
<div style><br></div><div style>the usbredirserver works smooth in Linux, spicec show the usb disk works well.</div><div style><br></div><div style><br></div><div style>when i compile usbredir on Windows, usbredirserver connect and open usb device ok,</div>
<div style><br></div><div style>but qemu's guest(windows xp) in spicec can detect the usb device, but only show unkown usb device,</div><div style><br></div><div style>i open the device in hardware manager, and found pid and vid is all 000.</div>
<div style><br></div><div style><br></div><div style>i debug the qemu's redirect code(hw/usb/hcd_ehci.c), and found the diff between linux's and windows's usbredirserver</div><div style>is here:</div><div style>
<br></div><div style>-----------------------------------------------------------------------------------------</div><div style>static int ehci_execute(EHCIPacket *p, const char *action) </div><div style>...............</div>
<div style><div> p->pid = ehci_get_pid(&p->qtd);</div><div> p->queue->last_pid = p->pid;</div><div> endp = get_field(p->queue->qh.epchar, QH_EPCHAR_EP); ///On windows it always return 0</div>
<div style> ///while Linux it will return 0, 1 or 2</div><div> ep = usb_ep_get(p->queue->dev, p->pid, endp);</div><div><br>
</div><div>-------------------------------------------------------------------------------------------</div><div><br></div><div style>i found the qh.epchar read from dma, but can not find who write it, </div><div style>
can you explain it the flow of the function.</div><div style>how doest usbredirect control the dma ?</div><div style><br></div><div style>thanks you tow very much.</div></div><div style><br></div></div></div>