The BeginDataXfer/WaitForXfer/FinishDataXfer is working fine at high throughput (my PC read and process data at 2Gb/s). Now when I have a low throughput of data (<1Gb/s) due to a different FPGA operating mode, the functions WaitForXfer(hEvent, 500) returns 0. And I've tried several options : adding or removing the following functions EndP abort(), Pinvoke.WaitForSingleObject(), FinishDataXfer()... but I'm still stucked and the documentation of CyUSB.NET is not very clear. Help would be precious.

Thanks Madhu but it will ot solve my problem since I may not know the rate of the data pushed by the FPGA which are application dependent (random events with high rate equ. to ~2Gb/s down to very low rate at 1Mb/s). My idea was to use the XferData() function (which work at full throughput) and to reinitiate transfer(s) if a timeout occurs until the user stop the application or a certain total number of bytes have been transferred.

So is there a way to reinitiate properly a XferData() after a timeout without losing data ?

For information, once timeout has occurred, I've tried to call again the XferData() with/without the Abort() function (despite it is explicitly written in the CyUSb prog. reference doc that the XferData() call Abort() in case of timeout) but no way, the XferData() will always return false after that!

I think i have an issue similar to yours. My CYUSB3014 is connected to my FPGA with a 16-bits GPIF interface and a PCLK signal. Any data rate above 32Mb/s will cause XferData()/FinishDataXfer() return false and get stuck, even if Abort() is called. Increasing timeout value doesn't help either. I don't know whether it's firmware's problem or not. Have you made any progress? Thanks.