GetFileSizeEx

Rob Crittenden <[email protected]> Wed, 28 Jun 2006 16:35:36 -0400
Newsgroups gmane.comp.emulators.winex.devel
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--------------020803020806050709000101
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Another easy one, GetFileSizeEx(). I modified GetFileSize() to call this.

rob

--------------020803020806050709000101
Content-Type: text/x-diff;
 name="getsize.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="getsize.diff"

Index: dlls/kernel/kernel32.spec
===================================================================
RCS file: /cvsroot/winex/dlls/kernel/kernel32.spec,v
retrieving revision 1.8
diff -u -r1.8 kernel32.spec
--- dlls/kernel/kernel32.spec	15 Nov 2004 15:35:11 -0000	1.8
+++ dlls/kernel/kernel32.spec	28 Jun 2006 19:33:05 -0000
@@ -380,7 +380,7 @@
 @ stdcall GetFileAttributesW(wstr) GetFileAttributesW
 @ stdcall GetFileInformationByHandle(long ptr) GetFileInformationByHandle
 @ stdcall GetFileSize(long ptr) GetFileSize
-@ stub GetFileSizeEx
+@ stdcall GetFileSizeEx(long ptr) GetFileSizeEx
 @ stdcall GetFileTime(long ptr ptr ptr) GetFileTime
 @ stdcall GetFileType(long) GetFileType
 @ stdcall GetFullPathNameA(str long ptr ptr) GetFullPathNameA
Index: files/file.c
===================================================================
RCS file: /cvsroot/winex/files/file.c,v
retrieving revision 1.31
diff -u -r1.31 file.c
--- files/file.c	9 Jan 2006 18:26:25 -0000	1.31
+++ files/file.c	28 Jun 2006 19:33:08 -0000
@@ -894,14 +894,29 @@
 
 
 /***********************************************************************
+ *           GetFileSizeEx   (KERNEL32.@)
+ */
+BOOL WINAPI GetFileSizeEx( HANDLE hFile, PLARGE_INTEGER lpFileSize )
+{
+    BY_HANDLE_FILE_INFORMATION info;
+    if (!GetFileInformationByHandle( hFile, &info )) return FALSE;
+    lpFileSize->u.HighPart = info.nFileSizeHigh;
+    lpFileSize->u.LowPart = info.nFileSizeLow;
+    return TRUE;
+}
+
+
+/***********************************************************************
  *           GetFileSize   (KERNEL32.@)
  */
 DWORD WINAPI GetFileSize( HANDLE hFile, LPDWORD filesizehigh )
 {
-    BY_HANDLE_FILE_INFORMATION info;
-    if (!GetFileInformationByHandle( hFile, &info )) return -1;
-    if (filesizehigh) *filesizehigh = info.nFileSizeHigh;
-    return info.nFileSizeLow;
+    LARGE_INTEGER filesize;
+    if (GetFileSizeEx(hFile, &filesize) == FALSE)
+         return INVALID_FILE_SIZE;
+    if (filesizehigh)
+        *filesizehigh = filesize.u.HighPart;
+    return filesize.u.LowPart;
 }
 
 

--------------020803020806050709000101--