Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/VLC/modules/access/   (VLC Media Plyer ©)  Datei vom 23.9.2026 mit Größe 86 kB image not shown  

Quelle  gpg-error-createfile2.patch  Sprache: unbekannt

 
Spracherkennung für: .patch vermutete Sprache: CS {CS[34] SQL[30] Fortran[24]} [Methode: maximale Elemente, drei Dimensionen]

From 81efaac078270d106ada3dba6268f9d662af4fdd Mon Sep 17 00:00:00 2001
From: Steve Lhomme <robux4@ycbcr.xyz>
Date: Tue, 23 May 2023 14:31:16 +0200
Subject: [PATCH 05/16] use CreateFile2 in Win8 as CreateFileW is forbidden in
 UWP

---
 src/estream.c     | 24 ++++++++++++++++++++++++
 src/spawn-w32.c   | 13 +++++++++++++
 src/w32-gettext.c | 10 ++++++++++
 3 files changed, 47 insertions(+)

diff --git a/src/estream.c b/src/estream.c
index d5965e5..f148d43 100644
--- a/src/estream.c
+++ b/src/estream.c
@@ -2059,6 +2059,17 @@ func_file_create_w32 (void **cookie, HANDLE *rethd, const char *path,
   else
     creation_distribution |= OPEN_EXISTING;
 
+#if _WIN32_WINNT >= 0x0602 // _WIN32_WINNT_WIN8
+  CREATEFILE2_EXTENDED_PARAMETERS createExParams;
+  memset (&createExParams, 0, sizeof(createExParams));
+  createExParams.dwSize = sizeof(CREATEFILE2_EXTENDED_PARAMETERS);
+  createExParams.dwFileFlags = flags_and_attrs;
+  hd = CreateFile2 (wpath,
+                    desired_access,
+                    share_mode,
+                    creation_distribution, 
+                    &createExParams);
+#else
   hd = CreateFileW (wpath,
                     desired_access,
                     share_mode,
@@ -2066,6 +2077,7 @@ func_file_create_w32 (void **cookie, HANDLE *rethd, const char *path,
                     creation_distribution,
                     flags_and_attrs,
                     NULL); /* template file  */
+#endif
   if (hd == INVALID_HANDLE_VALUE)
     {
       _set_errno (map_w32_to_errno (GetLastError ()));
@@ -5167,6 +5179,17 @@ tmpfd (void)
           value <<= 4;
         }
       wcscpy (p, L".tmp");
+#if _WIN32_WINNT >= 0x0602 // _WIN32_WINNT_WIN8
+      CREATEFILE2_EXTENDED_PARAMETERS params;
+      memset (&params, 0, sizeof params);
+      params.dwSize = sizeof(params);
+      params.dwFileFlags = FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSE;
+      file = CreateFile2 (buffer,
+                         GENERIC_READ | GENERIC_WRITE,
+                         0,
+                         CREATE_NEW,
+                         &params);
+#else
       file = CreateFileW (buffer,
                          GENERIC_READ | GENERIC_WRITE,
                          0,
@@ -5174,6 +5197,7 @@ tmpfd (void)
                          CREATE_NEW,
                          FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSE,
                          NULL);
+#endif
       if (file != INVALID_HANDLE_VALUE)
         {
           int fd = _open_osfhandle ((intptr_t)file, 0);
diff --git a/src/spawn-w32.c b/src/spawn-w32.c
index f21991a..70f5833 100644
--- a/src/spawn-w32.c
+++ b/src/spawn-w32.c
@@ -224,10 +224,23 @@ w32_open_null (int for_write, int enable_null_device)
       memset (&sec_attr, 0, sizeof sec_attr );
       sec_attr.nLength = sizeof sec_attr;
       sec_attr.bInheritHandle = TRUE;
+#if _WIN32_WINNT >= 0x0602 // _WIN32_WINNT_WIN8
+    {
+      CREATEFILE2_EXTENDED_PARAMETERS createExParams;
+      memset (&createExParams, 0, sizeof(createExParams));
+      createExParams.dwSize = sizeof(CREATEFILE2_EXTENDED_PARAMETERS);
+      createExParams.lpSecurityAttributes = &sec_attr;
+      hfile = CreateFile2 (L"nul",
+                           for_write? GENERIC_WRITE : GENERIC_READ,
+                           FILE_SHARE_READ | FILE_SHARE_WRITE,
+                           OPEN_EXISTING, &createExParams);
+    }
+#else
       hfile = CreateFileW (L"nul",
                            for_write? GENERIC_WRITE : GENERIC_READ,
                            FILE_SHARE_READ | FILE_SHARE_WRITE,
                            &sec_attr, OPEN_EXISTING, 0, NULL);
+#endif
       if (hfile == INVALID_HANDLE_VALUE)
         _gpgrt_log_debug ("can't open 'nul': ec=%d\n", (int)GetLastError ());
       return hfile;
diff --git a/src/w32-gettext.c b/src/w32-gettext.c
index 980d905..129b730 100644
--- a/src/w32-gettext.c
+++ b/src/w32-gettext.c
@@ -1227,8 +1227,18 @@ load_domain (const char *filename)
     if (!wfilename)
       fh = INVALID_HANDLE_VALUE;
     else
+#if _WIN32_WINNT >= 0x0602 // _WIN32_WINNT_WIN8
+    {
+      CREATEFILE2_EXTENDED_PARAMETERS createExParams;
+      memset (&createExParams, 0, sizeof(createExParams));
+      createExParams.dwSize = sizeof(CREATEFILE2_EXTENDED_PARAMETERS);
+      fh = CreateFile2 (wfilename, GENERIC_READ, FILE_SHARE_WRITE,
+                        OPEN_EXISTING, &createExParams);
+    }
+#else
       fh = CreateFileW (wfilename, GENERIC_READ, FILE_SHARE_WRITE, NULL,
                         OPEN_EXISTING, 0, NULL);
+#endif
     xfree (wfilename);
   }
   if (fh == INVALID_HANDLE_VALUE)
-- 
2.52.0.windows.1


[Dauer der Verarbeitung: 0.3 Sekunden, vorverarbeitet 2026-10-24]