epoc32/include/d32locd.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\d32locd.h
williamr@2
    15
// 
williamr@2
    16
//
williamr@2
    17
williamr@2
    18
#ifndef __D32LOCD_H__
williamr@2
    19
#define __D32LOCD_H__
williamr@2
    20
#include <e32cmn.h>
williamr@2
    21
#include <partitions.h>
williamr@2
    22
williamr@2
    23
williamr@2
    24
/**
williamr@2
    25
@publishedPartner
williamr@2
    26
@released
williamr@2
    27
williamr@2
    28
Local media IDs.
williamr@2
    29
williamr@2
    30
A media ID is passed to LocDrv::RegisterMediaDevice() when registering
williamr@2
    31
a media driver with the local media subsystem.
williamr@2
    32
*/
williamr@2
    33
enum TMediaDevice { EFixedMedia0, EFixedMedia1, EFixedMedia2, EFixedMedia3,
williamr@2
    34
					EFixedMedia4, EFixedMedia5, EFixedMedia6, EFixedMedia7,
williamr@2
    35
					ERemovableMedia0, ERemovableMedia1, ERemovableMedia2, ERemovableMedia3,
williamr@2
    36
					EInvalidMedia
williamr@2
    37
				};
williamr@2
    38
williamr@2
    39
#define __IS_REMOVABLE(aDevice) (aDevice>=ERemovableMedia0 && aDevice<=ERemovableMedia3)
williamr@2
    40
#define __IS_FIXED(aDevice) ((TUint)aDevice<=EFixedMedia7)
williamr@2
    41
#define MEDIA_DEVICE_IRAM EFixedMedia0
williamr@2
    42
#define MEDIA_DEVICE_LFFS EFixedMedia1
williamr@2
    43
#define MEDIA_DEVICE_NAND EFixedMedia2
williamr@2
    44
#define MEDIA_DEVICE_MMC ERemovableMedia0
williamr@2
    45
#define MEDIA_DEVICE_PCCARD ERemovableMedia1
williamr@2
    46
#define MEDIA_DEVICE_CSA ERemovableMedia2
williamr@2
    47
williamr@2
    48
typedef signed int TSocket;
williamr@2
    49
williamr@2
    50
class TLDriveAssignInfo
williamr@2
    51
/**
williamr@2
    52
No longer used
williamr@2
    53
@internalComponent
williamr@2
    54
@removed
williamr@2
    55
*/
williamr@2
    56
	{
williamr@2
    57
public:
williamr@2
    58
	TMediaDevice iDevice;
williamr@2
    59
	TInt iPriority;
williamr@2
    60
	};
williamr@2
    61
williamr@2
    62
class TMediaDeviceAssignInfo
williamr@2
    63
/**
williamr@2
    64
No longer used
williamr@2
    65
@internalComponent
williamr@2
    66
@removed
williamr@2
    67
*/
williamr@2
    68
	{
williamr@2
    69
public:
williamr@2
    70
	TInt iFirstMedia;
williamr@2
    71
	TInt iLastMedia;	
williamr@2
    72
	};
williamr@2
    73
williamr@2
    74
class TLocalDriveCaps
williamr@2
    75
