Add missing IO function
Some of the api-ms-win-core-io-l1-1-1.dll functions were not available
on x86_64 & aarch64 builds.
Add DeviceIoControl function through api-ms-win-core-io-l1-1-0.dll
And udpate the headers accordingly
Signed-off-by: Liu Hao <lh_mouse@126.com>
diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am
index ed9629b..1bce912 100644
--- a/mingw-w64-crt/Makefile.am
+++ b/mingw-w64-crt/Makefile.am
@@ -1674,6 +1674,7 @@
%/libapi-ms-win-core-file-l2-1-1.a \
%/libapi-ms-win-core-handle-l1-1-0.a \
%/libapi-ms-win-core-interlocked-l1-2-0.a \
+ %/libapi-ms-win-core-io-l1-1-0.a \
%/libapi-ms-win-core-io-l1-1-1.a \
%/libapi-ms-win-core-libraryloader-l1-2-0.a \
%/libapi-ms-win-core-libraryloader-l2-1-0.a \
diff --git a/mingw-w64-crt/lib-common/api-ms-win-core-io-l1-1-0.def b/mingw-w64-crt/lib-common/api-ms-win-core-io-l1-1-0.def
new file mode 100644
index 0000000..10b922e
--- /dev/null
+++ b/mingw-w64-crt/lib-common/api-ms-win-core-io-l1-1-0.def
@@ -0,0 +1,5 @@
+LIBRARY api-ms-win-core-io-l1-1-0
+
+EXPORTS
+
+DeviceIoControl
diff --git a/mingw-w64-crt/lib-common/api-ms-win-core-io-l1-1-1.def b/mingw-w64-crt/lib-common/api-ms-win-core-io-l1-1-1.def
index 37cf0cc..0a8f691 100644
--- a/mingw-w64-crt/lib-common/api-ms-win-core-io-l1-1-1.def
+++ b/mingw-w64-crt/lib-common/api-ms-win-core-io-l1-1-1.def
@@ -4,3 +4,9 @@
CancelIoEx
GetOverlappedResultEx
+CancelIo
+CreateIoCompletionPort
+GetOverlappedResult
+GetQueuedCompletionStatus
+GetQueuedCompletionStatusEx
+PostQueuedCompletionStatus
diff --git a/mingw-w64-crt/lib-common/mincore.mri b/mingw-w64-crt/lib-common/mincore.mri
index a1e998d..7ffefff 100644
--- a/mingw-w64-crt/lib-common/mincore.mri
+++ b/mingw-w64-crt/lib-common/mincore.mri
@@ -36,7 +36,7 @@
; FIXME libapi-ms-win-core-heap-l2-1-0.a
; FIXME libapi-ms-win-core-interlocked-l1-1-0.a
ADDLIB libapi-ms-win-core-interlocked-l1-2-0.a
-; FIXME libapi-ms-win-core-io-l1-1-0.a
+ADDLIB libapi-ms-win-core-io-l1-1-0.a
ADDLIB libapi-ms-win-core-io-l1-1-1.a
; FIXME libapi-ms-win-core-job-l1-1-0.a
ADDLIB libapi-ms-win-core-libraryloader-l1-2-0.a
diff --git a/mingw-w64-crt/lib-common/windowsapp.mri b/mingw-w64-crt/lib-common/windowsapp.mri
index 863e6bd..2ff1d6d 100644
--- a/mingw-w64-crt/lib-common/windowsapp.mri
+++ b/mingw-w64-crt/lib-common/windowsapp.mri
@@ -18,6 +18,7 @@
ADDLIB libapi-ms-win-core-handle-l1-1-0.a
ADDLIB libapi-ms-win-core-heap-l1-2-0.a
ADDLIB libapi-ms-win-core-interlocked-l1-2-0.a
+ADDLIB libapi-ms-win-core-io-l1-1-0.a
ADDLIB libapi-ms-win-core-io-l1-1-1.a
ADDLIB libapi-ms-win-core-kernel32-legacy-l1-1-0.a
ADDLIB libapi-ms-win-core-kernel32-legacy-l1-1-1.a
diff --git a/mingw-w64-crt/lib32/api-ms-win-core-io-l1-1-0.def b/mingw-w64-crt/lib32/api-ms-win-core-io-l1-1-0.def
new file mode 100644
index 0000000..2eb56cd
--- /dev/null
+++ b/mingw-w64-crt/lib32/api-ms-win-core-io-l1-1-0.def
@@ -0,0 +1,5 @@
+LIBRARY api-ms-win-core-io-l1-1-0
+
+EXPORTS
+
+DeviceIoControl@32
diff --git a/mingw-w64-headers/include/ioapiset.h b/mingw-w64-headers/include/ioapiset.h
index f8953b0..d7f6606 100644
--- a/mingw-w64-headers/include/ioapiset.h
+++ b/mingw-w64-headers/include/ioapiset.h
@@ -14,22 +14,27 @@
extern "C" {
#endif
-#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) || _WIN32_WINNT >= _WIN32_WINNT_WIN10
WINBASEAPI WINBOOL WINAPI GetOverlappedResult (HANDLE hFile, LPOVERLAPPED lpOverlapped, LPDWORD lpNumberOfBytesTransferred, WINBOOL bWait);
WINBASEAPI HANDLE WINAPI CreateIoCompletionPort (HANDLE FileHandle, HANDLE ExistingCompletionPort, ULONG_PTR CompletionKey, DWORD NumberOfConcurrentThreads);
WINBASEAPI WINBOOL WINAPI GetQueuedCompletionStatus (HANDLE CompletionPort, LPDWORD lpNumberOfBytesTransferred, PULONG_PTR lpCompletionKey, LPOVERLAPPED *lpOverlapped, DWORD dwMilliseconds);
WINBASEAPI WINBOOL WINAPI PostQueuedCompletionStatus (HANDLE CompletionPort, DWORD dwNumberOfBytesTransferred, ULONG_PTR dwCompletionKey, LPOVERLAPPED lpOverlapped);
WINBASEAPI WINBOOL WINAPI DeviceIoControl (HANDLE hDevice, DWORD dwIoControlCode, LPVOID lpInBuffer, DWORD nInBufferSize, LPVOID lpOutBuffer, DWORD nOutBufferSize, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped);
WINBASEAPI WINBOOL WINAPI CancelIo (HANDLE hFile);
+ WINBASEAPI WINBOOL WINAPI GetOverlappedResultEx (HANDLE hFile, LPOVERLAPPED lpOverlapped, LPDWORD lpNumberOfBytesTransferred, DWORD dwMilliseconds, WINBOOL bAlertable);
#if _WIN32_WINNT >= 0x0600
WINBASEAPI WINBOOL WINAPI GetQueuedCompletionStatusEx (HANDLE CompletionPort, LPOVERLAPPED_ENTRY lpCompletionPortEntries, ULONG ulCount, PULONG ulNumEntriesRemoved, DWORD dwMilliseconds, WINBOOL fAlertable);
WINBASEAPI WINBOOL WINAPI CancelIoEx (HANDLE hFile, LPOVERLAPPED lpOverlapped);
- WINBASEAPI WINBOOL WINAPI CancelSynchronousIo (HANDLE hThread);
+#if _WIN32_WINNT >= _WIN32_WINNT_WIN8
+ WINBASEAPI WINBOOL WINAPI GetOverlappedResultEx (HANDLE hFile, LPOVERLAPPED lpOverlapped, LPDWORD lpNumberOfBytesTransferred, DWORD dwMilliseconds, WINBOOL bAlertable);
+#endif
#endif
#endif
#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_APP)
- WINBASEAPI WINBOOL WINAPI GetOverlappedResultEx (HANDLE hFile, LPOVERLAPPED lpOverlapped, LPDWORD lpNumberOfBytesTransferred, DWORD dwMilliseconds, WINBOOL bAlertable);
+#if _WIN32_WINNT >= 0x0600
+ WINBASEAPI WINBOOL WINAPI CancelSynchronousIo (HANDLE hThread);
+#endif
#endif
#ifdef __cplusplus