Ваш код неправильно звонит GetLastError
.Вы должны вызывать GetLastError
только в том случае, если непосредственно предшествующий вызов Win32 API не удался, и этот API возвращает информацию о состоянии через GetLastError
.
Здесь речь идет об API ReadFile
.Документация гласит:
Возвращаемое значение
Если функция завершается успешно, возвращаемое значение отлично от нуля ( TRUE ).
Если функция завершается ошибкой или завершается асинхронно, возвращаемое значение равно нулю ( FALSE ).Чтобы получить расширенную информацию об ошибке, вызовите функцию GetLastError .
Другими словами, вы должны вызывать ее, только если ReadFile
возвращает FALSE
.
Ваш код должен выглядеть примерно так:
if (!ReadFile(fp,destCharArray,ByesToRead,NoOfBytesRead,NULL))
{
DWORD err = GetLastError();
// handle error probably by raising exception
}
Ваш код возвращает код ошибки для более ранней ошибки, не связанной с вызовом ReadFile
.