https://docs.microsoft.com/en-us/windows/desktop/a...
If the function succeeds, the return value is nonzero (TRUE).
If the function fails, or is completing asynchronously, the return value is zero (FALSE). To get extended error information, call the GetLastError function.
Проверяйте, что возвращает функция ReadFile и если FALSE, то через GetLastError смотрите код ошибки.