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