Module: wine Branch: master Commit: b4abe2010b90333bc00ef32245c5b3f235012d77 URL: https://source.winehq.org/git/wine.git/?a=commit;h=b4abe2010b90333bc00ef3224...
Author: Jacek Caban jacek@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@codeweavers.com Signed-off-by: Huw Davies huw@codeweavers.com Signed-off-by: Alexandre Julliard julliard@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) ); } }