Andreas Mohr wrote:
            FIXME("Unhandled Verb %xl\n",LOWORD(lpcmi->lpVerb));

What kind of format specifier is that supposed to be?
I don't know that one...
Maybe use %p instead? (or %lx??)
This statement should be %lx. However, this statement is _not_ part of my patch.

   if (GetFileSize(hFile, NULL) == 0xFFFFFFFF)
   {
       CloseHandle(hFile);
       return FALSE;
   }

   dwFileLo = GetFileSize(hFile, &dwFileHi);
   CloseHandle(hFile);

if (dwFileLo == 0xFFFFFFFF && GetLastError() != NO_ERROR) return FALSE;

This whole check sounds very weird.
Why are you checking with NULL hiword when there might be a > 4GB file?
(and to make it worse, even one with e.g. a size of 0x12345678FFFFFFFF !!!!!!)
And directly after that even doing a full large file check **again**?
Not to mention that you're not using the INVALID_FILE_SIZE macro that I really,
really think should be used since it's been created *exactly* for this purpose
(and for the even better purpose of *never* managing to write/edit/delete a
0xFFFFFF or 0xFFFFFFF instead...)

I agree that the INVALID_FILE_SIZE should be used. However, INVALID_FILE_SIZE macro is exactly 0xFFFFFFFF. Furthermore, this code does work with file sizes of 0x12345678FFFFFFFF. Have a look at the MSDN documentation[1]. Alternatively, GetFileSizeEx could be used.


Andreas


[1] http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fs/getfilesize.asp

regards,

--
Johannes Anderwald



Reply via email to