summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPete Batard <pbatard@gmail.com>2010-03-15 14:02:34 +0000
committerPete Batard <pbatard@gmail.com>2010-03-15 14:02:34 +0000
commitc59642ea6470fd839b19c5ee7298cb677a73f8b2 (patch)
treeaf243867fad82d079d94497f05212d76365baacb
parenta17c6adefd79876b3ddf65128074d58922d274a0 (diff)
downloadlibusb-c198.tar.gz
removed cancel_io call protectionc198
-rw-r--r--libusb/os/poll_windows.c19
1 files changed, 5 insertions, 14 deletions
diff --git a/libusb/os/poll_windows.c b/libusb/os/poll_windows.c
index 9f66d44..eb06e94 100644
--- a/libusb/os/poll_windows.c
+++ b/libusb/os/poll_windows.c
@@ -272,9 +272,7 @@ void exit_polling(void)
for (i=0; i<MAX_FDS; i++) {
// Cancel any async I/O (handle can be invalid)
- if (!HasOverlappedIoCompleted(poll_fd[i].overlapped)) {
- cancel_io(i);
- }
+ cancel_io(i);
// If anything was pending on that I/O, it should be
// terminating, and we should be able to access the fd
// mutex lock before too long
@@ -305,9 +303,8 @@ void exit_polling(void)
__inline void _init_read_marker(int index)
{
// Cancel any read operation in progress
- if (!HasOverlappedIoCompleted(poll_fd[index].overlapped)) {
- cancel_io(index);
- }
+ cancel_io(index);
+
// Setup a new async read on our marker
reset_overlapped(poll_fd[index].overlapped);
if (!ReadFile(poll_fd[index].handle, &_poll_fd[index].marker, 1, NULL, poll_fd[index].overlapped)) {
@@ -520,14 +517,8 @@ struct winfd usbi_create_fd(HANDLE handle, int access_mode)
void _free_index(int index)
{
// Cancel any async IO (Don't care about the validity of our handles for this)
- // This could cause a problem with the libusb0.sys back end and there is
- // no CancelIoEx(), because we may be in a different thread to the
- // one that is using this fd, and we could kill another threads
- // io by mistake!
- //
- if (!HasOverlappedIoCompleted(poll_fd[index].overlapped)) {
- cancel_io(index);
- }
+ cancel_io(index);
+
// close fake handle for devices
if ( (poll_fd[index].handle != INVALID_HANDLE_VALUE) && (poll_fd[index].handle != 0)
&& (GetFileType(poll_fd[index].handle) == FILE_TYPE_UNKNOWN) ) {