crt: Add missing api-ms-win-core-file-l2-1-0

And add missing CopyFileExA and ReadDirectoryChangesW in
api-ms-win-core-file-l2-1-0 or the ansi variant

Signed-off-by: Liu Hao <lh_mouse@126.com>
diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am
index a79d3e2..ed9629b 100644
--- a/mingw-w64-crt/Makefile.am
+++ b/mingw-w64-crt/Makefile.am
@@ -1670,6 +1670,7 @@
 		%/libapi-ms-win-core-errorhandling-l1-1-3.a \
 		%/libapi-ms-win-core-fibers-l1-1-1.a \
 		%/libapi-ms-win-core-file-l1-2-1.a \
+		%/libapi-ms-win-core-file-l2-1-0.a \
 		%/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 \
@@ -1762,6 +1763,7 @@
 		%/libapi-ms-win-core-fibers-l2-1-1.a \
 		%/libapi-ms-win-core-file-ansi-l2-1-0.a \
 		%/libapi-ms-win-core-file-l1-2-1.a \
+		%/libapi-ms-win-core-file-l2-1-0.a \
 		%/libapi-ms-win-core-file-l2-1-1.a \
 		%/libapi-ms-win-core-handle-l1-1-0.a \
 		%/libapi-ms-win-core-heap-l1-2-0.a \
diff --git a/mingw-w64-crt/lib-common/api-ms-win-core-file-ansi-l2-1-0.def b/mingw-w64-crt/lib-common/api-ms-win-core-file-ansi-l2-1-0.def
index 4092a73..435f600 100644
--- a/mingw-w64-crt/lib-common/api-ms-win-core-file-ansi-l2-1-0.def
+++ b/mingw-w64-crt/lib-common/api-ms-win-core-file-ansi-l2-1-0.def
@@ -3,3 +3,4 @@
 EXPORTS
 
 ReplaceFileA
+CopyFileExA
diff --git a/mingw-w64-crt/lib-common/api-ms-win-core-file-l2-1-0.def b/mingw-w64-crt/lib-common/api-ms-win-core-file-l2-1-0.def
new file mode 100644
index 0000000..307e7c7
--- /dev/null
+++ b/mingw-w64-crt/lib-common/api-ms-win-core-file-l2-1-0.def
@@ -0,0 +1,6 @@
+LIBRARY api-ms-win-core-file-l1-2-0
+
+EXPORTS
+
+CopyFileExW
+ReadDirectoryChangesW
diff --git a/mingw-w64-crt/lib-common/mincore.mri b/mingw-w64-crt/lib-common/mincore.mri
index 4c62b66..a1e998d 100644
--- a/mingw-w64-crt/lib-common/mincore.mri
+++ b/mingw-w64-crt/lib-common/mincore.mri
@@ -21,11 +21,12 @@
 ADDLIB libapi-ms-win-core-errorhandling-l1-1-3.a
 ; FIXME libapi-ms-win-core-fibers-l1-1-0.a
 ADDLIB libapi-ms-win-core-fibers-l1-1-1.a
+ADDLIB libapi-ms-win-core-file-ansi-l2-1-0.a
 ; FIXME libapi-ms-win-core-file-l1-1-0.a
 ; FIXME libapi-ms-win-core-file-l1-2-0.a
 ADDLIB libapi-ms-win-core-file-l1-2-1.a
 ; FIXME libapi-ms-win-core-file-l1-2-2.a
-; FIXME libapi-ms-win-core-file-l2-1-0.a
+ADDLIB libapi-ms-win-core-file-l2-1-0.a
 ADDLIB libapi-ms-win-core-file-l2-1-1.a
 ; FIXME libapi-ms-win-core-file-l2-1-2.a
 ; FIXME libapi-ms-win-core-file-l2-1-3.a
diff --git a/mingw-w64-crt/lib-common/windowsapp.mri b/mingw-w64-crt/lib-common/windowsapp.mri
index aefadef..863e6bd 100644
--- a/mingw-w64-crt/lib-common/windowsapp.mri
+++ b/mingw-w64-crt/lib-common/windowsapp.mri
@@ -13,6 +13,7 @@
 ADDLIB libapi-ms-win-core-fibers-l2-1-1.a
 ADDLIB libapi-ms-win-core-file-ansi-l2-1-0.a
 ADDLIB libapi-ms-win-core-file-l1-2-1.a
