33 default:
return "Unknown error code";
45 UCHAR DetectedCount, UnitNumber;
52 for (UnitNumber = 0; UnitNumber < DetectedCount; UnitNumber++)
76 if (DriveNumber < 0x80 || (DriveNumber & 0x0F) >= 2)
87 if (((DriveNumber & 0xF0) > 0x80) &&
CdDrive)
95 WARN(
"DiskResetController(0x%x) DISK OPERATION FAILED -- RESETTING CONTROLLER\n", DriveNumber);
132 TRACE(
"XboxDiskReadLogicalSectors() DriveNumber: 0x%x SectorNumber: %I64u SectorCount: %u Buffer: 0x%x\n",
150 TRACE(
"XboxDiskGetDriveGeometry(0x%x)\n", DriveNumber);
VOID DiskError(_In_ PCSTR ErrorString, _In_ ULONG ErrorCode)
#define DBG_DEFAULT_CHANNEL(ch)
PDEVICE_UNIT AtaGetDevice(_In_ UCHAR UnitNumber)
BOOLEAN AtaInit(_Out_ PUCHAR DetectedCount)
BOOLEAN AtaReadLogicalSectors(_In_ PDEVICE_UNIT DeviceUnit, _In_ ULONG64 SectorNumber, _In_ ULONG SectorCount, _Out_writes_bytes_all_(SectorCount *DeviceUnit->SectorSize) PVOID Buffer)
_In_ NDIS_ERROR_CODE ErrorCode
enum _CONFIGURATION_TYPE CONFIGURATION_TYPE
Data structure for the ATA device.
ULONG BytesPerSector
Number of bytes per sector.
ULONG Cylinders
Number of cylinders on the disk.
ULONGLONG Sectors
Total number of disk sectors/LBA blocks.
ULONG SectorsPerTrack
Number of sectors per track.
ULONG Heads
Number of heads on the disk.
static PDEVICE_UNIT HardDrive
BOOLEAN DiskResetController(UCHAR DriveNumber)
static BOOLEAN AtaInitialized
PCSTR DiskGetErrorCodeString(_In_ ULONG ErrorCode)
static VOID XboxDiskInit(VOID)
static PDEVICE_UNIT XboxDiskDriveNumberToDeviceUnit(UCHAR DriveNumber)
BOOLEAN XboxDiskReadLogicalSectors(IN UCHAR DriveNumber, IN ULONGLONG SectorNumber, IN ULONG SectorCount, OUT PVOID Buffer)
ULONG XboxDiskGetCacheableBlockCount(UCHAR DriveNumber)
VOID __cdecl DiskStopFloppyMotor(VOID)
BOOLEAN XboxDiskGetDriveGeometry(UCHAR DriveNumber, PGEOMETRY Geometry)
CONFIGURATION_TYPE DiskGetConfigType(_In_ UCHAR DriveNumber)
static PDEVICE_UNIT CdDrive