/**
williamr@2
    76
Drives media capabilities fields
williamr@2
    77
williamr@2
    78
@publishedPartner
williamr@2
    79
@released
williamr@2
    80
*/
williamr@2
    81
	{
williamr@2
    82
public:
williamr@2
    83
	IMPORT_C TLocalDriveCaps();
williamr@2
    84
public:
williamr@2
    85
	/**
williamr@2
    86
	Size of drive
williamr@2
    87
	
williamr@2
    88
	Note : This is the size of the partition, not the entire media.
williamr@2
    89
		   The entire media size can be obtained from TLocalDriveCapsV4::MediaSizeInBytes()
williamr@2
    90
	*/
williamr@2
    91
	TInt64 iSize;
williamr@2
    92
	/**
williamr@2
    93
	Media Type of drive
williamr@2
    94
	*/
williamr@2
    95
	TMediaType iType;
williamr@2
    96
	/**
williamr@2
    97
	Indicates state of battery if supported
williamr@2
    98
	*/
williamr@2
    99
	TBatteryState iBattery;
williamr@2
   100
	/**
williamr@2
   101
	Attributes of the drive
williamr@2
   102
	*/
williamr@2
   103
	TUint iDriveAtt;
williamr@2
   104
	/**
williamr@2
   105
	Attributes of underlying media 
williamr@2
   106
	*/
williamr@2
   107
	TUint iMediaAtt;
williamr@2
   108
	/**
williamr@2
   109
	Base address of media
williamr@2
   110
	*/
williamr@2
   111
    TUint8* iBaseAddress;
williamr@2
   112
	/**
williamr@2
   113
	Identity of the file system used for this media
williamr@2
   114
	*/
williamr@2
   115
	TUint16 iFileSystemId;
williamr@2
   116
	/**
williamr@2
   117
	Partition type of media
williamr@2
   118
	*/
williamr@2
   119
	TUint16	iPartitionType;
williamr@2
   120
	};
williamr@2
   121
typedef TPckgBuf<TLocalDriveCaps> TLocalDriveCapsBuf;
williamr@2
   122
//
williamr@2
   123
class TLocalDriveCapsV2 : public TLocalDriveCaps
williamr@2
   124
/**
williamr@2
   125
Extension to Capabilities fields mainly to support Nor flash
williamr@2
   126
williamr@2
   127
@publishedPartner
williamr@2
   128
@released
williamr@2
   129
*/
williamr@2
   130
	{
williamr@2
   131
public:
williamr@2
   132
	/**
williamr@2
   133
	Number of hidden sectors on drive
williamr@2
   134
	*/
williamr@2
   135
	TUint iHiddenSectors;
williamr@2
   136
	/**
williamr@2
   137
	Size of erase unit on media
williamr@2
   138
	*/
williamr@2
   139
	TUint iEraseBlockSize;
williamr@2
   140
    };
williamr@2
   141
typedef TPckgBuf<TLocalDriveCapsV2> TLocalDriveCapsV2Buf;
williamr@2
   142
//
williamr@2
   143
williamr@2
   144
williamr@2
   145
williamr@2
   146
/**
williamr@2
   147
Format specification for removable media
williamr@2
   148
williamr@2
   149
@publishedPartner
williamr@2
   150
@released
williamr@2
   151
*/
williamr@2
   152
class TLDFormatInfo
williamr@2
   153
	{
williamr@2
   154
public:
williamr@2
   155
    inline TLDFormatInfo();
williamr@2
   156
public:
williamr@2
   157
williamr@2
   158
    TInt64 iCapacity;				///< Format Capacity
williamr@2
   159
	TUint16 iSectorsPerCluster;		///< Specified sectors per cluster
williamr@2
   160
	TUint16 iSectorsPerTrack;		///< Specified sectors per track
williamr@2
   161
	TUint16 iNumberOfSides;			///< Specified number of sides
williamr@2
   162
williamr@2
   163
	enum TFATBits {EFBDontCare, EFB12 = 12, EFB16 = 16, EFB32 = 32};
williamr@2
   164
	TFATBits iFATBits;				///< Specified bits per fat table entry
williamr@2
   165
williamr@2
   166
	TUint16 iReservedSectors;	///< Reserved sector count, required for SD card compliance
williamr@2
   167
	
williamr@2
   168
	// Flags field. Allows the number of FAT tables to be specified: set both bits to zero to use the default.
williamr@2
   169
	enum TFlags {EOneFatTable = 0x01, ETwoFatTables = 0x02};
williamr@2
   170
	TUint8 iFlags;
williamr@2
   171
williamr@2
   172
	TUint8 iPad;				///< Padding for offset alignment  between kernel and user code
williamr@2
   173
williamr@2
   174
	};
williamr@2
   175
typedef TPckgBuf<TLDFormatInfo> TSpecialFormatInfoBuf;
williamr@2
   176
williamr@2
   177
williamr@2
   178
//
williamr@2
   179
class TLocalDriveCapsV3 : public TLocalDriveCapsV2
williamr@2
   180
