williamr@2: // Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@2: // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: // which accompanies this distribution, and is available williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // e32\include\partitions.h williamr@2: // williamr@2: // williamr@2: williamr@2: williamr@2: williamr@2: /** williamr@2: @file williamr@2: @internalTechnology williamr@2: */ williamr@2: williamr@2: #ifndef __PARTITIONS_H__ williamr@2: #define __PARTITIONS_H__ williamr@2: #include williamr@2: williamr@2: const TUint KPartitionTypeEmpty=0x00; williamr@2: const TUint KPartitionTypeFAT12=0x01; williamr@2: const TUint KPartitionTypeXENIXroot=0x02; williamr@2: const TUint KPartitionTypeXENIXusr=0x03; williamr@2: const TUint KPartitionTypeFAT16small=0x04; williamr@2: const TUint KPartitionTypeExtended=0x05; williamr@2: const TUint KPartitionTypeFAT16=0x06; williamr@2: const TUint KPartitionTypeNTFS=0x07; williamr@2: const TUint KPartitionTypeAIX=0x08; williamr@2: const TUint KPartitionTypeAIXboot=0x09; williamr@2: const TUint KPartitionTypeOS2BootManager=0x0a; williamr@2: const TUint KPartitionTypeWin95FAT32=0x0b; williamr@2: const TUint KPartitionTypeWin95FAT32LBA=0x0c; williamr@2: const TUint KPartitionTypeWin95FAT16LBA=0x0e; williamr@2: const TUint KPartitionTypeWin95ExtdLBA=0x0f; williamr@2: const TUint KPartitionTypeOPUS=0x10; williamr@2: const TUint KPartitionTypeHiddenFAT12=0x11; williamr@2: const TUint KPartitionTypeCompaqDiag=0x12; williamr@2: const TUint KPartitionTypeHiddenFAT16small=0x14; williamr@2: const TUint KPartitionTypeHiddenFAT16=0x16; williamr@2: const TUint KPartitionTypeHiddenNTFS=0x17; williamr@2: const TUint KPartitionTypeASTSmartSleep=0x18; williamr@2: const TUint KPartitionTypeHiddenWin95FAT32=0x1b; williamr@2: const TUint KPartitionTypeHiddenWin95FAT32LBA=0x1c; williamr@2: const TUint KPartitionTypeHiddenWin95FAT16LBA=0x1e; williamr@2: const TUint KPartitionTypeNECDOS=0x24; williamr@2: const TUint KPartitionTypePlan9=0x39; williamr@2: const TUint KPartitionTypePartitionMagic=0x3c; williamr@2: const TUint KPartitionTypeVenix80286=0x40; williamr@2: const TUint KPartitionTypePPCPRePBoot=0x41; williamr@2: const TUint KPartitionTypeSFS=0x42; williamr@2: const TUint KPartitionTypeQNX4x=0x4d; williamr@2: const TUint KPartitionTypeQNX4x_2=0x4e; williamr@2: const TUint KPartitionTypeQNX4x_3=0x4f; williamr@2: const TUint KPartitionTypeOnTrackDM=0x50; williamr@2: const TUint KPartitionTypeOnTrackDM6Aux=0x51; williamr@2: const TUint KPartitionTypeCPM=0x52; williamr@2: const TUint KPartitionTypeOnTrackDM6Aux_2=0x53; williamr@2: const TUint KPartitionTypeOnTrackDM6=0x54; williamr@2: const TUint KPartitionTypeEZDrive=0x55; williamr@2: const TUint KPartitionTypeGoldenBow=0x56; williamr@2: const TUint KPartitionTypePriamEdisk=0x5c; williamr@2: const TUint KPartitionTypeSpeedStor=0x61; williamr@2: const TUint KPartitionTypeGNU_HURD=0x63; williamr@2: const TUint KPartitionTypeNovellNetware=0x64; williamr@2: const TUint KPartitionTypeNovellNetware_2=0x65; williamr@2: const TUint KPartitionTypeDiskSecure=0x70; williamr@2: const TUint KPartitionTypePCIX=0x75; williamr@2: const TUint KPartitionTypeOldMinix=0x80; williamr@2: const TUint KPartitionTypeMinixOldLinux=0x81; williamr@2: const TUint KPartitionTypeLinuxSwap=0x82; williamr@2: const TUint KPartitionTypeLinux=0x83; williamr@2: const TUint KPartitionTypeOS2Hidden=0x84; williamr@2: const TUint KPartitionTypeLinuxExtended=0x85; williamr@2: const TUint KPartitionTypeNTFSvolset=0x86; williamr@2: const TUint KPartitionTypeNTFSvolset_2=0x87; williamr@2: const TUint KPartitionTypeLinuxLVM=0x8e; williamr@2: const TUint KPartitionTypeAmoeba=0x93; williamr@2: const TUint KPartitionTypeAmoebaBBT=0x94; williamr@2: const TUint KPartitionTypeBSD_OS=0x9f; williamr@2: const TUint KPartitionTypeIBMThinkpad=0xa0; williamr@2: const TUint KPartitionTypeFreeBSD=0xa5; williamr@2: const TUint KPartitionTypeOpenBSD=0xa6; williamr@2: const TUint KPartitionTypeNeXTSTEP=0xa7; williamr@2: const TUint KPartitionTypeNetBSD=0xa9; williamr@2: const TUint KPartitionTypeBSDIfs=0xb7; williamr@2: const TUint KPartitionTypeBSDIswap=0xb8; williamr@2: const TUint KPartitionTypeBootWizardHidden=0xbb; williamr@2: const TUint KPartitionTypeDRDOS=0xc1; williamr@2: const TUint KPartitionTypeDRDOS_2=0xc4; williamr@2: const TUint KPartitionTypeDRDOS_3=0xc6; williamr@2: const TUint KPartitionTypeSyrinx=0xc7; williamr@2: const TUint KPartitionTypeNonFSData=0xda; williamr@2: const TUint KPartitionTypeCPM_CTOS=0xdb; williamr@2: const TUint KPartitionTypeDellUtility=0xde; williamr@2: const TUint KPartitionTypeBootIt=0xdf; williamr@2: const TUint KPartitionTypeDOSaccess=0xe1; williamr@2: const TUint KPartitionTypeDOS_RO=0xe3; williamr@2: const TUint KPartitionTypeSymbianCrashLog=0xf0; williamr@2: const TUint KPartitionTypeSpeedStor_2=0xf1; williamr@2: const TUint KPartitionTypeDOSsecondary=0xf2; williamr@2: const TUint KPartitionTypeSpeedStor_3=0xf4; williamr@2: const TUint KPartitionTypeRofs=0xfa; // HACK williamr@2: const TUint KPartitionTypeIso9660=0xfb; // hack williamr@2: const TUint KPartitionTypeEneaLFFS=0xfc; // hack williamr@2: const TUint KPartitionTypeLinuxRaidAuto=0xfd; williamr@2: const TUint KPartitionTypeLANStep=0xfe; williamr@2: const TUint KPartitionTypeBBT=0xff; williamr@2: williamr@2: inline TBool PartitionIsFAT(TUint a) williamr@2: { williamr@2: return ( williamr@2: a==KPartitionTypeFAT12 || williamr@2: a==KPartitionTypeFAT16small || williamr@2: a==KPartitionTypeFAT16 || williamr@2: a==KPartitionTypeFAT16 || williamr@2: a==KPartitionTypeWin95FAT16LBA || williamr@2: a==KPartitionTypeHiddenFAT12 || williamr@2: a==KPartitionTypeHiddenFAT16small || williamr@2: a==KPartitionTypeHiddenFAT16 || williamr@2: a==KPartitionTypeHiddenWin95FAT16LBA williamr@2: ); williamr@2: } williamr@2: williamr@2: inline TBool PartitionIsFAT32(TUint a) williamr@2: { williamr@2: return ( williamr@2: a==KPartitionTypeWin95FAT32 || williamr@2: a==KPartitionTypeWin95FAT32LBA || williamr@2: a==KPartitionTypeHiddenWin95FAT32 || williamr@2: a==KPartitionTypeHiddenWin95FAT32LBA williamr@2: ); williamr@2: } williamr@2: williamr@2: inline TBool PartitionIsNTFS(TUint a) williamr@2: { williamr@2: return ( williamr@2: a==KPartitionTypeNTFS || williamr@2: a==KPartitionTypeHiddenNTFS williamr@2: ); williamr@2: } williamr@2: williamr@2: // williamr@2: // Entry in MBR partition table williamr@2: // williamr@2: const TUint KBootIndicatorBootable=0x80; williamr@2: williamr@2: class TMBRPartitionEntry williamr@2: { williamr@2: public: williamr@2: TBool IsValidPartition() williamr@2: { return (iNumSectors>0 && iPartitionType!=KPartitionTypeEmpty); } williamr@2: TBool IsValidDosPartition() williamr@2: { return (iNumSectors>0 && PartitionIsFAT(iPartitionType)); } williamr@2: TBool IsDefaultBootPartition() williamr@2: { return(iX86BootIndicator==KBootIndicatorBootable && (IsValidDosPartition() || IsValidFAT32Partition())); } williamr@2: TBool IsValidFAT32Partition() williamr@2: { return (iNumSectors>0 && PartitionIsFAT32(iPartitionType)); } williamr@2: public: williamr@2: TUint8 iX86BootIndicator; williamr@2: TUint8 iStartHead; williamr@2: TUint8 iStartSector; williamr@2: TUint8 iStartCylinder; williamr@2: TUint8 iPartitionType; williamr@2: TUint8 iEndHead; williamr@2: TUint8 iEndSector; williamr@2: TUint8 iEndCylinder; williamr@2: TUint32 iFirstSector; williamr@2: TUint32 iNumSectors; williamr@2: }; williamr@2: williamr@2: // williamr@2: // Defines for Master boot record williamr@2: // williamr@2: const TUint KMBRFirstPartitionOffset=0x1BE; williamr@2: const TUint KMBRSignatureOffset=0x1FE; williamr@2: const TUint KMBRSignature=0xAA55; williamr@2: const TInt KMBRMaxPrimaryPartitions=4; williamr@2: williamr@2: class TMasterBootRecord williamr@2: { williamr@2: public: williamr@2: TUint8 iBootCode[KMBRFirstPartitionOffset]; williamr@2: TMBRPartitionEntry iPartitionEntry[KMBRMaxPrimaryPartitions]; williamr@2: TUint16 iSignature; williamr@2: }; williamr@2: williamr@2: williamr@2: williamr@2: #endif