Jacek Caban : gdi32: Use NtQueryFullAttributesFile directly in alloc_gdi_font.

Alexandre Julliard julliard at winehq.org
Tue Sep 21 15:59:03 CDT 2021


Module: wine
Branch: master
Commit: b4abe2010b90333bc00ef32245c5b3f235012d77
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=b4abe2010b90333bc00ef32245c5b3f235012d77

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Sep 21 15:54:04 2021 +0200

gdi32: Use NtQueryFullAttributesFile directly in alloc_gdi_font.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/gdi32/font.c | 22 ++++++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)

diff --git a/dlls/gdi32/font.c b/dlls/gdi32/font.c
index acf281abcea..a0da2a385ca 100644
--- a/dlls/gdi32/font.c
+++ b/dlls/gdi32/font.c
@@ -1713,11 +1713,25 @@ static struct gdi_font *alloc_gdi_font( const WCHAR *file, void *data_ptr, SIZE_
 
     if (file)
     {
-        WIN32_FILE_ATTRIBUTE_DATA info;
-        if (GetFileAttributesExW( file, GetFileExInfoStandard, &info ))
+        FILE_NETWORK_OPEN_INFORMATION info;
+        UNICODE_STRING nt_name;
+        OBJECT_ATTRIBUTES attr;
+
+        nt_name.Buffer = (WCHAR *)file;
+        nt_name.Length = nt_name.MaximumLength = len * sizeof(WCHAR);
+
+        attr.Length = sizeof(attr);
+        attr.RootDirectory = 0;
+        attr.Attributes = OBJ_CASE_INSENSITIVE;
+        attr.ObjectName = &nt_name;
+        attr.SecurityDescriptor = NULL;
+        attr.SecurityQualityOfService = NULL;
+
+        if (!NtQueryFullAttributesFile( &attr, &info ))
         {
-            font->writetime = info.ftLastWriteTime;
-            font->data_size = (LONGLONG)info.nFileSizeHigh << 32 | info.nFileSizeLow;
+            font->writetime.dwLowDateTime  = info.LastWriteTime.LowPart;
+            font->writetime.dwHighDateTime = info.LastWriteTime.HighPart;
+            font->data_size = info.EndOfFile.QuadPart;
             memcpy( font->file, file, len * sizeof(WCHAR) );
         }
     }




More information about the wine-cvs mailing list