/**
williamr@2
   181
Extension to Capabilities fields mainly to support removable media format specifications
williamr@2
   182
williamr@2
   183
@publishedPartner
williamr@2
   184
@released
williamr@2
   185
*/
williamr@2
   186
	{
williamr@2
   187
public:
williamr@2
   188
	/**
williamr@2
   189
	Format specification
williamr@2
   190
	*/
williamr@2
   191
	TLDFormatInfo iFormatInfo;
williamr@2
   192
	/**
williamr@2
   193
	Set if iFormatInfo is valid
williamr@2
   194
	*/
williamr@2
   195
	TBool iExtraInfo;
williamr@2
   196
	/**
williamr@2
   197
	*/
williamr@2
   198
	TInt iMaxBytesPerFormat;
williamr@2
   199
    };
williamr@2
   200
//The following ASSERTs checks for offset of any TInt64 member be a multiple of 8 as per DEF045510
williamr@2
   201
__ASSERT_COMPILE(_FOFF(TLocalDriveCaps,iSize)%8 == 0);
williamr@2
   202
__ASSERT_COMPILE(_FOFF(TLocalDriveCapsV3,iFormatInfo.iCapacity) % 8 == 0);
williamr@2
   203
williamr@2
   204
williamr@2
   205
typedef TPckgBuf<TLocalDriveCapsV3> TLocalDriveCapsV3Buf;
williamr@2
   206
//
williamr@2
   207
class TLocalDriveCapsV4 : public TLocalDriveCapsV3
williamr@2
   208
/**
williamr@2
   209
Extension to Capabilities fields mainly to support Nand flash
williamr@2
   210
williamr@2
   211
@publishedPartner
williamr@2
   212
@released
williamr@2
   213
*/
williamr@2
   214
	{
williamr@2
   215
public:
williamr@2
   216
	union
williamr@2
   217
		{
williamr@2
   218
		/**
williamr@2
   219
		Number of blocks (for NAND flash)
williamr@2
   220
		 - The entire capacity of NAND media can be calculated using:
williamr@2
   221
		   capacity = iNumOfBlocks * iNumPagesPerBlock * iNumBytesMain
williamr@2
   222
		*/
williamr@2
   223
		TInt iNumOfBlocks;
williamr@2
   224
		/**
williamr@2
   225
		Number of sectors (for other types of media)
williamr@2
   226
		 - The entire capacity of sector based media can be calculated using:
williamr@2
   227
		   capacity = iNumberOfSectors * iSectorSizeInBytes
williamr@2
   228
		*/
williamr@2
   229
		TUint32 iNumberOfSectors;
williamr@2
   230
		};
williamr@2
   231
williamr@2
   232
	/**
williamr@2
   233
	Number of pages per block
williamr@2
   234
	*/
williamr@2
   235
	TInt iNumPagesPerBlock;
williamr@2
   236
williamr@2
   237
	union
williamr@2
   238
		{
williamr@2
   239
		/**
williamr@2
   240
		Number of Bytes in the main array (for NAND flash)
williamr@2
   241
		 - The entire capacity of NAND media can be calculated using:
williamr@2
   242
		   capacity = iNumOfBlocks * iNumPagesPerBlock * iNumBytesMain
williamr@2
   243
		*/
williamr@2
   244
		TInt iNumBytesMain;
williamr@2
   245
		/**
williamr@2
   246
		Number of Bytes in a sector (for other types of media)
williamr@2
   247
		 - The entire capacity of sector based media can be calculated using:
williamr@2
   248
		   capacity = iNumberOfSectors * iSectorSizeInBytes
williamr@2
   249
		*/
williamr@2
   250
		TUint32 iSectorSizeInBytes;
williamr@2
   251
		};
williamr@2
   252
williamr@2
   253
	/**
williamr@2
   254
	Number of Bytes in the spare array
williamr@2
   255
	*/
williamr@2
   256
	TInt iNumBytesSpare;
williamr@2
   257
	/**
williamr@2
   258
	Effective usable blocks
williamr@2
   259
	*/
williamr@2
   260
	TInt iEffectiveBlks;
williamr@2
   261
	/**
williamr@2
   262
	Start page of drive
williamr@2
   263
	*/
williamr@2
   264
	TInt iStartPage;
williamr@2
   265
public:
williamr@2
   266
	inline TInt64 MediaSizeInBytes();
williamr@2
   267
    };
