Mike Kaplinskiy : kernel32: Implement CancelIoEx.
Alexandre Julliard
julliard at winehq.org
Tue Aug 18 10:01:27 CDT 2009
Module: wine
Branch: master
Commit: a5c03fbc72f5b084723a7f1181d90731abea8872
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a5c03fbc72f5b084723a7f1181d90731abea8872
Author: Mike Kaplinskiy <mike.kaplinskiy at gmail.com>
Date: Sun Aug 9 00:12:52 2009 -0400
kernel32: Implement CancelIoEx.
---
dlls/kernel32/file.c | 26 ++++++++++++++++++++++++++
dlls/kernel32/kernel32.spec | 1 +
include/winbase.h | 1 +
3 files changed, 28 insertions(+), 0 deletions(-)
diff --git a/dlls/kernel32/file.c b/dlls/kernel32/file.c
index 9742964..d9fbddb 100644
--- a/dlls/kernel32/file.c
+++ b/dlls/kernel32/file.c
@@ -625,6 +625,32 @@ BOOL WINAPI GetOverlappedResult(HANDLE hFile, LPOVERLAPPED lpOverlapped,
}
/***********************************************************************
+ * CancelIoEx (KERNEL32.@)
+ *
+ * Cancels pending I/O operations on a file given the overlapped used.
+ *
+ * PARAMS
+ * handle [I] File handle.
+ * lpOverlapped [I,OPT] pointer to overlapped (if null, cancel all)
+ *
+ * RETURNS
+ * Success: TRUE.
+ * Failure: FALSE, check GetLastError().
+ */
+BOOL WINAPI CancelIoEx(HANDLE handle, LPOVERLAPPED lpOverlapped)
+{
+ IO_STATUS_BLOCK io_status;
+
+ NtCancelIoFileEx(handle, (PIO_STATUS_BLOCK) lpOverlapped, &io_status);
+ if (io_status.u.Status)
+ {
+ SetLastError( RtlNtStatusToDosError( io_status.u.Status ) );
+ return FALSE;
+ }
+ return TRUE;
+}
+
+/***********************************************************************
* CancelIo (KERNEL32.@)
*
* Cancels pending I/O operations initiated by the current thread on a file.
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index 2fd1b10..458a47d 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -177,6 +177,7 @@
@ stdcall CallNamedPipeW(wstr ptr long ptr long ptr long)
@ stub CancelDeviceWakeupRequest
@ stdcall CancelIo(long)
+@ stdcall CancelIoEx(long ptr)
# @ stub CancelTimerQueueTimer
@ stdcall CancelWaitableTimer(long)
@ stdcall ChangeTimerQueueTimer(ptr ptr long long)
diff --git a/include/winbase.h b/include/winbase.h
index 9e52bde..791d58e 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -1323,6 +1323,7 @@ WINBASEAPI BOOL WINAPI CallNamedPipeA(LPCSTR,LPVOID,DWORD,LPVOID,DWORD,LP
WINBASEAPI BOOL WINAPI CallNamedPipeW(LPCWSTR,LPVOID,DWORD,LPVOID,DWORD,LPDWORD,DWORD);
#define CallNamedPipe WINELIB_NAME_AW(CallNamedPipe)
WINBASEAPI BOOL WINAPI CancelIo(HANDLE);
+WINBASEAPI BOOL WINAPI CancelIoEx(HANDLE,LPOVERLAPPED);
WINBASEAPI BOOL WINAPI CancelWaitableTimer(HANDLE);
WINBASEAPI BOOL WINAPI ChangeTimerQueueTimer(HANDLE,HANDLE,ULONG,ULONG);
WINADVAPI BOOL WINAPI CheckTokenMembership(HANDLE,PSID,PBOOL);
More information about the wine-cvs
mailing list