Alternative to CancelIo under Win95

I have built a DLL that can be used for serial communications under NT4 and I want to use it under Win95 also.

If I call to CancelIo() anywhere in the code, the DLL fails to load under Windows 95 (GetLastError returns 31). It works fine under NT4.

The Visual C++ 5.0 help states that this function is not supported under Windows 95 (even though it compiles and links).

Are there any alternative ways to cancel any previous asynchronous Read() and Write() calls under 95?


Jamie Robb
Senior Software Analyst
C-C-C Technology Ltd
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Take a look at the PurgeComm() function.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
JamieRAuthor Commented:
I really need to be able to cancel IO operations on a per thread basis. Purge cancels all operations on the port.

Well, in that case, close the handle to the device you have open.  If the thread opened the device in non-overlapped mode, kill the thread first.
OWASP: Threats Fundamentals

Learn the top ten threats that are present in modern web-application development and how to protect your business from them.

JamieRAuthor Commented:
Again, good answer but the point of the DLL is to let multiple clients access the port. I am using CancelIo to end the asynchronous operations for a particular client before it terminates. There may be other clients available so I can't close the port - if I did I would lose any buffered data.

(This has to be one of the hardest pieces of code I've ever written!)

Hmmmm, in that case I'm out of ideas.  Sorry.
JamieRAuthor Commented:
Wait a mo. The help keeps talking about IO calls on a thread basis when it seems (from trial and error)  that only one thread can start an overlapped operation when a previous operation has completed. If each thread could do it's own read I wouldn't have any of these problems. Any ideas?
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Microsoft Development

From novice to tech pro — start learning today.