williamr@2
   268
typedef TPckgBuf<TLocalDriveCapsV4> TLocalDriveCapsV4Buf;
williamr@2
   269
//
williamr@2
   270
#define KMaxSerialNumLength 64
williamr@2
   271
typedef TBuf8<KMaxSerialNumLength> TMediaSerialNumber;
williamr@2
   272
class TLocalDriveCapsV5 : public TLocalDriveCapsV4
williamr@2
   273
/**
williamr@2
   274
Add serial number support for certain media.
williamr@2
   275
williamr@2
   276
@publishedPartner
williamr@2
   277
@released
williamr@2
   278
*/
williamr@2
   279
	{
williamr@2
   280
public:
williamr@2
   281
	/**
williamr@2
   282
    Serial number buffer length, 0 if not supported
williamr@2
   283
	*/
williamr@2
   284
    TUint iSerialNumLength;
williamr@2
   285
	/**
williamr@2
   286
    Serial number buffer
williamr@2
   287
	*/
williamr@2
   288
	TUint8 iSerialNum[KMaxSerialNumLength];
williamr@2
   289
	};
williamr@2
   290
typedef TPckgBuf<TLocalDriveCapsV5> TLocalDriveCapsV5Buf;
williamr@2
   291
williamr@2
   292
williamr@2
   293
class TLocalDriveCapsV7 : public TLocalDriveCapsV5
williamr@2
   294
/**
williamr@2
   295
Add control mode, object mode, partition size for M18 NOR Flash.
williamr@2
   296
*/
williamr@2
   297
	{
williamr@2
   298
public:
williamr@2
   299
    TUint32 iWriteBufferSize;
williamr@2
   300
	TUint32 iPartitionSize;
williamr@2
   301
    TUint32 iControlModeSize;
williamr@2
   302
    TUint32 iObjectModeSize;
williamr@2
   303
	};
williamr@2
   304
williamr@2
   305
typedef TPckgBuf<TLocalDriveCapsV7> TLocalDriveCapsV7Buf;
williamr@2
   306
williamr@2
   307
williamr@2
   308
//
williamr@2
   309
/**
williamr@2
   310
Extension to Capabilities fields mainly to support reporting block size 
williamr@2
   311
information of underlying media.
williamr@2
   312
    
williamr@2
   313
@publishedPartner
williamr@2
   314
@released
williamr@2
   315
*/
williamr@2
   316
class TLocalDriveCapsV6 : public TLocalDriveCapsV5
williamr@2
   317
	{
williamr@2
   318
public:
williamr@2
   319
	/**
williamr@2
   320
	Block size information of underlying media is required to assist in chosing 
williamr@2
   321
	efficient size of buffers for reading and writing.
williamr@2
   322
	This information can also be accessed through the function
williamr@2
   323
	- RFs::VolumeIOParam
williamr@2
   324
williamr@2
   325
	These functions retrieve this blocksize information by calling the media
williamr@2
   326
	driver's Caps() function.
williamr@2
   327
	*/
williamr@2
   328
    TUint 	iBlockSize;
williamr@2
   329
    
williamr@2
   330
private:
williamr@2
   331
    /**
williamr@2
   332
    Reserved space for future use.
williamr@2
   333
    */
williamr@2
   334
    TUint32	iSpare[4];
williamr@2
   335
	};
williamr@2
   336
typedef TPckgBuf<TLocalDriveCapsV6> TLocalDriveCapsV6Buf;
williamr@2
   337
//
williamr@2
   338
class TFormatInfo
williamr@2
   339
/**
williamr@2
   340
Format information class
williamr@2
   341
williamr@2
   342
@publishedPartner
williamr@2
   343
@released
williamr@2
   344
*/
williamr@2
   345
	{
williamr@2
   346
public:
williamr@2
   347
	IMPORT_C TFormatInfo();
williamr@2
   348
public:
williamr@2
   349
	TBool iFormatIsCurrent;
williamr@2
   350
	TInt i512ByteSectorsFormatted; 
williamr@2
   351
	TInt iMaxBytesPerFormat;
williamr@2
   352
	};
