epoc32/include/partitions.h
author William Roberts <williamr@symbian.org>
Tue, 16 Mar 2010 16:12:26 +0000
branchSymbian2
changeset 2 2fe1408b6811
permissions -rw-r--r--
Final list of Symbian^2 public API header files
williamr@2
     1
// Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
williamr@2
     2
// All rights reserved.
williamr@2
     3
// This component and the accompanying materials are made available
williamr@2
     4
// 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
     5
// which accompanies this distribution, and is available
williamr@2
     6
// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
williamr@2
     7
//
williamr@2
     8
// Initial Contributors:
williamr@2
     9
// Nokia Corporation - initial contribution.
williamr@2
    10
//
williamr@2
    11
// Contributors:
williamr@2
    12
//
williamr@2
    13
// Description:
williamr@2
    14
// e32\include\partitions.h
williamr@2
    15
// 
williamr@2
    16
//
williamr@2
    17
williamr@2
    18
williamr@2
    19
williamr@2
    20
/**
williamr@2
    21
 @file
williamr@2
    22
 @internalTechnology
williamr@2
    23
*/
williamr@2
    24
williamr@2
    25
#ifndef __PARTITIONS_H__
williamr@2
    26
#define __PARTITIONS_H__
williamr@2
    27
#include <e32def.h>
williamr@2
    28
williamr@2
    29
const TUint KPartitionTypeEmpty=0x00;
williamr@2
    30
const TUint KPartitionTypeFAT12=0x01;
williamr@2
    31
const TUint KPartitionTypeXENIXroot=0x02;
williamr@2
    32
const TUint KPartitionTypeXENIXusr=0x03;
williamr@2
    33
const TUint KPartitionTypeFAT16small=0x04;
williamr@2
    34
const TUint KPartitionTypeExtended=0x05;
williamr@2
    35
const TUint KPartitionTypeFAT16=0x06;
williamr@2
    36
const TUint KPartitionTypeNTFS=0x07;
williamr@2
    37
const TUint KPartitionTypeAIX=0x08;
williamr@2
    38
const TUint KPartitionTypeAIXboot=0x09;
williamr@2
    39
const TUint KPartitionTypeOS2BootManager=0x0a;
williamr@2
    40
const TUint KPartitionTypeWin95FAT32=0x0b;
williamr@2
    41
const TUint KPartitionTypeWin95FAT32LBA=0x0c;
williamr@2
    42
const TUint KPartitionTypeWin95FAT16LBA=0x0e;
williamr@2
    43
const TUint KPartitionTypeWin95ExtdLBA=0x0f;
williamr@2
    44
const TUint KPartitionTypeOPUS=0x10;
williamr@2
    45
const TUint KPartitionTypeHiddenFAT12=0x11;
williamr@2
    46
const TUint KPartitionTypeCompaqDiag=0x12;
williamr@2
    47
const TUint KPartitionTypeHiddenFAT16small=0x14;
williamr@2
    48
const TUint KPartitionTypeHiddenFAT16=0x16;
williamr@2
    49
const TUint KPartitionTypeHiddenNTFS=0x17;
williamr@2
    50
const TUint KPartitionTypeASTSmartSleep=0x18;
williamr@2
    51
const TUint KPartitionTypeHiddenWin95FAT32=0x1b;
williamr@2
    52
const TUint KPartitionTypeHiddenWin95FAT32LBA=0x1c;
williamr@2
    53
const TUint KPartitionTypeHiddenWin95FAT16LBA=0x1e;
williamr@2
    54
const TUint KPartitionTypeNECDOS=0x24;
williamr@2
    55
const TUint KPartitionTypePlan9=0x39;
williamr@2
    56
const TUint KPartitionTypePartitionMagic=0x3c;
williamr@2
    57
const TUint KPartitionTypeVenix80286=0x40;
williamr@2
    58
const TUint KPartitionTypePPCPRePBoot=0x41;
williamr@2
    59
const TUint KPartitionTypeSFS=0x42;
williamr@2
    60
const TUint KPartitionTypeQNX4x=0x4d;
williamr@2
    61
const TUint KPartitionTypeQNX4x_2=0x4e;
williamr@2
    62
const TUint KPartitionTypeQNX4x_3=0x4f;
williamr@2
    63
const TUint KPartitionTypeOnTrackDM=0x50;
williamr@2
    64
const TUint KPartitionTypeOnTrackDM6Aux=0x51;
williamr@2
    65
const TUint KPartitionTypeCPM=0x52;
williamr@2
    66
