summaryrefslogtreecommitdiff
path: root/src/share/win_utf8_io/win_utf8_io.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/share/win_utf8_io/win_utf8_io.c')
-rw-r--r--src/share/win_utf8_io/win_utf8_io.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/share/win_utf8_io/win_utf8_io.c b/src/share/win_utf8_io/win_utf8_io.c
index 120d1ec7..a133254d 100644
--- a/src/share/win_utf8_io/win_utf8_io.c
+++ b/src/share/win_utf8_io/win_utf8_io.c
@@ -155,7 +155,18 @@ HANDLE WINAPI CreateFile_utf8(const char *lpFileName, DWORD dwDesiredAccess, DWO
HANDLE handle = INVALID_HANDLE_VALUE;
if ((wname = wchar_from_utf8(lpFileName)) != NULL) {
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
handle = CreateFileW(wname, dwDesiredAccess, dwShareMode, lpSecurityAttributes, dwCreationDisposition, dwFlagsAndAttributes, hTemplateFile);
+#else // !WINAPI_PARTITION_DESKTOP
+ CREATEFILE2_EXTENDED_PARAMETERS params;
+ params.dwSize = sizeof(params);
+ params.dwFileAttributes = dwFlagsAndAttributes & 0xFFFF;
+ params.dwFileFlags = dwFlagsAndAttributes & 0xFFF00000;
+ params.dwSecurityQosFlags = dwFlagsAndAttributes & 0x000F0000;
+ params.lpSecurityAttributes = lpSecurityAttributes;
+ params.hTemplateFile = hTemplateFile;
+ handle = CreateFile2(wname, dwDesiredAccess, dwShareMode, dwCreationDisposition, &params);
+#endif // !WINAPI_PARTITION_DESKTOP
free(wname);
}