Author: ros-arm-bringup
Date: Tue Jul 22 01:31:31 2008
New Revision: 34660
URL:
http://svn.reactos.org/svn/reactos?rev=34660&view=rev
Log:
- Fail: was using the wrong structure (the boot sector is a BOOT_SECTOR which contains the
BIOS Parameter Block, not a BPB directly).
- Fix wrong debug print too.
Modified:
trunk/reactos/drivers/storage/class/ramdisk/ramdisk.c
Modified: trunk/reactos/drivers/storage/class/ramdisk/ramdisk.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/class/ramd…
==============================================================================
--- trunk/reactos/drivers/storage/class/ramdisk/ramdisk.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/storage/class/ramdisk/ramdisk.c [iso-8859-1] Tue Jul 22 01:31:31
2008
@@ -289,7 +289,7 @@
// Calculate the actual offset in the drive
//
ActualOffset.QuadPart = DeviceExtension->DiskOffset + Offset.QuadPart;
- DPRINT1("Disk offset is: %I64d and Offset is: %I64d. Total: %I64d\n",
+ DPRINT1("Disk offset is: %d and Offset is: %I64d. Total: %I64d\n",
DeviceExtension->DiskOffset, Offset, ActualOffset);
//
@@ -328,10 +328,7 @@
//
MappedBase = MmMapIoSpace(PhysicalAddress, ActualLength, MmCached);
DPRINT1("Mapped at: %p\n", MappedBase);
-
- UNIMPLEMENTED;
- while (TRUE);
- return NULL;
+ return MappedBase;
}
PVOID
@@ -360,7 +357,7 @@
PVOID Buffer;
WCHAR LocalBuffer[16];
UNICODE_STRING SymbolicLinkName, DriveString, GuidString, DeviceName;
- PPACKED_BIOS_PARAMETER_BLOCK Parameters;
+ PPACKED_BOOT_SECTOR BootSector;
ULONG BytesPerSector, SectorsPerTrack, Heads, BytesRead;
PVOID BaseAddress;
LARGE_INTEGER CurrentOffset;
@@ -616,10 +613,10 @@
//
// Get the data
//
- Parameters = (PPACKED_BIOS_PARAMETER_BLOCK)BaseAddress;
- BytesPerSector = Parameters->BytesPerSector[0];
- SectorsPerTrack = Parameters->SectorsPerTrack[0];
- Heads = Parameters->Heads[0];
+ BootSector = (PPACKED_BOOT_SECTOR)BaseAddress;
+ BytesPerSector = BootSector->PackedBpb.BytesPerSector[0];
+ SectorsPerTrack = BootSector->PackedBpb.SectorsPerTrack[0];
+ Heads = BootSector->PackedBpb.Heads[0];
//
// Save it
@@ -648,6 +645,17 @@
}
//
+ // Sanity check for debugging
+ //
+ DPRINT1("[RAMDISK] Loaded...\n"
+ "Bytes per Sector: %d\n"
+ "Sectors per Track: %d\n"
+ "Number of Heads: %d\n",
+ DriveExtension->BytesPerSector,
+ DriveExtension->SectorsPerTrack,
+ DriveExtension->NumberOfHeads);
+
+ //
// Check if the drive settings haven't been set yet
//
if ((DriveExtension->BytesPerSector == 0) ||
@@ -676,7 +684,7 @@
DriveExtension->NumberOfHeads = 16;
}
}
-
+
//
// Acquire the disk lock
//