+ADDLIB libapi-ms-win-core-file-l2-1-0.a
 ADDLIB libapi-ms-win-core-file-l2-1-1.a
 ADDLIB libapi-ms-win-core-handle-l1-1-0.a
 ADDLIB libapi-ms-win-core-heap-l1-2-0.a
diff --git a/mingw-w64-crt/lib32/api-ms-win-core-file-ansi-l2-1-0.def b/mingw-w64-crt/lib32/api-ms-win-core-file-ansi-l2-1-0.def
index 271479c..9cbbc7e 100644
--- a/mingw-w64-crt/lib32/api-ms-win-core-file-ansi-l2-1-0.def
+++ b/mingw-w64-crt/lib32/api-ms-win-core-file-ansi-l2-1-0.def
@@ -3,3 +3,4 @@
 EXPORTS
 
 ReplaceFileA@24
+CopyFileExA@24
diff --git a/mingw-w64-crt/lib32/api-ms-win-core-file-l2-1-0.def b/mingw-w64-crt/lib32/api-ms-win-core-file-l2-1-0.def
new file mode 100644
index 0000000..31aaabd
--- /dev/null
+++ b/mingw-w64-crt/lib32/api-ms-win-core-file-l2-1-0.def
@@ -0,0 +1,6 @@
+LIBRARY api-ms-win-core-file-l1-2-0
+
+EXPORTS
+
+CopyFileExW@24
+ReadDirectoryChangesW@32
diff --git a/mingw-w64-headers/include/winbase.h b/mingw-w64-headers/include/winbase.h
index cdae61d..bcfa0eb 100644
--- a/mingw-w64-headers/include/winbase.h
+++ b/mingw-w64-headers/include/winbase.h
@@ -1989,15 +1989,20 @@
 #endif
 #endif
 
-#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) || _WIN32_WINNT >= _WIN32_WINNT_WIN10
   typedef DWORD (WINAPI *LPPROGRESS_ROUTINE) (LARGE_INTEGER TotalFileSize, LARGE_INTEGER TotalBytesTransferred, LARGE_INTEGER StreamSize, LARGE_INTEGER StreamBytesTransferred, DWORD dwStreamNumber, DWORD dwCallbackReason, HANDLE hSourceFile, HANDLE hDestinationFile, LPVOID lpData);
 
+  WINBASEAPI WINBOOL WINAPI CopyFileExA (LPCSTR lpExistingFileName, LPCSTR lpNewFileName, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, LPBOOL pbCancel, DWORD dwCopyFlags);
+  WINBASEAPI WINBOOL WINAPI CopyFileExW (LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, LPBOOL pbCancel, DWORD dwCopyFlags);
+
+#define CopyFileEx __MINGW_NAME_AW(CopyFileEx)
+#endif
+
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
   WINBASEAPI WINBOOL WINAPI CheckNameLegalDOS8Dot3A (LPCSTR lpName, LPSTR lpOemName, DWORD OemNameSize, PBOOL pbNameContainsSpaces, PBOOL pbNameLegal);
   WINBASEAPI WINBOOL WINAPI CheckNameLegalDOS8Dot3W (LPCWSTR lpName, LPSTR lpOemName, DWORD OemNameSize, PBOOL pbNameContainsSpaces, PBOOL pbNameLegal);
   WINBASEAPI WINBOOL WINAPI CopyFileA (LPCSTR lpExistingFileName, LPCSTR lpNewFileName, WINBOOL bFailIfExists);
   WINBASEAPI WINBOOL WINAPI CopyFileW (LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName, WINBOOL bFailIfExists);
-  WINBASEAPI WINBOOL WINAPI CopyFileExA (LPCSTR lpExistingFileName, LPCSTR lpNewFileName, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, LPBOOL pbCancel, DWORD dwCopyFlags);
-  WINBASEAPI WINBOOL WINAPI CopyFileExW (LPCWSTR lpExistingFileName, LPCWSTR lpNewFileName, LPPROGRESS_ROUTINE lpProgressRoutine, LPVOID lpData, LPBOOL pbCancel, DWORD dwCopyFlags);
 
 #if _WIN32_WINNT >= 0x0600
   WINBASEAPI HANDLE WINAPI FindFirstFileTransactedA (LPCSTR lpFileName, FINDEX_INFO_LEVELS fInfoLevelId, LPVOID lpFindFileData, FINDEX_SEARCH_OPS fSearchOp, LPVOID lpSearchFilter, DWORD dwAdditionalFlags, HANDLE hTransaction);