williamr@2
   353
//
williamr@2
   354
class TErrorInfo
williamr@2
   355
/**
williamr@2
   356
@internalTechnology
williamr@2
   357
  */
williamr@2
   358
	{
williamr@2
   359
public:
williamr@2
   360
	enum TReasonCode
williamr@2
   361
		{
williamr@2
   362
		ENoError=0,			//No error
williamr@2
   363
		EBadSector=1,	//Error due to corrupt sector
williamr@2
   364
		};
williamr@2
   365
public:
williamr@2
   366
    TReasonCode iReasonCode;
williamr@2
   367
	union
williamr@2
   368
		{
williamr@2
   369
		// holds position error occurred for KErrCorrupt
williamr@2
   370
		// It numerically equals number of bytes succesfully read/written during
williamr@2
   371
		// last disk operation.
williamr@2
   372
		TInt64 iErrorPos;
williamr@2
   373
        TInt iOtherInfo;
williamr@2
   374
		};
williamr@2
   375
    };
williamr@2
   376
typedef TPckgBuf<TErrorInfo> TErrorInfoBuf;
williamr@2
   377
//
williamr@2
   378
class TLocalDriveMessageData
williamr@2
   379
/**
williamr@2
   380
@internalTechnology
williamr@2
   381
*/
williamr@2
   382
	{
williamr@2
   383
public:
williamr@2
   384
	inline TLocalDriveMessageData()
williamr@2
   385
		{}
williamr@2
   386
	inline TLocalDriveMessageData(TInt64 aPos, TInt aLength, const TAny* aPtr, TInt aHandle, TInt anOffset, TInt aFlags)
williamr@2
   387
		: iPos(aPos), iLength(aLength), iPtr(aPtr), iHandle(aHandle), iOffset(anOffset), iFlags(aFlags)
williamr@2
   388
		{}
williamr@2
   389
public:
williamr@2
   390
	TInt64 iPos;
williamr@2
   391
	TInt iLength;
williamr@2
   392
	const TAny* iPtr;
williamr@2
   393
	TInt iHandle;
williamr@2
   394
	TInt iOffset;
williamr@2
   395
	TInt iFlags;
williamr@2
   396
	};
williamr@2
   397
williamr@2
   398
class TLocalDriveControlIOData
williamr@2
   399
/**
williamr@2
   400
Control IO data class
williamr@2
   401
williamr@2
   402
@internalTechnology
williamr@2
   403
*/
williamr@2
   404
	{
williamr@2
   405
public:
williamr@2
   406
	inline TLocalDriveControlIOData()
williamr@2
   407
		{}
williamr@2
   408
	inline TLocalDriveControlIOData(TInt aCommand, TAny* aParam1, TAny* aParam2, TInt aHandle)
williamr@2
   409
		: iCommand(aCommand), iParam1(aParam1), iParam2(aParam2), iHandle(aHandle)
williamr@2
   410
		{}
williamr@2
   411
public:
williamr@2
   412
	TInt iCommand;
williamr@2
   413
	TAny* iParam1;
williamr@2
   414
	TAny* iParam2;
williamr@2
   415
	TInt iHandle;
williamr@2
   416
	};
williamr@2
   417
williamr@2
   418
class TLocalDrivePasswordData
williamr@2
   419
/**
williamr@2
   420
Password store for password protected media
williamr@2
   421
williamr@2
   422
@internalTechnology
williamr@2
   423
*/
williamr@2
   424
	{
williamr@2
   425
public:
williamr@2
   426
	TLocalDrivePasswordData(const TDesC8& aOldPasswd, const TDesC8& aNewPasswd, TBool aStorePasswd)
williamr@2
   427
		: iOldPasswd(&aOldPasswd), iNewPasswd(&aNewPasswd), iStorePasswd(aStorePasswd)
williamr@2
   428
		{}
williamr@2
   429
	TLocalDrivePasswordData()
williamr@2
   430
		: iOldPasswd(&KNullDesC8), iNewPasswd(&KNullDesC8), iStorePasswd(EFalse)
williamr@2
   431
		{}
williamr@2
   432
public:
williamr@2
   433
	const TDesC8 *iOldPasswd;
williamr@2
   434
	const TDesC8 *iNewPasswd;
williamr@2
   435
	TBool iStorePasswd;
williamr@2
   436
	};
