[FREELDR] Verbose error output for FS errors
[reactos.git] / boot / freeldr / freeldr / lib / peloader.c
index 84eef62..7f913f1 100644 (file)
@@ -112,6 +112,7 @@ WinLdrScanImportDescriptorTable(IN OUT PLIST_ENTRY ModuleListHead,
     ImportTable = (PIMAGE_IMPORT_DESCRIPTOR)RtlImageDirectoryEntryToData(VaToPa(ScanDTE->DllBase),
         TRUE, IMAGE_DIRECTORY_ENTRY_IMPORT, &ImportTableSize);
 
+#if DBG
     {
         UNICODE_STRING BaseName;
         BaseName.Buffer = VaToPa(ScanDTE->BaseDllName.Buffer);
@@ -120,6 +121,7 @@ WinLdrScanImportDescriptorTable(IN OUT PLIST_ENTRY ModuleListHead,
         TRACE("WinLdrScanImportDescriptorTable(): %wZ ImportTable = 0x%X\n",
             &BaseName, ImportTable);
     }
+#endif
 
     /* If image doesn't have any import directory - just return success */
     if (ImportTable == NULL)
@@ -285,7 +287,7 @@ WinLdrLoadImage(IN PCHAR FileName,
     Status = ArcOpen(FileName, OpenReadOnly, &FileId);
     if (Status != ESUCCESS)
     {
-        // UiMessageBox("Can not open the file.");
+        WARN("Error while opening '%s', Status: %u\n", FileName, Status);
         return FALSE;
     }
 
@@ -293,6 +295,7 @@ WinLdrLoadImage(IN PCHAR FileName,
     Status = ArcRead(FileId, HeadersBuffer, SECTOR_SIZE * 2, &BytesRead);
     if (Status != ESUCCESS)
     {
+        WARN("Error while reading '%s', Status: %u\n", FileName, Status);
         UiMessageBox("Error reading from file.");
         ArcClose(FileId);
         return FALSE;
@@ -346,11 +349,12 @@ WinLdrLoadImage(IN PCHAR FileName,
     TRACE("Base PA: 0x%X, VA: 0x%X\n", PhysicalBase, VirtualBase);
 
     /* Set to 0 position and fully load the file image */
-    Position.HighPart = Position.LowPart = 0;
+    Position.QuadPart = 0;
     Status = ArcSeek(FileId, &Position, SeekAbsolute);
     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);
         return FALSE;
     }
@@ -358,7 +362,7 @@ WinLdrLoadImage(IN PCHAR FileName,
     Status = ArcRead(FileId, PhysicalBase, NtHeaders->OptionalHeader.SizeOfHeaders, &BytesRead);
     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.");
         ArcClose(FileId);
         return FALSE;
@@ -456,17 +460,21 @@ WinLdrpCompareDllName(IN PCH DllName,
                       IN PUNICODE_STRING UnicodeName)
 {
     PWSTR Buffer;
-    UNICODE_STRING UnicodeNamePA;
     SIZE_T i, Length;
 
     /* First obvious check: for length of two names */
     Length = strlen(DllName);
 
-    UnicodeNamePA.Length = UnicodeName->Length;
-    UnicodeNamePA.MaximumLength = UnicodeName->MaximumLength;
-    UnicodeNamePA.Buffer = VaToPa(UnicodeName->Buffer);
-    TRACE("WinLdrpCompareDllName: %s and %wZ, Length = %d "
-        "UN->Length %d\n", DllName, &UnicodeNamePA, Length, UnicodeName->Length);
+#if DBG
+    {
+        UNICODE_STRING UnicodeNamePA;
+        UnicodeNamePA.Length = UnicodeName->Length;
+        UnicodeNamePA.MaximumLength = UnicodeName->MaximumLength;
+        UnicodeNamePA.Buffer = VaToPa(UnicodeName->Buffer);
+        TRACE("WinLdrpCompareDllName: %s and %wZ, Length = %d "
+            "UN->Length %d\n", DllName, &UnicodeNamePA, Length, UnicodeName->Length);
+    }
+#endif
 
     if ((Length * sizeof(WCHAR)) > UnicodeName->Length)
         return FALSE;