@@ -2011,7 +2016,6 @@
 
 #define CheckNameLegalDOS8Dot3 __MINGW_NAME_AW(CheckNameLegalDOS8Dot3)
 #define CopyFile __MINGW_NAME_AW(CopyFile)
-#define CopyFileEx __MINGW_NAME_AW(CopyFileEx)
 
 #endif
 
@@ -2297,6 +2301,14 @@
   WINADVAPI WINBOOL WINAPI OperationEnd (OPERATION_END_PARAMETERS *OperationEndParams);
 #endif
 
+#endif
+
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP) || _WIN32_WINNT >= _WIN32_WINNT_WIN10
+  WINBASEAPI WINBOOL WINAPI ReadDirectoryChangesW (HANDLE hDirectory, LPVOID lpBuffer, DWORD nBufferLength, WINBOOL bWatchSubtree, DWORD dwNotifyFilter, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped, LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
+#endif
+
+#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
+
   WINADVAPI WINBOOL WINAPI AccessCheckAndAuditAlarmA (LPCSTR SubsystemName, LPVOID HandleId, LPSTR ObjectTypeName, LPSTR ObjectName, PSECURITY_DESCRIPTOR SecurityDescriptor, DWORD DesiredAccess, PGENERIC_MAPPING GenericMapping, WINBOOL ObjectCreation, LPDWORD GrantedAccess, LPBOOL AccessStatus, LPBOOL pfGenerateOnClose);
   WINADVAPI WINBOOL WINAPI AccessCheckByTypeAndAuditAlarmA (LPCSTR SubsystemName, LPVOID HandleId, LPCSTR ObjectTypeName, LPCSTR ObjectName, PSECURITY_DESCRIPTOR SecurityDescriptor, PSID PrincipalSelfSid, DWORD DesiredAccess, AUDIT_EVENT_TYPE AuditType, DWORD Flags, POBJECT_TYPE_LIST ObjectTypeList, DWORD ObjectTypeListLength, PGENERIC_MAPPING GenericMapping, WINBOOL ObjectCreation, LPDWORD GrantedAccess, LPBOOL AccessStatus, LPBOOL pfGenerateOnClose);
   WINADVAPI WINBOOL WINAPI AccessCheckByTypeResultListAndAuditAlarmA (LPCSTR SubsystemName, LPVOID HandleId, LPCSTR ObjectTypeName, LPCSTR ObjectName, PSECURITY_DESCRIPTOR SecurityDescriptor, PSID PrincipalSelfSid, DWORD DesiredAccess, AUDIT_EVENT_TYPE AuditType, DWORD Flags, POBJECT_TYPE_LIST ObjectTypeList, DWORD ObjectTypeListLength, PGENERIC_MAPPING GenericMapping, WINBOOL ObjectCreation, LPDWORD GrantedAccess, LPDWORD AccessStatusList, LPBOOL pfGenerateOnClose);
@@ -2308,7 +2320,6 @@
   WINADVAPI WINBOOL WINAPI PrivilegedServiceAuditAlarmA (LPCSTR SubsystemName, LPCSTR ServiceName, HANDLE ClientToken, PPRIVILEGE_SET Privileges, WINBOOL AccessGranted);
   WINADVAPI WINBOOL WINAPI SetFileSecurityA (LPCSTR lpFileName, SECURITY_INFORMATION SecurityInformation, PSECURITY_DESCRIPTOR pSecurityDescriptor);
   WINADVAPI WINBOOL WINAPI GetFileSecurityA (LPCSTR lpFileName, SECURITY_INFORMATION RequestedInformation, PSECURITY_DESCRIPTOR pSecurityDescriptor, DWORD nLength, LPDWORD lpnLengthNeeded);
-  WINBASEAPI WINBOOL WINAPI ReadDirectoryChangesW (HANDLE hDirectory, LPVOID lpBuffer, DWORD nBufferLength, WINBOOL bWatchSubtree, DWORD dwNotifyFilter, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped, LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
   WINBASEAPI WINBOOL WINAPI IsBadReadPtr (CONST VOID *lp, UINT_PTR ucb);
   WINBASEAPI WINBOOL WINAPI IsBadWritePtr (LPVOID lp, UINT_PTR ucb);
   WINBASEAPI WINBOOL WINAPI IsBadHugeReadPtr (CONST VOID *lp, UINT_PTR ucb);