1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/epoc32/include/d32locd.h Tue Mar 16 16:12:26 2010 +0000
1.3 @@ -0,0 +1,603 @@
1.4 +// Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
1.5 +// All rights reserved.
1.6 +// This component and the accompanying materials are made available
1.7 +// 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
1.8 +// which accompanies this distribution, and is available
1.9 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
1.10 +//
1.11 +// Initial Contributors:
1.12 +// Nokia Corporation - initial contribution.
1.13 +//
1.14 +// Contributors:
1.15 +//
1.16 +// Description:
1.17 +// e32\include\d32locd.h
1.18 +//
1.19 +//
1.20 +
1.21 +#ifndef __D32LOCD_H__
1.22 +#define __D32LOCD_H__
1.23 +#include <e32cmn.h>
1.24 +#include <partitions.h>
1.25 +
1.26 +
1.27 +/**
1.28 +@publishedPartner
1.29 +@released
1.30 +
1.31 +Local media IDs.
1.32 +
1.33 +A media ID is passed to LocDrv::RegisterMediaDevice() when registering
1.34 +a media driver with the local media subsystem.
1.35 +*/
1.36 +enum TMediaDevice { EFixedMedia0, EFixedMedia1, EFixedMedia2, EFixedMedia3,
1.37 + EFixedMedia4, EFixedMedia5, EFixedMedia6, EFixedMedia7,
1.38 + ERemovableMedia0, ERemovableMedia1, ERemovableMedia2, ERemovableMedia3,
1.39 + EInvalidMedia
1.40 + };
1.41 +
1.42 +#define __IS_REMOVABLE(aDevice) (aDevice>=ERemovableMedia0 && aDevice<=ERemovableMedia3)
1.43 +#define __IS_FIXED(aDevice) ((TUint)aDevice<=EFixedMedia7)
1.44 +#define MEDIA_DEVICE_IRAM EFixedMedia0
1.45 +#define MEDIA_DEVICE_LFFS EFixedMedia1
1.46 +#define MEDIA_DEVICE_NAND EFixedMedia2
1.47 +#define MEDIA_DEVICE_MMC ERemovableMedia0
1.48 +#define MEDIA_DEVICE_PCCARD ERemovableMedia1
1.49 +#define MEDIA_DEVICE_CSA ERemovableMedia2
1.50 +
1.51 +typedef signed int TSocket;
1.52 +
1.53 +class TLDriveAssignInfo
1.54 +/**
1.55 +No longer used
1.56 +@internalComponent
1.57 +@removed
1.58 +*/
1.59 + {
1.60 +public:
1.61 + TMediaDevice iDevice;
1.62 + TInt iPriority;
1.63 + };
1.64 +
1.65 +class TMediaDeviceAssignInfo
1.66 +/**
1.67 +No longer used
1.68 +@internalComponent
1.69 +@removed
1.70 +*/
1.71 + {
1.72 +public:
1.73 + TInt iFirstMedia;
1.74 + TInt iLastMedia;
1.75 + };
1.76 +
1.77 +class TLocalDriveCaps
1.78 +/**
1.79 +Drives media capabilities fields
1.80 +
1.81 +@publishedPartner
1.82 +@released
1.83 +*/
1.84 + {
1.85 +public:
1.86 + IMPORT_C TLocalDriveCaps();
1.87 +public:
1.88 + /**
1.89 + Size of drive
1.90 +
1.91 + Note : This is the size of the partition, not the entire media.
1.92 + The entire media size can be obtained from TLocalDriveCapsV4::MediaSizeInBytes()
1.93 + */
1.94 + TInt64 iSize;
1.95 + /**
1.96 + Media Type of drive
1.97 + */
1.98 + TMediaType iType;
1.99 + /**
1.100 + Indicates state of battery if supported
1.101 + */
1.102 + TBatteryState iBattery;
1.103 + /**
1.104 + Attributes of the drive
1.105 + */
1.106 + TUint iDriveAtt;
1.107 + /**
1.108 + Attributes of underlying media
1.109 + */
1.110 + TUint iMediaAtt;
1.111 + /**
1.112 + Base address of media
1.113 + */
1.114 + TUint8* iBaseAddress;
1.115 + /**
1.116 + Identity of the file system used for this media
1.117 + */
1.118 + TUint16 iFileSystemId;
1.119 + /**
1.120 + Partition type of media
1.121 + */
1.122 + TUint16 iPartitionType;
1.123 + };
1.124 +typedef TPckgBuf<TLocalDriveCaps> TLocalDriveCapsBuf;
1.125 +//
1.126 +class TLocalDriveCapsV2 : public TLocalDriveCaps
1.127 +/**
1.128 +Extension to Capabilities fields mainly to support Nor flash
1.129 +
1.130 +@publishedPartner
1.131 +@released
1.132 +*/
1.133 + {
1.134 +public:
1.135 + /**
1.136 + Number of hidden sectors on drive
1.137 + */
1.138 + TUint iHiddenSectors;
1.139 + /**
1.140 + Size of erase unit on media
1.141 + */
1.142 + TUint iEraseBlockSize;
1.143 + };
1.144 +typedef TPckgBuf<TLocalDriveCapsV2> TLocalDriveCapsV2Buf;
1.145 +//
1.146 +
1.147 +
1.148 +
1.149 +/**
1.150 +Format specification for removable media
1.151 +
1.152 +@publishedPartner
1.153 +@released
1.154 +*/
1.155 +class TLDFormatInfo
1.156 + {
1.157 +public:
1.158 + inline TLDFormatInfo();
1.159 +public:
1.160 +
1.161 + TInt64 iCapacity; ///< Format Capacity
1.162 + TUint16 iSectorsPerCluster; ///< Specified sectors per cluster
1.163 + TUint16 iSectorsPerTrack; ///< Specified sectors per track
1.164 + TUint16 iNumberOfSides; ///< Specified number of sides
1.165 +
1.166 + enum TFATBits {EFBDontCare, EFB12 = 12, EFB16 = 16, EFB32 = 32};
1.167 + TFATBits iFATBits; ///< Specified bits per fat table entry
1.168 +
1.169 + TUint16 iReservedSectors; ///< Reserved sector count, required for SD card compliance
1.170 +
1.171 + // Flags field. Allows the number of FAT tables to be specified: set both bits to zero to use the default.
1.172 + enum TFlags {EOneFatTable = 0x01, ETwoFatTables = 0x02};
1.173 + TUint8 iFlags;
1.174 +
1.175 + TUint8 iPad; ///< Padding for offset alignment between kernel and user code
1.176 +
1.177 + };
1.178 +typedef TPckgBuf<TLDFormatInfo> TSpecialFormatInfoBuf;
1.179 +
1.180 +
1.181 +//
1.182 +class TLocalDriveCapsV3 : public TLocalDriveCapsV2
1.183 +/**
1.184 +Extension to Capabilities fields mainly to support removable media format specifications
1.185 +
1.186 +@publishedPartner
1.187 +@released
1.188 +*/
1.189 + {
1.190 +public:
1.191 + /**
1.192 + Format specification
1.193 + */
1.194 + TLDFormatInfo iFormatInfo;
1.195 + /**
1.196 + Set if iFormatInfo is valid
1.197 + */
1.198 + TBool iExtraInfo;
1.199 + /**
1.200 + */
1.201 + TInt iMaxBytesPerFormat;
1.202 + };
1.203 +//The following ASSERTs checks for offset of any TInt64 member be a multiple of 8 as per DEF045510
1.204 +__ASSERT_COMPILE(_FOFF(TLocalDriveCaps,iSize)%8 == 0);
1.205 +__ASSERT_COMPILE(_FOFF(TLocalDriveCapsV3,iFormatInfo.iCapacity) % 8 == 0);
1.206 +
1.207 +
1.208 +typedef TPckgBuf<TLocalDriveCapsV3> TLocalDriveCapsV3Buf;
1.209 +//
1.210 +class TLocalDriveCapsV4 : public TLocalDriveCapsV3
1.211 +/**
1.212 +Extension to Capabilities fields mainly to support Nand flash
1.213 +
1.214 +@publishedPartner
1.215 +@released
1.216 +*/
1.217 + {
1.218 +public:
1.219 + union
1.220 + {
1.221 + /**
1.222 + Number of blocks (for NAND flash)
1.223 + - The entire capacity of NAND media can be calculated using:
1.224 + capacity = iNumOfBlocks * iNumPagesPerBlock * iNumBytesMain
1.225 + */
1.226 + TInt iNumOfBlocks;
1.227 + /**
1.228 + Number of sectors (for other types of media)
1.229 + - The entire capacity of sector based media can be calculated using:
1.230 + capacity = iNumberOfSectors * iSectorSizeInBytes
1.231 + */
1.232 + TUint32 iNumberOfSectors;
1.233 + };
1.234 +
1.235 + /**
1.236 + Number of pages per block
1.237 + */
1.238 + TInt iNumPagesPerBlock;
1.239 +
1.240 + union
1.241 + {
1.242 + /**
1.243 + Number of Bytes in the main array (for NAND flash)
1.244 + - The entire capacity of NAND media can be calculated using:
1.245 + capacity = iNumOfBlocks * iNumPagesPerBlock * iNumBytesMain
1.246 + */
1.247 + TInt iNumBytesMain;
1.248 + /**
1.249 + Number of Bytes in a sector (for other types of media)
1.250 + - The entire capacity of sector based media can be calculated using:
1.251 + capacity = iNumberOfSectors * iSectorSizeInBytes
1.252 + */
1.253 + TUint32 iSectorSizeInBytes;
1.254 + };
1.255 +
1.256 + /**
1.257 + Number of Bytes in the spare array
1.258 + */
1.259 + TInt iNumBytesSpare;
1.260 + /**
1.261 + Effective usable blocks
1.262 + */
1.263 + TInt iEffectiveBlks;
1.264 + /**
1.265 + Start page of drive
1.266 + */
1.267 + TInt iStartPage;
1.268 +public:
1.269 + inline TInt64 MediaSizeInBytes();
1.270 + };
1.271 +typedef TPckgBuf<TLocalDriveCapsV4> TLocalDriveCapsV4Buf;
1.272 +//
1.273 +#define KMaxSerialNumLength 64
1.274 +typedef TBuf8<KMaxSerialNumLength> TMediaSerialNumber;
1.275 +class TLocalDriveCapsV5 : public TLocalDriveCapsV4
1.276 +/**
1.277 +Add serial number support for certain media.
1.278 +
1.279 +@publishedPartner
1.280 +@released
1.281 +*/
1.282 + {
1.283 +public:
1.284 + /**
1.285 + Serial number buffer length, 0 if not supported
1.286 + */
1.287 + TUint iSerialNumLength;
1.288 + /**
1.289 + Serial number buffer
1.290 + */
1.291 + TUint8 iSerialNum[KMaxSerialNumLength];
1.292 + };
1.293 +typedef TPckgBuf<TLocalDriveCapsV5> TLocalDriveCapsV5Buf;
1.294 +
1.295 +
1.296 +class TLocalDriveCapsV7 : public TLocalDriveCapsV5
1.297 +/**
1.298 +Add control mode, object mode, partition size for M18 NOR Flash.
1.299 +*/
1.300 + {
1.301 +public:
1.302 + TUint32 iWriteBufferSize;
1.303 + TUint32 iPartitionSize;
1.304 + TUint32 iControlModeSize;
1.305 + TUint32 iObjectModeSize;
1.306 + };
1.307 +
1.308 +typedef TPckgBuf<TLocalDriveCapsV7> TLocalDriveCapsV7Buf;
1.309 +
1.310 +
1.311 +//
1.312 +/**
1.313 +Extension to Capabilities fields mainly to support reporting block size
1.314 +information of underlying media.
1.315 +
1.316 +@publishedPartner
1.317 +@released
1.318 +*/
1.319 +class TLocalDriveCapsV6 : public TLocalDriveCapsV5
1.320 + {
1.321 +public:
1.322 + /**
1.323 + Block size information of underlying media is required to assist in chosing
1.324 + efficient size of buffers for reading and writing.
1.325 + This information can also be accessed through the function
1.326 + - RFs::VolumeIOParam
1.327 +
1.328 + These functions retrieve this blocksize information by calling the media
1.329 + driver's Caps() function.
1.330 + */
1.331 + TUint iBlockSize;
1.332 +
1.333 +private:
1.334 + /**
1.335 + Reserved space for future use.
1.336 + */
1.337 + TUint32 iSpare[4];
1.338 + };
1.339 +typedef TPckgBuf<TLocalDriveCapsV6> TLocalDriveCapsV6Buf;
1.340 +//
1.341 +class TFormatInfo
1.342 +/**
1.343 +Format information class
1.344 +
1.345 +@publishedPartner
1.346 +@released
1.347 +*/
1.348 + {
1.349 +public:
1.350 + IMPORT_C TFormatInfo();
1.351 +public:
1.352 + TBool iFormatIsCurrent;
1.353 + TInt i512ByteSectorsFormatted;
1.354 + TInt iMaxBytesPerFormat;
1.355 + };
1.356 +//
1.357 +class TErrorInfo
1.358 +/**
1.359 +@internalTechnology
1.360 + */
1.361 + {
1.362 +public:
1.363 + enum TReasonCode
1.364 + {
1.365 + ENoError=0, //No error
1.366 + EBadSector=1, //Error due to corrupt sector
1.367 + };
1.368 +public:
1.369 + TReasonCode iReasonCode;
1.370 + union
1.371 + {
1.372 + // holds position error occurred for KErrCorrupt
1.373 + // It numerically equals number of bytes succesfully read/written during
1.374 + // last disk operation.
1.375 + TInt64 iErrorPos;
1.376 + TInt iOtherInfo;
1.377 + };
1.378 + };
1.379 +typedef TPckgBuf<TErrorInfo> TErrorInfoBuf;
1.380 +//
1.381 +class TLocalDriveMessageData
1.382 +/**
1.383 +@internalTechnology
1.384 +*/
1.385 + {
1.386 +public:
1.387 + inline TLocalDriveMessageData()
1.388 + {}
1.389 + inline TLocalDriveMessageData(TInt64 aPos, TInt aLength, const TAny* aPtr, TInt aHandle, TInt anOffset, TInt aFlags)
1.390 + : iPos(aPos), iLength(aLength), iPtr(aPtr), iHandle(aHandle), iOffset(anOffset), iFlags(aFlags)
1.391 + {}
1.392 +public:
1.393 + TInt64 iPos;
1.394 + TInt iLength;
1.395 + const TAny* iPtr;
1.396 + TInt iHandle;
1.397 + TInt iOffset;
1.398 + TInt iFlags;
1.399 + };
1.400 +
1.401 +class TLocalDriveControlIOData
1.402 +/**
1.403 +Control IO data class
1.404 +
1.405 +@internalTechnology
1.406 +*/
1.407 + {
1.408 +public:
1.409 + inline TLocalDriveControlIOData()
1.410 + {}
1.411 + inline TLocalDriveControlIOData(TInt aCommand, TAny* aParam1, TAny* aParam2, TInt aHandle)
1.412 + : iCommand(aCommand), iParam1(aParam1), iParam2(aParam2), iHandle(aHandle)
1.413 + {}
1.414 +public:
1.415 + TInt iCommand;
1.416 + TAny* iParam1;
1.417 + TAny* iParam2;
1.418 + TInt iHandle;
1.419 + };
1.420 +
1.421 +class TLocalDrivePasswordData
1.422 +/**
1.423 +Password store for password protected media
1.424 +
1.425 +@internalTechnology
1.426 +*/
1.427 + {
1.428 +public:
1.429 + TLocalDrivePasswordData(const TDesC8& aOldPasswd, const TDesC8& aNewPasswd, TBool aStorePasswd)
1.430 + : iOldPasswd(&aOldPasswd), iNewPasswd(&aNewPasswd), iStorePasswd(aStorePasswd)
1.431 + {}
1.432 + TLocalDrivePasswordData()
1.433 + : iOldPasswd(&KNullDesC8), iNewPasswd(&KNullDesC8), iStorePasswd(EFalse)
1.434 + {}
1.435 +public:
1.436 + const TDesC8 *iOldPasswd;
1.437 + const TDesC8 *iNewPasswd;
1.438 + TBool iStorePasswd;
1.439 + };
1.440 +typedef TPckgBuf<TLocalDrivePasswordData> TLocalDrivePasswordDataPckg;
1.441 +
1.442 +
1.443 +class TPasswordStore
1.444 +/**
1.445 +@internalTechnology
1.446 +*/
1.447 + {
1.448 +public:
1.449 + virtual TInt Init()=0;
1.450 + virtual TInt ReadPasswordData(TDes8 &aBuf)=0;
1.451 + virtual TInt WritePasswordData(TDesC8 &aBuf)=0;
1.452 + virtual TInt PasswordStoreLengthInBytes()=0;
1.453 + enum {EMaxPasswordLength=1024}; /**< Size of the password store write buffer, which may contain multiple password mappings */
1.454 + };
1.455 +
1.456 +class TMountInfoData
1.457 +/**
1.458 +@internalTechnology
1.459 +*/
1.460 + {
1.461 +public:
1.462 + TDesC8* iInfo;
1.463 + TAny* iThread;
1.464 + };
1.465 +
1.466 +
1.467 +const TInt KLocalDriveMajorVersion=1;
1.468 +const TInt KLocalDriveMinorVersion=0;
1.469 +const TInt KLocalDriveBuildVersion=160;
1.470 +_LIT(KLitLocalDriveLddName,"LocDrv");
1.471 +
1.472 +const TInt KLocalMessageHandle=-1;
1.473 +
1.474 +
1.475 +enum TMediaPagingStats
1.476 + {
1.477 + EMediaPagingStatsRomAndCode,
1.478 + EMediaPagingStatsRom,
1.479 + EMediaPagingStatsCode
1.480 + };
1.481 +
1.482 +
1.483 +class RLocalDrive : public RBusLogicalChannel
1.484 +/**
1.485 +Interface class to local media
1.486 +
1.487 +@internalTechnology
1.488 +*/
1.489 + {
1.490 +public:
1.491 + enum TControl
1.492 + {
1.493 + EControlRead=0, /**< Read request */
1.494 + EControlWrite=1, /**< Write request */
1.495 + EControlCaps=2, /**< Caps request */
1.496 + EControlFormat=3, /**< Format request */
1.497 + EControlEnlarge=4, /**< Enlarge drive request */
1.498 + EControlReduce=5, /**< Reduce Drive request */
1.499 + EControlForceMediaChange=6, /**< Force media change request */
1.500 + EControlMediaDevice=7, /**< Return the media device request */
1.501 + EControlPasswordLock=8, /**< Password lock media request */
1.502 + EControlPasswordUnlock=9, /**< Password unlock media request */
1.503 + EControlPasswordClear=10, /**< Password clear request */
1.504 + EControlNotifyChange=11, /**< Notify change request */
1.505 + EControlNotifyChangeCancel=12, /**< Notify change cancel request */
1.506 + EControlReadPasswordStore=13, /**< Read password request */
1.507 + EControlWritePasswordStore=14, /**< Write password request */
1.508 + EControlPasswordStoreLengthInBytes=15, /**< Password request */
1.509 + EControlIsRemovable=16, /**< Query removable request */
1.510 + EControlSetMountInfo=17, /**< Set mount info request */
1.511 + EControlControlIO=18, /**< Control IO request */
1.512 + EControlPasswordErase=19, /**< Password erase media request */
1.513 + EControlDeleteNotify=20, /**< Delete notification */
1.514 + EControlGetLastErrorInfo=21, /**< Get last error info request */
1.515 + };
1.516 +
1.517 + enum TRemountFlags
1.518 + {
1.519 + ELocDrvRemountNotifyChange = 0, /**< Notify clients of media change but don't remount */
1.520 + ELocDrvRemountForceMediaChange = 1, /**< Notify clients of media change and remount */
1.521 + };
1.522 +
1.523 + enum TReadWriteFlags
1.524 + {
1.525 + ELocDrvMetaData = 0x80000000, /**< Set if read/write request is for metadata */
1.526 + ELocDrvWholeMedia = 0x40000000 /**< Set to access whole media, rather than partition */
1.527 + };
1.528 +
1.529 +public:
1.530 + inline TVersion VersionRequired() const;
1.531 + inline TInt Connect(TInt aDriveNumber, TBool& aChangedFlag);
1.532 + inline TInt Enlarge(TInt aLength);
1.533 + inline TInt Reduce(TInt aPos, TInt aLength);
1.534 + inline TInt Read(TInt64 aPos, TInt aLength, const TAny* aTrg, TInt aMessageHandle, TInt aOffset, TInt aFlags);
1.535 + inline TInt Read(TInt64 aPos, TInt aLength, const TAny* aTrg, TInt aMessageHandle, TInt anOffset);
1.536 + inline TInt Read(TInt64 aPos, TInt aLength, TDes8& aTrg);
1.537 + inline TInt Write(TInt64 aPos, TInt aLength, const TAny* aSrc, TInt aMessageHandle, TInt aOffset, TInt aFlags);
1.538 + inline TInt Write(TInt64 aPos, TInt aLength, const TAny* aSrc, TInt aMessageHandle, TInt anOffset);
1.539 + inline TInt Write(TInt64 aPos, const TDesC8& aSrc);
1.540 + inline TInt Caps(TDes8& anInfo);
1.541 + inline TInt Format(TInt64 aPos, TInt aLength);
1.542 + inline TInt ForceMediaChange(TInt aMode=0);
1.543 + inline void NotifyChange(TRequestStatus* aStatus);
1.544 + inline void NotifyChangeCancel();
1.545 + inline TInt SetMountInfo(const TDesC8* aInfo,TInt aMessageHandle);
1.546 + inline TMediaDevice MediaDevice();
1.547 + inline TInt IsRemovable(TInt& aSocketNum);
1.548 + inline TInt ControlIO(TInt aCommand, TAny* aParam1, TAny* aParam2);
1.549 + inline TInt Unlock(const TDesC8& aPassword, TBool aStorePassword);
1.550 + inline TInt SetPassword(const TDesC8& aOldPassword, const TDesC8& aNewPassword, TBool aStorePassword);
1.551 + inline TInt Clear(const TDesC8& aPassword);
1.552 + inline TInt ErasePassword();
1.553 + inline TInt ReadPasswordData(TDesC8& aStoreData);
1.554 + inline TInt WritePasswordData(const TDesC8& aStoreData);
1.555 + inline TInt PasswordStoreLengthInBytes();
1.556 + inline TInt DeleteNotify(TInt64 aPos, TInt aLength);
1.557 + inline TInt GetLastErrorInfo(TDesC8& aErrorInfo);
1.558 + };
1.559 +//
1.560 +#ifndef __KERNEL_MODE__
1.561 +class TBusLocalDrive : public RLocalDrive
1.562 +/**
1.563 +@internalTechnology
1.564 +*/
1.565 + {
1.566 +public:
1.567 + IMPORT_C TBusLocalDrive();
1.568 + IMPORT_C TInt Connect(TInt aDriveNumber, TBool& aChangedFlag);
1.569 + IMPORT_C void Disconnect();
1.570 + IMPORT_C TInt Enlarge(TInt aLength);
1.571 + IMPORT_C TInt ReduceSize(TInt aPos, TInt aLength);
1.572 + IMPORT_C TInt Read(TInt64 aPos,TInt aLength,const TAny* aTrg,TInt aMessageHandle,TInt aOffset,TInt aFlags);
1.573 + IMPORT_C TInt Read(TInt64 aPos,TInt aLength,const TAny* aTrg,TInt aMessageHandle,TInt anOffset);
1.574 + IMPORT_C TInt Read(TInt64 aPos,TInt aLength,TDes8& aTrg);
1.575 + IMPORT_C TInt Write(TInt64 aPos,TInt aLength,const TAny* aSrc,TInt aMessageHandle,TInt aOffset,TInt aFlags);
1.576 + IMPORT_C TInt Write(TInt64 aPos,TInt aLength,const TAny* aSrc,TInt aMessageHandle,TInt anOffset);
1.577 + IMPORT_C TInt Write(TInt64 aPos,const TDesC8& aSrc);
1.578 + IMPORT_C TInt Caps(TDes8& anInfo);
1.579 + IMPORT_C TInt Format(TFormatInfo& anInfo);
1.580 + IMPORT_C TInt Format(TInt64 aPos,TInt aLength);
1.581 + IMPORT_C TInt SetMountInfo(const TDesC8* aMountInfo,TInt aMessageHandle);
1.582 + IMPORT_C TInt ForceRemount(TUint aFlags=0);
1.583 + IMPORT_C TInt ControlIO(TInt aCommand, TAny* aParam1, TAny* aParam2);
1.584 +
1.585 + IMPORT_C TInt Unlock(const TDesC8& aPassword, TBool aStorePassword);
1.586 + IMPORT_C TInt SetPassword(const TDesC8& aOldPassword, const TDesC8& aNewPassword, TBool aStorePassword);
1.587 + IMPORT_C TInt Clear(const TDesC8& aPassword);
1.588 + IMPORT_C TInt ErasePassword();
1.589 + IMPORT_C TInt ReadPasswordData(TDes8 &aBuf);
1.590 + IMPORT_C TInt WritePasswordData(const TDesC8 &aBuf);
1.591 + IMPORT_C TInt PasswordStoreLengthInBytes();
1.592 + IMPORT_C TInt DeleteNotify(TInt64 aPos, TInt aLength);
1.593 + IMPORT_C TInt GetLastErrorInfo(TDes8& aErrorInfo);
1.594 +public:
1.595 + inline TInt& Status() {return(iStatus);}
1.596 +private:
1.597 + TInt CheckMount();
1.598 +private:
1.599 + TInt iStatus;
1.600 + };
1.601 +#endif
1.602 +
1.603 +#define _LOCKABLE_MEDIA
1.604 +
1.605 +#include <d32locd.inl>
1.606 +#endif