ReactOS 0.4.17-dev-37-g0bfb40d
part_brfr.c File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define XBOX_SIGNATURE_SECTOR   3
 
#define XBOX_SIGNATURE   ('B' | ('R' << 8) | ('F' << 16) | ('R' << 24))
 
#define FATX_DATA_PARTITION   1
 

Functions

static BOOLEAN DiskIsBrfr (_In_ UCHAR DriveNumber)
 
BOOLEAN DiskGetBrfrPartitionEntry (_In_ UCHAR DriveNumber, _In_ ULONG SectorSize, _In_ ULONG PartitionNumber, _Out_ PPARTITION_INFORMATION PartitionEntry)
 

Variables

struct {
   ULONG   SectorStart
 
   ULONG   SectorCount
 
   UCHAR   PartitionType
 
XboxPartitions []
 

Macro Definition Documentation

◆ FATX_DATA_PARTITION

#define FATX_DATA_PARTITION   1

Definition at line 17 of file part_brfr.c.

◆ XBOX_SIGNATURE

#define XBOX_SIGNATURE   ('B' | ('R' << 8) | ('F' << 16) | ('R' << 24))

Definition at line 14 of file part_brfr.c.

◆ XBOX_SIGNATURE_SECTOR

#define XBOX_SIGNATURE_SECTOR   3

Definition at line 13 of file part_brfr.c.

Function Documentation

◆ DiskGetBrfrPartitionEntry()

BOOLEAN DiskGetBrfrPartitionEntry ( _In_ UCHAR  DriveNumber,
_In_ ULONG  SectorSize,
_In_ ULONG  PartitionNumber,
_Out_ PPARTITION_INFORMATION  PartitionEntry 
)

Definition at line 47 of file part_brfr.c.

52{
53 ASSERT(SectorSize >= 512);
54
55 if (!DiskIsBrfr(DriveNumber))
56 return FALSE; /* No magic Xbox partitions */
57
58 /* Get partition entry of an Xbox-standard BRFR partitioned disk */
60 return FALSE; /* Partition does not exist */
61
62 /* Convert to standard-style entry */
63 PartitionEntry->StartingOffset.QuadPart = (ULONGLONG)XboxPartitions[PartitionNumber - 1].SectorStart * SectorSize;
64 PartitionEntry->PartitionLength.QuadPart = (ULONGLONG)XboxPartitions[PartitionNumber - 1].SectorCount * SectorSize;
65 PartitionEntry->HiddenSectors = 0;
66 PartitionEntry->PartitionNumber = PartitionNumber;
67 PartitionEntry->PartitionType = XboxPartitions[PartitionNumber - 1].PartitionType;
68 PartitionEntry->BootIndicator = (PartitionNumber == FATX_DATA_PARTITION);
69 PartitionEntry->RecognizedPartition = TRUE;
70 PartitionEntry->RewritePartition = FALSE;
71
72 return TRUE;
73}
#define RTL_NUMBER_OF(x)
Definition: RtlRegistry.c:12
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define ASSERT(a)
Definition: mode.c:44
static BOOLEAN DiskIsBrfr(_In_ UCHAR DriveNumber)
Definition: part_brfr.c:35
#define FATX_DATA_PARTITION
Definition: part_brfr.c:17
ULONG SectorStart
Definition: part_brfr.c:21
ULONG SectorCount
Definition: part_brfr.c:22
static struct @142 XboxPartitions[]
uint64_t ULONGLONG
Definition: typedefs.h:67
_In_ ULONG SectorSize
Definition: halfuncs.h:291
_In_ ULONG _In_ ULONG PartitionNumber
Definition: iofuncs.h:2061

Referenced by DiskGetBootPartitionEntry(), and DiskGetPartitionEntry().

◆ DiskIsBrfr()

static BOOLEAN DiskIsBrfr ( _In_ UCHAR  DriveNumber)
static

Definition at line 35 of file part_brfr.c.

37{
38 /* Read the Xbox-specific sector */
40 return FALSE; /* Partition does not exist */
41
42 /* Verify the magic Xbox signature */
43 return (*((PULONG)DiskReadBuffer) == XBOX_SIGNATURE);
44}
#define DiskReadBuffer
Definition: hardware.h:33
#define MachDiskReadLogicalSectors(Drive, Start, Count, Buf)
Definition: machine.h:120
#define XBOX_SIGNATURE_SECTOR
Definition: part_brfr.c:13
#define XBOX_SIGNATURE
Definition: part_brfr.c:14
uint32_t * PULONG
Definition: typedefs.h:59

Referenced by DiskDetectPartitionType(), and DiskGetBrfrPartitionEntry().

Variable Documentation

◆ PartitionType

◆ SectorCount

Definition at line 22 of file part_brfr.c.

Referenced by AddLogicalDiskSpace(), AtaCommandUseLba48(), AtapBuildReadPacketCommand(), AtapBuildReadTaskFile(), AtaReadLogicalSectors(), AtaReqBuildLbaTaskFile(), AtaReqBuildNcqReadWriteTaskFile(), AtaReqScsiReadWrite(), CacheReadDiskSectors(), CommandDumpSector(), CreateInsertBlankRegion(), DeviceRequestReadWrite(), DiskGetBrfrPartitionEntry(), DiskOpen(), DiskPerformSmartCommand(), DiskReadSmartLog(), DiskWriteSmartLog(), ExtReadVolumeSectors(), Fat12Format(), Fat16Format(), FatAddMcbEntry(), FatMount(), FatReadPartialCluster(), FatReadVolumeSectors(), FatRemoveMcbEntry(), FatxFormat(), FileSystemToMBRPartitionType(), FsRecGetDeviceSectors(), FsRecNtfsFsControl(), FsRtlAddBaseMcbEntry(), FsRtlAddLargeMcbEntry(), FsRtlAddMcbEntry(), FsRtlGetNextBaseMcbEntry(), FsRtlGetNextLargeMcbEntry(), FsRtlGetNextMcbEntry(), FsRtlLargeMcbTest(), FsRtlLargeMcbTestsExt2(), FsRtlLargeMcbTestsFastFat_3(), FsRtlLookupMcbEntry(), FsRtlRemoveBaseMcbEntry(), FsRtlRemoveLargeMcbEntry(), FsRtlRemoveMcbEntry(), GetFreeDiskSize(), HalpCalculateChsValues(), InitializePartitionEntry(), InsertGptPartition(), IsoBufferDirectory(), main(), NtfsReadSectors(), Pc98DiskReadLogicalSectors(), Pc98DiskReadLogicalSectorsCHS(), Pc98DiskReadLogicalSectorsLBA(), PcDiskReadLogicalSectors(), PcDiskReadLogicalSectorsCHS(), PcDiskReadLogicalSectorsLBA(), QueryDeviceInformation(), ScanForUnpartitionedDiskSpace(), SvwSataLoadTaskFile(), SvwSataSaveTaskFile(), UefiDiskOpen(), UefiDiskReadLogicalSectors(), and XboxDiskReadLogicalSectors().

◆ SectorStart

ULONG SectorStart

Definition at line 21 of file part_brfr.c.

Referenced by DiskGetBrfrPartitionEntry(), and DiskInitialize().

◆ 

struct { ... } XboxPartitions[]
Initial value:
=
{
{ 0x0055F400, 0x0098F800, PARTITION_FAT32 },
{ 0x00465400, 0x000FA000, PARTITION_FAT_16 },
{ 0x00000400, 0x00177000, PARTITION_FAT_16 },
{ 0x00177400, 0x00177000, PARTITION_FAT_16 },
{ 0x002EE400, 0x00177000, PARTITION_FAT_16 }
}
#define PARTITION_FAT32
Definition: part_mbr.h:59
#define PARTITION_FAT_16
Definition: part_mbr.h:54

Referenced by DiskGetBrfrPartitionEntry().