1From a9024bd18ce20653616e04702b5e220de56b6b2c Mon Sep 17 00:00:00 2001
2From: Steve Lhomme <robux4@ycbcr.xyz>
3Date: Fri, 15 May 2020 09:32:21 +0200
4Subject: [PATCH 3/3] don't use CreateFile in UWP builds
5
6CreateFile2 is available for such builds with more internal restrictions.
7
8See https://docs.microsoft.com/en-us/uwp/win32-and-com/win32-apis
9https://docs.microsoft.com/en-us/windows/win32/api/fileapi/nf-fileapi-createfile2
10---
11 taglib/toolkit/tfilestream.cpp | 13 +++++++++++++
12 1 file changed, 13 insertions(+)
13
14diff --git a/taglib/toolkit/tfilestream.cpp b/taglib/toolkit/tfilestream.cpp
15index ad4443ea..10cd8d56 100644
16--- a/taglib/toolkit/tfilestream.cpp
17+++ b/taglib/toolkit/tfilestream.cpp
18@@ -52,9 +52,22 @@ namespace
19     const DWORD access = readOnly ? GENERIC_READ : (GENERIC_READ | GENERIC_WRITE);
20
21     if(!path.wstr().empty())
22+#if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
23+    {
24+      CREATEFILE2_EXTENDED_PARAMETERS createExParams;
25+      createExParams.dwSize = sizeof(createExParams);
26+      createExParams.dwFileAttributes = FILE_ATTRIBUTE_NORMAL;
27+      createExParams.dwFileFlags = 0;
28+      createExParams.dwSecurityQosFlags = 0;
29+      createExParams.lpSecurityAttributes = NULL;
30+      createExParams.hTemplateFile = NULL;
31+      return CreateFile2(path.wstr().c_str(), access, FILE_SHARE_READ, OPEN_EXISTING, &createExParams);
32+    }
33+#else // WINAPI_PARTITION_DESKTOP
34       return CreateFileW(path.wstr().c_str(), access, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
35     else if(!path.str().empty())
36       return CreateFileA(path.str().c_str(), access, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
37+#endif // WINAPI_PARTITION_DESKTOP
38     else
39       return InvalidFileHandle;
40   }
41--
422.26.0.windows.1
43
44