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