[FREELDR] Verbose error output for FS errors

This commit is contained in:
Victor Perevertkin 2019-07-29 23:25:03 +03:00
parent bc3314d4aa
commit 304e281099
4 changed files with 41 additions and 7 deletions

View file

@ -51,6 +51,7 @@ BOOLEAN IniFileInitialize(VOID)
Status = IniOpenIniFile(&FileId); Status = IniOpenIniFile(&FileId);
if (Status != ESUCCESS) if (Status != ESUCCESS)
{ {
ERR("Error while opening freeldr.ini, Status: %d\n", Status);
UiMessageBoxCritical("Error opening freeldr.ini or file not found.\nYou need to re-install FreeLoader."); UiMessageBoxCritical("Error opening freeldr.ini or file not found.\nYou need to re-install FreeLoader.");
return FALSE; return FALSE;
} }
@ -83,6 +84,7 @@ BOOLEAN IniFileInitialize(VOID)
Status = ArcRead(FileId, FreeLoaderIniFileData, FreeLoaderIniFileSize, &Count); Status = ArcRead(FileId, FreeLoaderIniFileData, FreeLoaderIniFileSize, &Count);
if (Status != ESUCCESS || Count != FreeLoaderIniFileSize) if (Status != ESUCCESS || Count != FreeLoaderIniFileSize)
{ {
ERR("Error while reading freeldr.ini, Status: %d\n", Status);
UiMessageBoxCritical("Error while reading freeldr.ini."); UiMessageBoxCritical("Error while reading freeldr.ini.");
ArcClose(FileId); ArcClose(FileId);
FrLdrTempFree(FreeLoaderIniFileData, TAG_INI_FILE); FrLdrTempFree(FreeLoaderIniFileData, TAG_INI_FILE);

View file

@ -287,7 +287,7 @@ WinLdrLoadImage(IN PCHAR FileName,
Status = ArcOpen(FileName, OpenReadOnly, &FileId); Status = ArcOpen(FileName, OpenReadOnly, &FileId);
if (Status != ESUCCESS) if (Status != ESUCCESS)
{ {
// UiMessageBox("Can not open the file."); WARN("Error while opening '%s', Status: %u\n", FileName, Status);
return FALSE; return FALSE;
} }
@ -295,6 +295,7 @@ WinLdrLoadImage(IN PCHAR FileName,
Status = ArcRead(FileId, HeadersBuffer, SECTOR_SIZE * 2, &BytesRead); Status = ArcRead(FileId, HeadersBuffer, SECTOR_SIZE * 2, &BytesRead);
if (Status != ESUCCESS) if (Status != ESUCCESS)
{ {
WARN("Error while reading '%s', Status: %u\n", FileName, Status);
UiMessageBox("Error reading from file."); UiMessageBox("Error reading from file.");
ArcClose(FileId); ArcClose(FileId);
return FALSE; return FALSE;
@ -348,11 +349,12 @@ WinLdrLoadImage(IN PCHAR FileName,
TRACE("Base PA: 0x%X, VA: 0x%X\n", PhysicalBase, VirtualBase); TRACE("Base PA: 0x%X, VA: 0x%X\n", PhysicalBase, VirtualBase);
/* Set to 0 position and fully load the file image */ /* Set to 0 position and fully load the file image */
Position.HighPart = Position.LowPart = 0; Position.QuadPart = 0;
Status = ArcSeek(FileId, &Position, SeekAbsolute); Status = ArcSeek(FileId, &Position, SeekAbsolute);
if (Status != ESUCCESS) if (Status != ESUCCESS)
{ {
UiMessageBox("Error seeking to start of file."); WARN("Error while seeking '%s', Status: %u\n", FileName, Status);
UiMessageBox("Error seeking the start of a file.");
ArcClose(FileId); ArcClose(FileId);
return FALSE; return FALSE;
} }
@ -360,7 +362,7 @@ WinLdrLoadImage(IN PCHAR FileName,
Status = ArcRead(FileId, PhysicalBase, NtHeaders->OptionalHeader.SizeOfHeaders, &BytesRead); Status = ArcRead(FileId, PhysicalBase, NtHeaders->OptionalHeader.SizeOfHeaders, &BytesRead);
if (Status != ESUCCESS) if (Status != ESUCCESS)
{ {
// Print(L"Error reading headers %s\n", FileName); WARN("Error while reading '%s', Status: %u\n", FileName, Status);
UiMessageBox("Error reading headers."); UiMessageBox("Error reading headers.");
ArcClose(FileId); ArcClose(FileId);
return FALSE; return FALSE;

View file

@ -369,6 +369,7 @@ WinLdrLoadModule(PCSTR ModuleName,
if (Status != ESUCCESS) if (Status != ESUCCESS)
{ {
/* In case of errors, we just return, without complaining to the user */ /* In case of errors, we just return, without complaining to the user */
WARN("Error while opening '%s', Status: %u\n", ModuleName, Status);
return NULL; return NULL;
} }
@ -395,6 +396,7 @@ WinLdrLoadModule(PCSTR ModuleName,
ArcClose(FileId); ArcClose(FileId);
if (Status != ESUCCESS) if (Status != ESUCCESS)
{ {
WARN("Error while reading '%s', Status: %u\n", ModuleName, Status);
return NULL; return NULL;
} }

View file

@ -49,10 +49,11 @@ WinLdrLoadSystemHive(
/* Concatenate path and filename to get the full name */ /* Concatenate path and filename to get the full name */
strcpy(FullHiveName, DirectoryPath); strcpy(FullHiveName, DirectoryPath);
strcat(FullHiveName, HiveName); strcat(FullHiveName, HiveName);
//Print(L"Loading %s...\n", FullHiveName);
Status = ArcOpen(FullHiveName, OpenReadOnly, &FileId); Status = ArcOpen(FullHiveName, OpenReadOnly, &FileId);
if (Status != ESUCCESS) if (Status != ESUCCESS)
{ {
WARN("Error while opening '%s', Status: %u\n", FullHiveName, Status);
UiMessageBox("Opening hive file failed!"); UiMessageBox("Opening hive file failed!");
return FALSE; return FALSE;
} }
@ -91,6 +92,7 @@ WinLdrLoadSystemHive(
if (Status != ESUCCESS) if (Status != ESUCCESS)
{ {
ArcClose(FileId); ArcClose(FileId);
WARN("Error while reading '%s', Status: %u\n", FullHiveName, Status);
UiMessageBox("Unable to read from hive file!"); UiMessageBox("Unable to read from hive file!");
return FALSE; return FALSE;
} }
@ -320,12 +322,14 @@ WinLdrLoadNLSData(IN OUT PLOADER_PARAMETER_BLOCK LoaderBlock,
AnsiEqualsOem = TRUE; AnsiEqualsOem = TRUE;
/* Open file with ANSI and store its size */ /* Open file with ANSI and store its size */
//Print(L"Loading %s...\n", Filename);
strcpy(FileName, DirectoryPath); strcpy(FileName, DirectoryPath);
strcat(FileName, AnsiFileName); strcat(FileName, AnsiFileName);
Status = ArcOpen(FileName, OpenReadOnly, &AnsiFileId); Status = ArcOpen(FileName, OpenReadOnly, &AnsiFileId);
if (Status != ESUCCESS) if (Status != ESUCCESS)
{
WARN("Error while opening '%s', Status: %u\n", FileName, Status);
goto Failure; goto Failure;
}
Status = ArcGetFileInformation(AnsiFileId, &FileInfo); Status = ArcGetFileInformation(AnsiFileId, &FileInfo);
if (Status != ESUCCESS) if (Status != ESUCCESS)
@ -346,7 +350,10 @@ WinLdrLoadNLSData(IN OUT PLOADER_PARAMETER_BLOCK LoaderBlock,
strcat(FileName, OemFileName); strcat(FileName, OemFileName);
Status = ArcOpen(FileName, OpenReadOnly, &OemFileId); Status = ArcOpen(FileName, OpenReadOnly, &OemFileId);
if (Status != ESUCCESS) if (Status != ESUCCESS)
{
WARN("Error while opening '%s', Status: %u\n", FileName, Status);
goto Failure; goto Failure;
}
Status = ArcGetFileInformation(OemFileId, &FileInfo); Status = ArcGetFileInformation(OemFileId, &FileInfo);
if (Status != ESUCCESS) if (Status != ESUCCESS)
@ -362,7 +369,10 @@ WinLdrLoadNLSData(IN OUT PLOADER_PARAMETER_BLOCK LoaderBlock,
strcat(FileName, LanguageFileName); strcat(FileName, LanguageFileName);
Status = ArcOpen(FileName, OpenReadOnly, &LanguageFileId); Status = ArcOpen(FileName, OpenReadOnly, &LanguageFileId);
if (Status != ESUCCESS) if (Status != ESUCCESS)
{
WARN("Error while opening '%s', Status: %u\n", FileName, Status);
goto Failure; goto Failure;
}
Status = ArcGetFileInformation(LanguageFileId, &FileInfo); Status = ArcGetFileInformation(LanguageFileId, &FileInfo);
if (Status != ESUCCESS) if (Status != ESUCCESS)
@ -403,11 +413,17 @@ WinLdrLoadNLSData(IN OUT PLOADER_PARAMETER_BLOCK LoaderBlock,
strcat(FileName, AnsiFileName); strcat(FileName, AnsiFileName);
Status = ArcOpen(FileName, OpenReadOnly, &AnsiFileId); Status = ArcOpen(FileName, OpenReadOnly, &AnsiFileId);
if (Status != ESUCCESS) if (Status != ESUCCESS)
{
WARN("Error while opening '%s', Status: %u\n", FileName, Status);
goto Failure; goto Failure;
}
Status = ArcRead(AnsiFileId, VaToPa(LoaderBlock->NlsData->AnsiCodePageData), AnsiFileSize, &BytesRead); Status = ArcRead(AnsiFileId, VaToPa(LoaderBlock->NlsData->AnsiCodePageData), AnsiFileSize, &BytesRead);
if (Status != ESUCCESS) if (Status != ESUCCESS)
{
WARN("Error while reading '%s', Status: %u\n", FileName, Status);
goto Failure; goto Failure;
}
ArcClose(AnsiFileId); ArcClose(AnsiFileId);
@ -418,11 +434,17 @@ WinLdrLoadNLSData(IN OUT PLOADER_PARAMETER_BLOCK LoaderBlock,
strcat(FileName, OemFileName); strcat(FileName, OemFileName);
Status = ArcOpen(FileName, OpenReadOnly, &OemFileId); Status = ArcOpen(FileName, OpenReadOnly, &OemFileId);
if (Status != ESUCCESS) if (Status != ESUCCESS)
{
WARN("Error while opening '%s', Status: %u\n", FileName, Status);
goto Failure; goto Failure;
}
Status = ArcRead(OemFileId, VaToPa(LoaderBlock->NlsData->OemCodePageData), OemFileSize, &BytesRead); Status = ArcRead(OemFileId, VaToPa(LoaderBlock->NlsData->OemCodePageData), OemFileSize, &BytesRead);
if (Status != ESUCCESS) if (Status != ESUCCESS)
{
WARN("Error while reading '%s', Status: %u\n", FileName, Status);
goto Failure; goto Failure;
}
ArcClose(OemFileId); ArcClose(OemFileId);
} }
@ -432,11 +454,17 @@ WinLdrLoadNLSData(IN OUT PLOADER_PARAMETER_BLOCK LoaderBlock,
strcat(FileName, LanguageFileName); strcat(FileName, LanguageFileName);
Status = ArcOpen(FileName, OpenReadOnly, &LanguageFileId); Status = ArcOpen(FileName, OpenReadOnly, &LanguageFileId);
if (Status != ESUCCESS) if (Status != ESUCCESS)
{
WARN("Error while opening '%s', Status: %u\n", FileName, Status);
goto Failure; goto Failure;
}
Status = ArcRead(LanguageFileId, VaToPa(LoaderBlock->NlsData->UnicodeCodePageData), LanguageFileSize, &BytesRead); Status = ArcRead(LanguageFileId, VaToPa(LoaderBlock->NlsData->UnicodeCodePageData), LanguageFileSize, &BytesRead);
if (Status != ESUCCESS) if (Status != ESUCCESS)
{
WARN("Error while reading '%s', Status: %u\n", FileName, Status);
goto Failure; goto Failure;
}
ArcClose(LanguageFileId); ArcClose(LanguageFileId);