You are here

DeviceIoControl blocked | Cypress Semiconductor

DeviceIoControl blocked

Summary: 1 Reply, Latest post by scutifer on 17 Dec 2013 03:00 AM PST
Verified Answers: 0
Last post
Log in to post new comments.
zulunation's picture
13 posts


Hi everyone,


I was using an old EZUSB driver with USB 2.0 and there we no problems.

Currently i'm portin the software to a new CYUSB USB 3.0 driver.

The problem is the following:

When I'm trying to receive from a pipe (IOCTL_ADAPT_SEND_NON_EP0_DIRECT) and the pipe is empty the DeviceIOControl blocks. I do IOCTL_ADAPT_ABORT_PIPE from another thread but DeviceIOCOntrol still blocked.

Is there any way to unblock it?

I checked that in an old EZUSB driver the abort pipe command unblocks DeviceIOControl. 

Why abort pipe doesn't help in a new driver?



scutifer's picture
Cypress Employee
134 posts

 You can make it an overlapped operation by opening the device with FILE_FLAG_OVERLAPPED. This will make DeviceIoControl return immediately.

And then use WaitForSingleObject on the overlapped object's hEvent to wait for the operation to be done.


In this case, if there's no data, WaitForSingleObject will return with timeout upon which you can abort using IOCTL_ADAPT_ABORT_PIPE.

Log in to post new comments.