const TUint KPartitionTypeOnTrackDM6Aux_2=0x53;
williamr@2
    67
const TUint KPartitionTypeOnTrackDM6=0x54;
williamr@2
    68
const TUint KPartitionTypeEZDrive=0x55;
williamr@2
    69
const TUint KPartitionTypeGoldenBow=0x56;
williamr@2
    70
const TUint KPartitionTypePriamEdisk=0x5c;
williamr@2
    71
const TUint KPartitionTypeSpeedStor=0x61;
williamr@2
    72
const TUint KPartitionTypeGNU_HURD=0x63;
williamr@2
    73
const TUint KPartitionTypeNovellNetware=0x64;
williamr@2
    74
const TUint KPartitionTypeNovellNetware_2=0x65;
williamr@2
    75
const TUint KPartitionTypeDiskSecure=0x70;
williamr@2
    76
const TUint KPartitionTypePCIX=0x75;
williamr@2
    77
const TUint KPartitionTypeOldMinix=0x80;
williamr@2
    78
const TUint KPartitionTypeMinixOldLinux=0x81;
williamr@2
    79
const TUint KPartitionTypeLinuxSwap=0x82;
williamr@2
    80
const TUint KPartitionTypeLinux=0x83;
williamr@2
    81
const TUint KPartitionTypeOS2Hidden=0x84;
williamr@2
    82
const TUint KPartitionTypeLinuxExtended=0x85;
williamr@2
    83
const TUint KPartitionTypeNTFSvolset=0x86;
williamr@2
    84
const TUint KPartitionTypeNTFSvolset_2=0x87;
williamr@2
    85
const TUint KPartitionTypeLinuxLVM=0x8e;
williamr@2
    86
const TUint KPartitionTypeAmoeba=0x93;
williamr@2
    87
const TUint KPartitionTypeAmoebaBBT=0x94;
williamr@2
    88
const TUint KPartitionTypeBSD_OS=0x9f;
williamr@2
    89
const TUint KPartitionTypeIBMThinkpad=0xa0;
williamr@2
    90
const TUint KPartitionTypeFreeBSD=0xa5;
williamr@2
    91
const TUint KPartitionTypeOpenBSD=0xa6;
williamr@2
    92
const TUint KPartitionTypeNeXTSTEP=0xa7;
williamr@2
    93
const TUint KPartitionTypeNetBSD=0xa9;
williamr@2
    94
const TUint KPartitionTypeBSDIfs=0xb7;
williamr@2
    95
const TUint KPartitionTypeBSDIswap=0xb8;
williamr@2
    96
const TUint KPartitionTypeBootWizardHidden=0xbb;
williamr@2
    97
const TUint KPartitionTypeDRDOS=0xc1;
williamr@2
    98
const TUint KPartitionTypeDRDOS_2=0xc4;
williamr@2
    99
const TUint KPartitionTypeDRDOS_3=0xc6;
williamr@2
   100
const TUint KPartitionTypeSyrinx=0xc7;
williamr@2
   101
const TUint KPartitionTypeNonFSData=0xda;
williamr@2
   102
const TUint KPartitionTypeCPM_CTOS=0xdb;
williamr@2
   103
const TUint KPartitionTypeDellUtility=0xde;
williamr@2
   104
const TUint KPartitionTypeBootIt=0xdf;
williamr@2
   105
const TUint KPartitionTypeDOSaccess=0xe1;
williamr@2
   106
const TUint KPartitionTypeDOS_RO=0xe3;
williamr@2
   107
const TUint KPartitionTypeSymbianCrashLog=0xf0;
williamr@2
   108
const TUint KPartitionTypeSpeedStor_2=0xf1;
williamr@2
   109
const TUint KPartitionTypeDOSsecondary=0xf2;
williamr@2
   110
const TUint KPartitionTypeSpeedStor_3=0xf4;
williamr@2
   111
const TUint	KPartitionTypeRofs=0xfa;			// HACK
williamr@2
   112
const TUint KPartitionTypeIso9660=0xfb;			// hack
williamr@2
   113
const TUint KPartitionTypeEneaLFFS=0xfc;		// hack
williamr@2
   114
const TUint KPartitionTypeLinuxRaidAuto=0xfd;
williamr@2
   115
const TUint KPartitionTypeLANStep=0xfe;
williamr@2
   116
const TUint KPartitionTypeBBT=0xff;
williamr@2
   117
williamr@2
   118
