1. You can setup a counter in DMA producer event and decrement it in the DMA Consumer event. This tells whether there is any data left in the DMA memory (DMA buffer) NOT the endpoint memory. Looks like there is no API to read whether there is any data in the Endpoint memory. It is good to reset the endpoint and DMA buffer when there is suspend and resume of data flow.
2. Please refer CyFxUvcApplnStop in the AN75779. This handles the stopping the GPIF, clearing the DMA and Endpoint memory. You can implement the same in your code. Also refer CyFxUvcApplnStart.