williamr@2
   437
typedef TPckgBuf<TLocalDrivePasswordData> TLocalDrivePasswordDataPckg;
williamr@2
   438
williamr@2
   439
williamr@2
   440
class TPasswordStore
williamr@2
   441
/**
williamr@2
   442
@internalTechnology
williamr@2
   443
*/
williamr@2
   444
	{
williamr@2
   445
public:
williamr@2
   446
	virtual TInt Init()=0;
williamr@2
   447
	virtual TInt ReadPasswordData(TDes8 &aBuf)=0;
williamr@2
   448
	virtual TInt WritePasswordData(TDesC8 &aBuf)=0;
williamr@2
   449
	virtual TInt PasswordStoreLengthInBytes()=0;
williamr@2
   450
	enum {EMaxPasswordLength=1024}; /**< Size of the password store write buffer, which may contain multiple password mappings */
williamr@2
   451
	};
williamr@2
   452
williamr@2
   453
class TMountInfoData
williamr@2
   454
/**
williamr@2
   455
@internalTechnology
williamr@2
   456
*/
williamr@2
   457
	{
williamr@2
   458
public:
williamr@2
   459
	TDesC8* iInfo;
williamr@2
   460
	TAny* iThread;
williamr@2
   461
	};
williamr@2
   462
williamr@2
   463
williamr@2
   464
const TInt KLocalDriveMajorVersion=1;
williamr@2
   465
const TInt KLocalDriveMinorVersion=0;
williamr@2
   466
const TInt KLocalDriveBuildVersion=160;
williamr@2
   467
_LIT(KLitLocalDriveLddName,"LocDrv");
williamr@2
   468
williamr@2
   469
const TInt KLocalMessageHandle=-1;
williamr@2
   470
williamr@2
   471
williamr@2
   472
enum TMediaPagingStats
williamr@2
   473
	{
williamr@2
   474
	EMediaPagingStatsRomAndCode,
williamr@2
   475
	EMediaPagingStatsRom,
williamr@2
   476
	EMediaPagingStatsCode
williamr@2
   477
	};
williamr@2
   478
williamr@2
   479
williamr@2
   480
class RLocalDrive : public RBusLogicalChannel
williamr@2
   481