inline TBool PartitionIsFAT(TUint a)
williamr@2
   119
	{
williamr@2
   120
	return (
williamr@2
   121
		a==KPartitionTypeFAT12						||
williamr@2
   122
		a==KPartitionTypeFAT16small					||
williamr@2
   123
		a==KPartitionTypeFAT16						||
williamr@2
   124
		a==KPartitionTypeFAT16						||
williamr@2
   125
		a==KPartitionTypeWin95FAT16LBA				||
williamr@2
   126
		a==KPartitionTypeHiddenFAT12				||
williamr@2
   127
		a==KPartitionTypeHiddenFAT16small			||
williamr@2
   128
		a==KPartitionTypeHiddenFAT16				||
williamr@2
   129
		a==KPartitionTypeHiddenWin95FAT16LBA
williamr@2
   130
		);
williamr@2
   131
	}
williamr@2
   132
williamr@2
   133
inline TBool PartitionIsFAT32(TUint a)
williamr@2
   134
	{
williamr@2
   135
	return (
williamr@2
   136
		a==KPartitionTypeWin95FAT32					||
williamr@2
   137
		a==KPartitionTypeWin95FAT32LBA				||
williamr@2
   138
		a==KPartitionTypeHiddenWin95FAT32			||
williamr@2
   139
		a==KPartitionTypeHiddenWin95FAT32LBA
williamr@2
   140
		);
williamr@2
   141
	}
williamr@2
   142
williamr@2
   143
inline TBool PartitionIsNTFS(TUint a)
williamr@2
   144
	{
williamr@2
   145
	return (
williamr@2
   146
		a==KPartitionTypeNTFS						||
williamr@2
   147
		a==KPartitionTypeHiddenNTFS
williamr@2
   148
		);
williamr@2
   149
	}
williamr@2
   150
williamr@2
   151
//
williamr@2
   152
// Entry in MBR partition table
williamr@2
   153
//
williamr@2
   154
const TUint KBootIndicatorBootable=0x80;
williamr@2
   155
williamr@2
   156
class TMBRPartitionEntry
williamr@2
   157
	{
williamr@2
   158
public:
williamr@2
   159
	TBool IsValidPartition()
williamr@2
   160
		{ return (iNumSectors>0 && iPartitionType!=KPartitionTypeEmpty); }
williamr@2
   161
	TBool IsValidDosPartition()
williamr@2
   162
		{ return (iNumSectors>0 && PartitionIsFAT(iPartitionType)); }
williamr@2
   163
	TBool IsDefaultBootPartition()
williamr@2
   164
		{ return(iX86BootIndicator==KBootIndicatorBootable && (IsValidDosPartition() || IsValidFAT32Partition())); }
williamr@2
   165
	TBool IsValidFAT32Partition()
williamr@2
   166
		{ return (iNumSectors>0 && PartitionIsFAT32(iPartitionType)); }
williamr@2
   167
public:
williamr@2
   168
	TUint8 iX86BootIndicator;
williamr@2
   169
	TUint8 iStartHead;
williamr@2
   170
	TUint8 iStartSector;
williamr@2
   171
	TUint8 iStartCylinder;
williamr@2
   172
	TUint8 iPartitionType;
williamr@2
   173
	TUint8 iEndHead;
williamr@2
   174
	TUint8 iEndSector;
williamr@2
   175
	TUint8 iEndCylinder;
williamr@2
   176
	TUint32 iFirstSector;
williamr@2
   177
	TUint32 iNumSectors;
williamr@2
   178
	};
williamr@2
   179
williamr@2
   180
//
williamr@2
   181
// Defines for Master boot record
williamr@2
   182
//
williamr@2
   183
const TUint KMBRFirstPartitionOffset=0x1BE;
williamr@2
   184
const TUint KMBRSignatureOffset=0x1FE;
williamr@2
   185
const TUint KMBRSignature=0xAA55;
williamr@2
   186
const TInt KMBRMaxPrimaryPartitions=4;
williamr@2
   187
williamr@2
   188
class TMasterBootRecord
williamr@2
   189
	{
williamr@2
   190
public:
williamr@2
   191
	TUint8 iBootCode[KMBRFirstPartitionOffset];
williamr@2
   192
	TMBRPartitionEntry iPartitionEntry[KMBRMaxPrimaryPartitions];
williamr@2
   193
	TUint16 iSignature;
williamr@2
   194
	};
williamr@2
   195
williamr@2
   196
williamr@2
   197
williamr@2
   198
#endif