
On 2/21/2010 11:05 PM, eg wrote:
Shortly thereafter is a call to SetFilePointer. The docs say that the proper way to check for an error from SetFilePointer is to compare its return value to INVALID_SET_VALUE_POINTER.
http://msdn.microsoft.com/en-us/library/aa365541%28VS.85%29.aspx
According to the docs... that seems to only be true if the 3rd parameter is NULL.
Otherwise: "If function succeeds and lpDistanceToMoveHigh is not NULL, the return value is the low-order DWORD of the new file pointer and lpDistanceToMoveHigh contains the high order DWORD of the new file pointer."
Oops... I forgot to add the next line in the quote, which makes my point more understandable: "If the function fails, the return value is INVALID_SET_FILE_POINTER. To get extended error information, call GetLastError." I was just trying to point out there is a case in which GetLastError() should be called. The remarks section shows sample code such as the following: // Try to move hFile file pointer a huge distance DWORD dwPtrLow = SetFilePointer( hFile, lDistLow, &lDistHigh, FILE_BEGIN ); // Test for failure if ( dwPtrLow == INVALID_SET_FILE_POINTER && GetLastError() != NO_ERROR ) { // Deal with failure // . . . } // End of error handler