/**
williamr@2
   482
Interface class to local media
williamr@2
   483
williamr@2
   484
@internalTechnology
williamr@2
   485
*/
williamr@2
   486
	{
williamr@2
   487
public:
williamr@2
   488
	enum TControl
williamr@2
   489
		{
williamr@2
   490
		EControlRead=0,							/**< Read request */
williamr@2
   491
		EControlWrite=1,						/**< Write request */
williamr@2
   492
		EControlCaps=2,							/**< Caps request */
williamr@2
   493
		EControlFormat=3,						/**< Format request */
williamr@2
   494
		EControlEnlarge=4,						/**< Enlarge drive request */
williamr@2
   495
		EControlReduce=5,						/**< Reduce Drive  request */
williamr@2
   496
		EControlForceMediaChange=6,				/**< Force media change request */
williamr@2
   497
		EControlMediaDevice=7,					/**< Return the media device request */
williamr@2
   498
		EControlPasswordLock=8,					/**< Password lock media request */
williamr@2
   499
		EControlPasswordUnlock=9,				/**< Password unlock media request */
williamr@2
   500
		EControlPasswordClear=10,				/**< Password clear request */
williamr@2
   501
		EControlNotifyChange=11,				/**< Notify change request */
williamr@2
   502
		EControlNotifyChangeCancel=12,			/**< Notify change cancel request */
williamr@2
   503
		EControlReadPasswordStore=13,			/**< Read password request */
williamr@2
   504
		EControlWritePasswordStore=14,			/**< Write password request */
williamr@2
   505
		EControlPasswordStoreLengthInBytes=15,	/**< Password request */
williamr@2
   506
		EControlIsRemovable=16,					/**< Query removable request */
williamr@2
   507
		EControlSetMountInfo=17,				/**< Set mount info request */
williamr@2
   508
		EControlControlIO=18,					/**< Control IO request */
williamr@2
   509
		EControlPasswordErase=19,				/**< Password erase media request */
williamr@2
   510
		EControlDeleteNotify=20,				/**< Delete notification */
williamr@2
   511
		EControlGetLastErrorInfo=21,			/**< Get last error info request */
williamr@2
   512
		};
williamr@2
   513
williamr@2
   514
	enum TRemountFlags
williamr@2
   515
		{
williamr@2
   516
		ELocDrvRemountNotifyChange	   = 0,		/**< Notify clients of media change but don't remount */
williamr@2
   517
		ELocDrvRemountForceMediaChange = 1,		/**< Notify clients of media change and remount	*/
williamr@2
   518
		};
williamr@2
   519
williamr@2
   520
	enum TReadWriteFlags
williamr@2
   521
		{
williamr@2
   522
		ELocDrvMetaData					= 0x80000000,	/**< Set if read/write request is for metadata */
williamr@2
   523
		ELocDrvWholeMedia				= 0x40000000	/**< Set to access whole media, rather than partition */
williamr@2
   524
		};
williamr@2
   525
williamr@2
   526
public:
williamr@2
   527
	inline TVersion VersionRequired() const;
williamr@2
   528
	inline TInt Connect(TInt aDriveNumber, TBool& aChangedFlag);
williamr@2
   529
	inline TInt Enlarge(TInt aLength);
williamr@2
   530
	inline TInt Reduce(TInt aPos, TInt aLength);
williamr@2
   531
	inline TInt Read(TInt64 aPos, TInt aLength, const TAny* aTrg, TInt aMessageHandle, TInt aOffset, TInt aFlags);
williamr@2
   532
	inline TInt Read(TInt64 aPos, TInt aLength, const TAny* aTrg, TInt aMessageHandle, TInt anOffset);
williamr@2
   533
	inline TInt Read(TInt64 aPos, TInt aLength, TDes8& aTrg);
williamr@2
   534
	inline TInt Write(TInt64 aPos, TInt aLength, const TAny* aSrc, TInt aMessageHandle, TInt aOffset, TInt aFlags);
williamr@2
   535
	inline TInt Write(TInt64 aPos, TInt aLength, const TAny* aSrc, TInt aMessageHandle, TInt anOffset);
williamr@2
   536
	inline TInt Write(TInt64 aPos, const TDesC8& aSrc);
williamr@2
   537
	inline TInt Caps(TDes8& anInfo);
williamr@2
   538
	inline TInt Format(TInt64 aPos, TInt aLength);
williamr@2
   539
	inline TInt ForceMediaChange(TInt aMode=0);
williamr@2
   540
	inline void NotifyChange(TRequestStatus* aStatus);
williamr@2
   541
	inline void NotifyChangeCancel();
williamr@2
   542
	inline TInt SetMountInfo(const TDesC8* aInfo,TInt aMessageHandle);
williamr@2
   543
	inline TMediaDevice MediaDevice();
williamr@2
   544
	inline TInt IsRemovable(TInt& aSocketNum);
williamr@2
   545
	inline TInt ControlIO(TInt aCommand, TAny* aParam1, TAny* aParam2);
williamr@2
   546
	inline TInt Unlock(const TDesC8& aPassword, TBool aStorePassword);
williamr@2
   547
	inline TInt SetPassword(const TDesC8& aOldPassword, const TDesC8& aNewPassword, TBool aStorePassword);
williamr@2
   548
	inline TInt Clear(const TDesC8& aPassword);
williamr@2
   549
	inline TInt ErasePassword();
williamr@2
   550
	inline TInt ReadPasswordData(TDesC8& aStoreData);
williamr@2
   551
	inline TInt WritePasswordData(const TDesC8& aStoreData);
williamr@2
   552
	inline TInt PasswordStoreLengthInBytes();
williamr@2
   553
	inline TInt DeleteNotify(TInt64 aPos, TInt aLength);
williamr@2
   554
	inline TInt GetLastErrorInfo(TDesC8& aErrorInfo);
williamr@2
   555
	};
