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/g...
regards,