Very Odd problem with bulk write | Cypress Semiconductor
Very Odd problem with bulk write
The BulkOutEndPt->XferData method returns with no error and shows the proper number of bytes transfered, but no bytes are actually sent. I've confirmed this with a USB trace that shows that no bytes transfer. On investigation, the URB is formed with the correct byte count but with a buffer value of zero.
When I use a direct IOCTL to the driver using the older IOCTL, IOCTL_ADAPT_SEND_NON_EP0_TRANSFER, rather than the new IOCTL_ADAPT_SEND_NON_EP0_DIRECT, bytes are sent successfully. A direct call to the new IOCTL fails the same as the library call.
I've got an open case on this and my code has been reviewed by Cypress with with no errors. I'm positively stumped since I assume this works for everybody else in the world but me and my client. I've tested it on multiple machines with no success. The test code I sent Cypress worked fine for them but fails for me.
Although the code for the client is in a DLL and somewhat complicated, my simplest test case is a simple .exe that uses the cypress library to just open the device do an XferData.
The client's target is a vanilla implementation based on CY7C64713-128AXC and I develop on Windows 7, x64 although the code has been tested at my client's on x32 bit and WinXP.
I'm no longer roadblocked since the direct IOCTL works OK, but I sure would like to understand the problem. I assume It must be something environmental,
Any thoughts would be appreciated.