williamr@2
   556
//
williamr@2
   557
#ifndef __KERNEL_MODE__
williamr@2
   558
class TBusLocalDrive : public RLocalDrive
williamr@2
   559
/**
williamr@2
   560
@internalTechnology
williamr@2
   561
*/
williamr@2
   562
	{
williamr@2
   563
public:
williamr@2
   564
	IMPORT_C TBusLocalDrive();
williamr@2
   565
	IMPORT_C TInt Connect(TInt aDriveNumber, TBool& aChangedFlag);
williamr@2
   566
	IMPORT_C void Disconnect();
williamr@2
   567
	IMPORT_C TInt Enlarge(TInt aLength);
williamr@2
   568
	IMPORT_C TInt ReduceSize(TInt aPos, TInt aLength);
williamr@2
   569
	IMPORT_C TInt Read(TInt64 aPos,TInt aLength,const TAny* aTrg,TInt aMessageHandle,TInt aOffset,TInt aFlags);
williamr@2
   570
	IMPORT_C TInt Read(TInt64 aPos,TInt aLength,const TAny* aTrg,TInt aMessageHandle,TInt anOffset);
williamr@2
   571
	IMPORT_C TInt Read(TInt64 aPos,TInt aLength,TDes8& aTrg);
williamr@2
   572
	IMPORT_C TInt Write(TInt64 aPos,TInt aLength,const TAny* aSrc,TInt aMessageHandle,TInt aOffset,TInt aFlags);
williamr@2
   573
	IMPORT_C TInt Write(TInt64 aPos,TInt aLength,const TAny* aSrc,TInt aMessageHandle,TInt anOffset);
williamr@2
   574
	IMPORT_C TInt Write(TInt64 aPos,const TDesC8& aSrc);
williamr@2
   575
	IMPORT_C TInt Caps(TDes8& anInfo);
williamr@2
   576
	IMPORT_C TInt Format(TFormatInfo& anInfo);
williamr@2
   577
	IMPORT_C TInt Format(TInt64 aPos,TInt aLength);
williamr@2
   578
	IMPORT_C TInt SetMountInfo(const TDesC8* aMountInfo,TInt aMessageHandle);
williamr@2
   579
	IMPORT_C TInt ForceRemount(TUint aFlags=0);
williamr@2
   580
	IMPORT_C TInt ControlIO(TInt aCommand, TAny* aParam1, TAny* aParam2);
williamr@2
   581
williamr@2
   582
	IMPORT_C TInt Unlock(const TDesC8& aPassword, TBool aStorePassword);
williamr@2
   583
	IMPORT_C TInt SetPassword(const TDesC8& aOldPassword, const TDesC8& aNewPassword, TBool aStorePassword);
williamr@2
   584
	IMPORT_C TInt Clear(const TDesC8& aPassword);
williamr@2
   585
	IMPORT_C TInt ErasePassword();
williamr@2
   586
	IMPORT_C TInt ReadPasswordData(TDes8 &aBuf);
williamr@2
   587
	IMPORT_C TInt WritePasswordData(const TDesC8 &aBuf);
williamr@2
   588
	IMPORT_C TInt PasswordStoreLengthInBytes();
williamr@2
   589
	IMPORT_C TInt DeleteNotify(TInt64 aPos, TInt aLength);
williamr@2
   590
	IMPORT_C TInt GetLastErrorInfo(TDes8& aErrorInfo);
williamr@2
   591
public:
williamr@2
   592
	inline TInt& Status() {return(iStatus);}
williamr@2
   593
private:
williamr@2
   594
	TInt CheckMount();
williamr@2
   595
private:
williamr@2
   596
	TInt iStatus;
williamr@2
   597
	};
williamr@2
   598
#endif
williamr@2
   599
williamr@2
   600
#define _LOCKABLE_MEDIA
williamr@2
   601
williamr@2
   602
#include <d32locd.inl>
williamr@2
   603
#endif