epoc32/include/f32file.h
branchSymbian3
changeset 4 837f303aceeb
parent 2 2fe1408b6811
     1.1 --- a/epoc32/include/f32file.h	Wed Mar 31 12:27:01 2010 +0100
     1.2 +++ b/epoc32/include/f32file.h	Wed Mar 31 12:33:34 2010 +0100
     1.3 @@ -1,9 +1,9 @@
     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 +// under the terms of the License "Eclipse Public License v1.0"
     1.9  // which accompanies this distribution, and is available
    1.10 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
    1.11 +// at the URL "http://www.eclipse.org/legal/epl-v10.html".
    1.12  //
    1.13  // Initial Contributors:
    1.14  // Nokia Corporation - initial contribution.
    1.15 @@ -13,8 +13,6 @@
    1.16  // Description:
    1.17  //
    1.18  
    1.19 -
    1.20 -
    1.21  /**
    1.22   @file
    1.23   @publishedAll
    1.24 @@ -28,11 +26,21 @@
    1.25  #include <e32base.h>
    1.26  #endif
    1.27  
    1.28 +#ifndef SYMBIAN_ENABLE_PUBLIC_PLATFORM_HEADER_SPLIT
    1.29 +// Old implementation including platform e32svr.h (which includes the several other platform headers)...
    1.30  #if !defined(__E32SVR_H__)
    1.31  #include <e32svr.h>
    1.32  #endif
    1.33 -
    1.34  #include <e32ldr.h>
    1.35 +#else
    1.36 +// New implementation including only the public headers needed for f32file.h...
    1.37 +#include <e32ldr.h>
    1.38 +// And the public headers previously included via e32svr.h but otherwise not needed for f32file.h...
    1.39 +#include <e32def.h>
    1.40 +#include <e32event.h>
    1.41 +#include <e32debug.h>
    1.42 +#include <e32keys.h> 
    1.43 +#endif
    1.44  
    1.45  
    1.46  /**
    1.47 @@ -132,6 +140,15 @@
    1.48  @publishedAll
    1.49  @released
    1.50  
    1.51 +The maximum number of available proxy drives.
    1.52 +*/
    1.53 +const TInt KMaxProxyDrives=KMaxDrives-KMaxLocalDrives;
    1.54 +
    1.55 +
    1.56 +/**
    1.57 +@publishedAll
    1.58 +@released
    1.59 +
    1.60  Defines a modifiable buffer descriptor to contain a drive list.
    1.61  
    1.62  The descriptor has maximum length KMaxDrives, sufficient to contain
    1.63 @@ -347,7 +364,7 @@
    1.64  	22 - File System Specific
    1.65  	23 - File System Specific
    1.66  	
    1.67 -	24 - Reserved
    1.68 +	24 - KEntryAttPacked
    1.69  	25 - Reserved
    1.70  	26 - Reserved
    1.71  	27 - KEntryAttMatchExclude
    1.72 @@ -479,40 +496,27 @@
    1.73  
    1.74  
    1.75  /**
    1.76 -@publishedPartner
    1.77 +@publishedAll
    1.78  @released
    1.79  
    1.80 -Bit mask used when evaluating whether or not a session gets notified of a 
    1.81 -debug event.
    1.82 -
    1.83 -@see DebugNotifySessions
    1.84 +Indicates that a TEntry (that is generally returned from a TEntryArray) is
    1.85 +stored in packed format where the iSizeHigh and iReserved fields follow the
    1.86 +valid characters of the name string.  Before accessing the aforementioned
    1.87 +members, the entry must be unpacked.
    1.88 +
    1.89  */
    1.90 -const TUint KDebugNotifyMask=0xFF000000; // Reserved for debug notification
    1.91 +const TUint KEntryAttPacked = 0x01000000;
    1.92 +
    1.93  
    1.94  /**
    1.95 -   
    1.96 +@publishedAll
    1.97 +@released
    1.98  */
    1.99  const TUint KMaxMapsPerCall = 0x8;
   1.100  
   1.101  
   1.102  
   1.103  
   1.104 -/** 
   1.105 -@publishedPartner 
   1.106 -@released 
   1.107 -
   1.108 -The default blocksize value.
   1.109 -
   1.110 -This value is returned when you query the blocksize for a media type that does not 
   1.111 -support the concept of 'block' (e.g. NOR flash media).
   1.112 -
   1.113 -@see TVolumeIOParamInfo 
   1.114 -*/
   1.115 -const TUint KDefaultVolumeBlockSize = 512;
   1.116 -
   1.117 -
   1.118 -
   1.119 -
   1.120  enum TNotifyType
   1.121  /**
   1.122  @publishedAll
   1.123 @@ -577,39 +581,35 @@
   1.124  	ENotifyDisk=0x40
   1.125  	};
   1.126  
   1.127 +/**
   1.128 +    @publishedAll
   1.129 +    @released
   1.130 +
   1.131 +    Notification modes for safe media removal notification API
   1.132 +
   1.133 +    @see RFs::NotifyDismount
   1.134 +*/
   1.135  enum TNotifyDismountMode
   1.136 +	{
   1.137 +	/** Used by a client to register for notification of pending dismount. This is the default behaviour for RFs::NotifyDismount*/
   1.138 +	EFsDismountRegisterClient=0x01,
   1.139 +	
   1.140 +	/** 
   1.141 +    Used for graceful file system dismounting with notifying clients of a pending dismount. 
   1.142 +    If all clients have responded by RFs::AllowDismount(), the file system will be dismounted. 
   1.143 +    */
   1.144 +	EFsDismountNotifyClients=0x02,
   1.145 +	
   1.146 +	/**  Used to forcibly dismount the file system without notifying clients. */
   1.147 +	EFsDismountForceDismount=0x03,
   1.148 +	};
   1.149 +
   1.150 +
   1.151 +enum TFileCacheFlags
   1.152  /**
   1.153  @publishedAll
   1.154  @released
   1.155  
   1.156 -Notification modes for safe media removal notification API
   1.157 -
   1.158 -@see RFs::NotifyDismount
   1.159 -*/
   1.160 -	{
   1.161 -	/**
   1.162 -	Used by a client to register for notification of pending dismount.
   1.163 -		- This is the default behaviour for RFs::NotifyDismount
   1.164 -	*/
   1.165 -	EFsDismountRegisterClient=0x01,
   1.166 -	
   1.167 -	/**
   1.168 -	Used to notify clients of a pending dismount.
   1.169 -	*/
   1.170 -	EFsDismountNotifyClients=0x02,
   1.171 -	
   1.172 -	/**
   1.173 -	Used to forcibly dismount the file system without notifying clients.
   1.174 -	*/
   1.175 -	EFsDismountForceDismount=0x03,
   1.176 -	};
   1.177 -
   1.178 -
   1.179 -enum TFileCacheFlags
   1.180 -/**
   1.181 -@publishedPartner
   1.182 -@released
   1.183 -
   1.184  Flags used to enable file server drive-specific caching 
   1.185  */
   1.186  	{
   1.187 @@ -644,34 +644,8 @@
   1.188  	EFileCacheWriteOn = 0x20,	
   1.189  	};
   1.190  
   1.191 -
   1.192 -enum TStartupConfigurationCmd
   1.193  /**
   1.194 -@publishedPartner
   1.195 -@released
   1.196 -
   1.197 -Command used to set file server configuration at startup.
   1.198 -
   1.199 -@see RFs::SetStartupConfiguration()
   1.200 -*/
   1.201 -    {
   1.202 -    /**
   1.203 -    Set loader thread priority
   1.204 -    */
   1.205 -    ELoaderPriority,
   1.206 -
   1.207 -    /**
   1.208 -    Set TDrive flags. Value should be ETrue or EFalse
   1.209 -    */
   1.210 -    ESetRugged,
   1.211 -    /**
   1.212 -    Command upper boundary
   1.213 -    */
   1.214 -    EMaxStartupConfigurationCmd
   1.215 -    };
   1.216 -
   1.217 -/**
   1.218 -@publishedPartner
   1.219 +@publishedAll
   1.220  @released
   1.221  
   1.222  Commands to query specific volume information.
   1.223 @@ -777,11 +751,19 @@
   1.224  	*/
   1.225  	TInt iRecWriteBufSize;
   1.226  
   1.227 +
   1.228 +    /** 
   1.229 +    The maximum file size that is supported by the file system mounted on this volume. 
   1.230 +    Not all file system may provide this parameter;  The value KMaxTUint64 (0xffffffffffffffff) means that this particular file system hasn't 
   1.231 +    provided this information.
   1.232 +    */
   1.233 +    TUint64 iMaxSupportedFileSize;
   1.234 +
   1.235  private:
   1.236  	/*
   1.237  	Reserved space for future use
   1.238  	*/
   1.239 -	TInt iReserved[4];
   1.240 +	TInt iReserved[2];
   1.241  	};
   1.242  
   1.243  enum TDriveNumber
   1.244 @@ -1145,7 +1127,21 @@
   1.245  	/**
   1.246  	Disables read ahead.
   1.247  	*/
   1.248 -	EFileReadAheadOff	=0x00010000
   1.249 +	EFileReadAheadOff	=0x00010000,
   1.250 +
   1.251 +	/**
   1.252 +	Enable delete on close
   1.253 +	*/
   1.254 +	EDeleteOnClose		=0x00020000,
   1.255 +	
   1.256 +	/**
   1.257 +	Enables operations on large files.
   1.258 +	
   1.259 +	@internalTechnology
   1.260 +	
   1.261 +	*/
   1.262 +	EFileBigFile        =0x00040000
   1.263 +
   1.264  	};
   1.265  
   1.266  
   1.267 @@ -1174,43 +1170,67 @@
   1.268  	{
   1.269  	/**
   1.270  	Indicates a high density floppy disk to be formatted.
   1.271 +	
   1.272 +	Obsolete.
   1.273 +	
   1.274 +	Can be ORed with EFullFormat or EQuickFormat, but does not
   1.275 +	have any effect.
   1.276  	*/
   1.277  	EHighDensity,
   1.278      
   1.279      
   1.280      /**
   1.281 -    Indicates a standard floppy disk to be formatted.
   1.282 +    Indicates a low density floppy disk to be formatted.
   1.283 +	
   1.284 +	Obsolete. 
   1.285 +	
   1.286 +	Can be ORed with EFullFormat or EQuickFormat, but does not
   1.287 +	have any effect.
   1.288  	*/
   1.289  	ELowDensity,
   1.290  
   1.291  
   1.292  	/**
   1.293 -	Performs a full format, erasing existing content and resetting the FAT
   1.294 -	and root directory.
   1.295 +	Performs a full format, erasing whole media content and creating 
   1.296 +	new file system layout.
   1.297  	
   1.298 -	This is the default, and can be ORed with bit EHighDensity or ELowDensity.
   1.299 +	This is the default mode.
   1.300  	*/
   1.301  	EFullFormat=0,
   1.302  
   1.303  
   1.304      /**
   1.305 -    Does the minimum required to format the device, only resetting the FAT
   1.306 -    and root directory.
   1.307 -    
   1.308 -    This is the default, and can be ORed with bit EHighDensity or ELowDensity.
   1.309 +    Performs a quick media format, erasing only required minimum media content. 
   1.310 +	For example, for FAT file system it resets FAT and root directory content. 
   1.311 +	Also preserves bad sectors if there are some on the volume.
   1.312  	*/
   1.313  	EQuickFormat=0x100,
   1.314  	
   1.315  	
   1.316  	/**
   1.317 -	Indicates a custom formatting mode.
   1.318 +	Indicates a custom formatting mode. In this mode some optional file system 
   1.319 +	specific parameters may be passed to RFormat::Open().
   1.320 +	
   1.321 +	@see TLDFormatInfo
   1.322 +	@see TInt RFormat::Open(RFs &aFs, const TDesC &aName, TUint aFormatMode, TInt &aCount, const TDesC8 &anInfo);
   1.323  	*/
   1.324  	ESpecialFormat=0x200,
   1.325  
   1.326  	/**
   1.327  	Forced erase of locked media
   1.328  	*/
   1.329 -	EForceErase=0x400
   1.330 +	EForceErase=0x400,
   1.331 +
   1.332 +    /** 
   1.333 +    This flag enables formatting the volume even if it has files or directories opened on it.
   1.334 +    If this flag is specified, the volume will be forcedly dismounted before performing media formatting.
   1.335 + 
   1.336 +    Even with this flag the RFormat::Open() can fail with KErrInUse in following cases:
   1.337 +        1. if there are clamped files on the volume.
   1.338 +        2. there are opened "disk access" objects, like RFormat or RRawDisk on the volume.
   1.339 +    */
   1.340 +    EForceFormat = 0x800,
   1.341 +
   1.342  	};
   1.343  
   1.344  
   1.345 @@ -1256,6 +1276,8 @@
   1.346  	};
   1.347  
   1.348  /**
   1.349 +@publishedAll
   1.350 +@released
   1.351  
   1.352  */
   1.353  class TBlockMapEntry : public TBlockMapEntryBase
   1.354 @@ -1267,7 +1289,9 @@
   1.355  	};
   1.356  
   1.357  /**
   1.358 -   
   1.359 +@publishedAll
   1.360 +@released
   1.361 +
   1.362  */
   1.363  typedef TBuf8<KMaxMapsPerCall*sizeof(TBlockMapEntry)> TBlockArrayDes;
   1.364  
   1.365 @@ -1277,7 +1301,8 @@
   1.366  	};
   1.367  
   1.368  /**
   1.369 -
   1.370 +@publishedAll
   1.371 +@released
   1.372  */
   1.373  enum TBlockMapUsage
   1.374  	{
   1.375 @@ -1327,6 +1352,13 @@
   1.376  	inline TBool IsUidPresent(TUid aUid) const;
   1.377  	inline TBool IsTypeValid() const;
   1.378  	inline TUid MostDerivedUid() const;
   1.379 +	IMPORT_C TInt64 FileSize() const;
   1.380 +	inline void SetFileSize(TInt64 aFileSize);
   1.381 +
   1.382 +private:
   1.383 +	inline void Copy(const TEntry& aEntry);
   1.384 +	inline void Unpack();
   1.385 +
   1.386  public:
   1.387      /**
   1.388      The individual bits within this byte indicate which attributes
   1.389 @@ -1368,10 +1400,11 @@
   1.390  	TBufC<KMaxFileName> iName;
   1.391  	
   1.392  private:	
   1.393 +	TUint32 iSizeHigh; 
   1.394  	/**
   1.395  	Reserved for future expansion
   1.396  	*/
   1.397 -	TUint32 iReserved[2];
   1.398 +	TUint32 iReserved;
   1.399  	};
   1.400  
   1.401  
   1.402 @@ -1404,6 +1437,7 @@
   1.403  	TBuf8<KEntryArraySize> iBuf;
   1.404  	friend class RDir;
   1.405  	friend class RFs;
   1.406 +	friend class TRawEntryArray;
   1.407  	};
   1.408  
   1.409  
   1.410 @@ -1424,14 +1458,14 @@
   1.411      The type of media mounted on the drive.
   1.412      */
   1.413  	TMediaType iType;
   1.414 - 
   1.415 - 
   1.416 +
   1.417 +
   1.418      /**
   1.419      Indicates whether the drive supports a battery, and if so, its state.
   1.420      */
   1.421      TBatteryState iBattery;
   1.422 - 
   1.423 - 
   1.424 +
   1.425 +
   1.426      /**
   1.427      The drive attributes.
   1.428      
   1.429 @@ -1440,7 +1474,8 @@
   1.430      @see KDriveAttRedirected
   1.431      @see KDriveAttSubsted
   1.432      @see KDriveAttInternal
   1.433 -    @see KDriveAttRemovable
   1.434 +    @see KDriveAttRemovable 
   1.435 +    @see KDriveAttExternal 
   1.436      */
   1.437  	TUint iDriveAtt;
   1.438   
   1.439 @@ -1456,11 +1491,12 @@
   1.440      @see KMediaAttLocked
   1.441      */
   1.442  	TUint iMediaAtt;
   1.443 -private:	
   1.444 +
   1.445 +
   1.446  	/**
   1.447 -	Reserved for future expansion
   1.448 +	The type of interface used to connect to the media.
   1.449  	*/
   1.450 -	TUint32 iReserved;	
   1.451 +	TConnectionBusType iConnectionBusType;
   1.452  	};
   1.453  
   1.454  
   1.455 @@ -1531,7 +1567,7 @@
   1.456  	@see TFileCacheFlags
   1.457  	*/
   1.458  	TFileCacheFlags iFileCacheFlags;
   1.459 -
   1.460 +    
   1.461      /**
   1.462      @prototype
   1.463      @internalTechnology
   1.464 @@ -1786,7 +1822,16 @@
   1.465  	};
   1.466  	
   1.467  	
   1.468 +#if defined SYMBIAN_PRIVATE_EFSRV
   1.469 +	#define EFSRV_EXPORT_C
   1.470 +	#define EFSRV_IMPORT_C 
   1.471 +#else
   1.472 +	#define EFSRV_EXPORT_C EXPORT_C
   1.473 +	#define EFSRV_IMPORT_C IMPORT_C
   1.474 +#endif
   1.475  	
   1.476 +// forward declarations from e32ldr_private.h
   1.477 +class RFileClamp;
   1.478  
   1.479  class RFs : public RSessionBase
   1.480  /**
   1.481 @@ -1860,103 +1905,106 @@
   1.482  */
   1.483  	{
   1.484  public:
   1.485 -	IMPORT_C TInt Connect(TInt aMessageSlots=KFileServerDefaultMessageSlots);
   1.486 -	IMPORT_C TVersion Version() const;
   1.487 -	IMPORT_C TInt AddFileSystem(const TDesC& aFileName) const;
   1.488 -	IMPORT_C TInt MountFileSystem(const TDesC& aFileSystemName,TInt aDrive) const;
   1.489 -	IMPORT_C TInt MountFileSystem(const TDesC& aFileSystemName,TInt aDrive, TBool aIsSync) const;
   1.490 -	IMPORT_C TInt MountFileSystemAndScan(const TDesC& aFileSystemName,TInt aDrive,TBool& aIsMountSuccess) const;
   1.491 -	IMPORT_C TInt MountFileSystem(const TDesC& aFileSystemName,const TDesC& aExtensionName,TInt aDrive);
   1.492 -	IMPORT_C TInt MountFileSystem(const TDesC& aFileSystemName,const TDesC& aExtensionName,TInt aDrive, TBool aIsSync);
   1.493 -	IMPORT_C TInt MountFileSystemAndScan(const TDesC& aFileSystemName,const TDesC& aExtensionName,TInt aDrive,TBool& aIsMountSuccess) const;
   1.494 -	IMPORT_C TInt DismountFileSystem(const TDesC& aFileSystemName,TInt aDrive) const;
   1.495 -	IMPORT_C TInt RemoveFileSystem(const TDesC& aFileSystemName) const;
   1.496 -	IMPORT_C TInt FileSystemName(TDes& aName,TInt aDrive) const;
   1.497 -	IMPORT_C TInt AddExtension(const TDesC& aFileName);
   1.498 -	IMPORT_C TInt MountExtension(const TDesC& aExtensionName,TInt aDrive);
   1.499 -	IMPORT_C TInt DismountExtension(const TDesC& aExtensionName,TInt aDrive);
   1.500 -	IMPORT_C TInt RemoveExtension(const TDesC& aExtensionName);
   1.501 -	IMPORT_C TInt ExtensionName(TDes& aExtensionName,TInt aDrive,TInt aPos);
   1.502 -	IMPORT_C TInt RemountDrive(TInt aDrive,const TDesC8* aMountInfo=NULL,TUint aFlags=0);
   1.503 -	IMPORT_C void NotifyChange(TNotifyType aType,TRequestStatus& aStat);
   1.504 -	IMPORT_C void NotifyChange(TNotifyType aType,TRequestStatus& aStat,const TDesC& aPathName);
   1.505 -	IMPORT_C void NotifyChangeCancel();
   1.506 -	IMPORT_C void NotifyChangeCancel(TRequestStatus& aStat);
   1.507 -	IMPORT_C void NotifyDiskSpace(TInt64 aThreshold,TInt aDrive,TRequestStatus& aStat);
   1.508 -	IMPORT_C void NotifyDiskSpaceCancel(TRequestStatus& aStat);
   1.509 -	IMPORT_C void NotifyDiskSpaceCancel();
   1.510 -	IMPORT_C TInt DriveList(TDriveList& aList) const;
   1.511 -	IMPORT_C TInt DriveList(TDriveList& aList, TUint aFlags) const;
   1.512 -	IMPORT_C TInt Drive(TDriveInfo& anInfo,TInt aDrive=KDefaultDrive) const;
   1.513 -	IMPORT_C TInt Volume(TVolumeInfo& aVol,TInt aDrive=KDefaultDrive) const;
   1.514 -    IMPORT_C void Volume(TVolumeInfo& aVol,TInt aDrive, TRequestStatus& aStat) const;
   1.515 -	IMPORT_C TInt SetVolumeLabel(const TDesC& aName,TInt aDrive=KDefaultDrive);
   1.516 -	IMPORT_C TInt Subst(TDes& aPath,TInt aDrive=KDefaultDrive) const;
   1.517 -	IMPORT_C TInt SetSubst(const TDesC& aPath,TInt aDrive=KDefaultDrive);
   1.518 -	IMPORT_C TInt RealName(const TDesC& aName,TDes& aResult) const;
   1.519 -    IMPORT_C TInt GetMediaSerialNumber(TMediaSerialNumber& aSerialNum, TInt aDrive);
   1.520 -	IMPORT_C TInt SessionPath(TDes& aPath) const;
   1.521 -	IMPORT_C TInt SetSessionPath(const TDesC& aPath);
   1.522 -	IMPORT_C TInt Parse(const TDesC& aName,TParse& aParse) const;
   1.523 -	IMPORT_C TInt Parse(const TDesC& aName,const TDesC& aRelated,TParse& aParse) const;
   1.524 -	IMPORT_C TInt MkDir(const TDesC& aPath);
   1.525 -	IMPORT_C TInt MkDirAll(const TDesC& aPath);
   1.526 -	IMPORT_C TInt RmDir(const TDesC& aPath);
   1.527 -	IMPORT_C TInt GetDir(const TDesC& aName,TUint anEntryAttMask,TUint anEntrySortKey,CDir*& anEntryList) const;
   1.528 -	IMPORT_C TInt GetDir(const TDesC& aName,TUint anEntryAttMask,TUint anEntrySortKey,CDir*& anEntryList,CDir*& aDirList) const;
   1.529 -	IMPORT_C TInt GetDir(const TDesC& aName,const TUidType& anEntryUid,TUint anEntrySortKey,CDir*& aFileList) const;
   1.530 -	IMPORT_C TInt Delete(const TDesC& aName);
   1.531 -	IMPORT_C TInt Rename(const TDesC& anOldName,const TDesC& aNewName);
   1.532 -	IMPORT_C TInt Replace(const TDesC& anOldName,const TDesC& aNewName);
   1.533 -	IMPORT_C TInt Att(const TDesC& aName,TUint& aAttValue) const;
   1.534 -	IMPORT_C TInt SetAtt(const TDesC& aName,TUint aSetAttMask,TUint aClearAttMask);
   1.535 -	IMPORT_C TInt Modified(const TDesC& aName,TTime& aTime) const;
   1.536 -	IMPORT_C TInt SetModified(const TDesC& aName,const TTime& aTime);
   1.537 -	IMPORT_C TInt Entry(const TDesC& aName,TEntry& anEntry) const;
   1.538 -	IMPORT_C TInt SetEntry(const TDesC& aName,const TTime& aTime,TUint aSetAttMask,TUint aClearAttMask);
   1.539 -	IMPORT_C TInt ReadFileSection(const TDesC& aName,TInt aPos,TDes8& aDes,TInt aLength) const;
   1.540 -	IMPORT_C static TBool IsValidDrive(TInt aDrive);
   1.541 -	IMPORT_C static TInt CharToDrive(TChar aChar,TInt& aDrive);
   1.542 -	IMPORT_C static TInt DriveToChar(TInt aDrive,TChar& aChar);
   1.543 -	IMPORT_C static TBool IsRomAddress(TAny* aAny);
   1.544 -	IMPORT_C static TDriveNumber GetSystemDrive();
   1.545 -	IMPORT_C static TChar GetSystemDriveChar();
   1.546 -	IMPORT_C TInt SetSystemDrive(TDriveNumber aSystemDrive);
   1.547 -	IMPORT_C void ResourceCountMarkStart() const;
   1.548 -	IMPORT_C void ResourceCountMarkEnd() const;
   1.549 -	IMPORT_C TInt ResourceCount() const;
   1.550 -	IMPORT_C TInt IsFileOpen(const TDesC& aFile,TBool& anAnswer) const;
   1.551 -	IMPORT_C TInt CheckDisk(const TDesC& aDrive) const;
   1.552 -	IMPORT_C TInt ScanDrive(const TDesC& aDrive) const;
   1.553 -	IMPORT_C TInt GetShortName(const TDesC& aLongName,TDes& aShortName) const;
   1.554 -	IMPORT_C TInt GetLongName(const TDesC& aShortName,TDes& aLongName) const;
   1.555 -	IMPORT_C TBool GetNotifyUser();
   1.556 -	IMPORT_C void SetNotifyUser(TBool aValue);
   1.557 -	IMPORT_C TUint8* IsFileInRom(const TDesC& aFileName) const;
   1.558 -	IMPORT_C TBool IsValidName(const TDesC& anEntryName) const;
   1.559 -	IMPORT_C TBool IsValidName(const TDesC& aFileName,TText& aBadChar) const;
   1.560 -	IMPORT_C TInt GetDriveName(TInt aDrive,TDes& aDriveName) const;
   1.561 -	IMPORT_C TInt SetDriveName(TInt aDrive,const TDesC& aDriveName);
   1.562 -	IMPORT_C TInt LoaderHeapFunction(TInt aFunction, TAny *aArg1=NULL, TAny *aArg2=NULL);
   1.563 +	EFSRV_IMPORT_C TInt Connect(TInt aMessageSlots=KFileServerDefaultMessageSlots);
   1.564 +	EFSRV_IMPORT_C void Close();
   1.565 +	EFSRV_IMPORT_C TVersion Version() const;
   1.566 +	EFSRV_IMPORT_C TInt AddFileSystem(const TDesC& aFileName) const;
   1.567 +	EFSRV_IMPORT_C TInt MountFileSystem(const TDesC& aFileSystemName,TInt aDrive) const;
   1.568 +	EFSRV_IMPORT_C TInt MountFileSystem(const TDesC& aFileSystemName,TInt aDrive, TBool aIsSync) const;
   1.569 +	EFSRV_IMPORT_C TInt MountFileSystemAndScan(const TDesC& aFileSystemName,TInt aDrive,TBool& aIsMountSuccess) const;
   1.570 +	EFSRV_IMPORT_C TInt MountFileSystem(const TDesC& aFileSystemName,const TDesC& aExtensionName,TInt aDrive);
   1.571 +	EFSRV_IMPORT_C TInt MountFileSystem(const TDesC& aFileSystemName,const TDesC& aExtensionName,TInt aDrive, TBool aIsSync);
   1.572 +	EFSRV_IMPORT_C TInt MountFileSystemAndScan(const TDesC& aFileSystemName,const TDesC& aExtensionName,TInt aDrive,TBool& aIsMountSuccess) const;
   1.573 +	EFSRV_IMPORT_C TInt DismountFileSystem(const TDesC& aFileSystemName,TInt aDrive) const;
   1.574 +	EFSRV_IMPORT_C TInt RemoveFileSystem(const TDesC& aFileSystemName) const;
   1.575 +	EFSRV_IMPORT_C TInt FileSystemName(TDes& aName,TInt aDrive) const;
   1.576 +	EFSRV_IMPORT_C TInt AddExtension(const TDesC& aFileName);
   1.577 +	EFSRV_IMPORT_C TInt MountExtension(const TDesC& aExtensionName,TInt aDrive);
   1.578 +	EFSRV_IMPORT_C TInt DismountExtension(const TDesC& aExtensionName,TInt aDrive);
   1.579 +	EFSRV_IMPORT_C TInt RemoveExtension(const TDesC& aExtensionName);
   1.580 +	EFSRV_IMPORT_C TInt ExtensionName(TDes& aExtensionName,TInt aDrive,TInt aPos);
   1.581 +	EFSRV_IMPORT_C TInt RemountDrive(TInt aDrive,const TDesC8* aMountInfo=NULL,TUint aFlags=0);
   1.582 +	EFSRV_IMPORT_C void NotifyChange(TNotifyType aType,TRequestStatus& aStat);
   1.583 +	EFSRV_IMPORT_C void NotifyChange(TNotifyType aType,TRequestStatus& aStat,const TDesC& aPathName);
   1.584 +	EFSRV_IMPORT_C void NotifyChangeCancel();
   1.585 +	EFSRV_IMPORT_C void NotifyChangeCancel(TRequestStatus& aStat);
   1.586 +	EFSRV_IMPORT_C void NotifyDiskSpace(TInt64 aThreshold,TInt aDrive,TRequestStatus& aStat);
   1.587 +	EFSRV_IMPORT_C void NotifyDiskSpaceCancel(TRequestStatus& aStat);
   1.588 +	EFSRV_IMPORT_C void NotifyDiskSpaceCancel();
   1.589 +	EFSRV_IMPORT_C TInt DriveList(TDriveList& aList) const;
   1.590 +	EFSRV_IMPORT_C TInt DriveList(TDriveList& aList, TUint aFlags) const;
   1.591 +	EFSRV_IMPORT_C TInt Drive(TDriveInfo& anInfo,TInt aDrive=KDefaultDrive) const;
   1.592 +    EFSRV_IMPORT_C TInt Volume(TVolumeInfo& aVol,TInt aDrive=KDefaultDrive) const;
   1.593 +    EFSRV_IMPORT_C void Volume(TVolumeInfo& aVol,TInt aDrive, TRequestStatus& aStat) const;
   1.594 +	EFSRV_IMPORT_C TInt SetVolumeLabel(const TDesC& aName,TInt aDrive=KDefaultDrive);
   1.595 +	EFSRV_IMPORT_C TInt Subst(TDes& aPath,TInt aDrive=KDefaultDrive) const;
   1.596 +	EFSRV_IMPORT_C TInt SetSubst(const TDesC& aPath,TInt aDrive=KDefaultDrive);
   1.597 +	EFSRV_IMPORT_C TInt RealName(const TDesC& aName,TDes& aResult) const;
   1.598 +    EFSRV_IMPORT_C TInt GetMediaSerialNumber(TMediaSerialNumber& aSerialNum, TInt aDrive);
   1.599 +	EFSRV_IMPORT_C TInt SessionPath(TDes& aPath) const;
   1.600 +	EFSRV_IMPORT_C TInt SetSessionPath(const TDesC& aPath);
   1.601 +	EFSRV_IMPORT_C TInt Parse(const TDesC& aName,TParse& aParse) const;
   1.602 +	EFSRV_IMPORT_C TInt Parse(const TDesC& aName,const TDesC& aRelated,TParse& aParse) const;
   1.603 +	EFSRV_IMPORT_C TInt MkDir(const TDesC& aPath);
   1.604 +	EFSRV_IMPORT_C TInt MkDirAll(const TDesC& aPath);
   1.605 +	EFSRV_IMPORT_C TInt RmDir(const TDesC& aPath);
   1.606 +	EFSRV_IMPORT_C TInt GetDir(const TDesC& aName,TUint anEntryAttMask,TUint anEntrySortKey,CDir*& anEntryList) const;
   1.607 +	EFSRV_IMPORT_C TInt GetDir(const TDesC& aName,TUint anEntryAttMask,TUint anEntrySortKey,CDir*& anEntryList,CDir*& aDirList) const;
   1.608 +	EFSRV_IMPORT_C TInt GetDir(const TDesC& aName,const TUidType& anEntryUid,TUint anEntrySortKey,CDir*& aFileList) const;
   1.609 +	EFSRV_IMPORT_C TInt Delete(const TDesC& aName);
   1.610 +	EFSRV_IMPORT_C TInt Rename(const TDesC& anOldName,const TDesC& aNewName);
   1.611 +	EFSRV_IMPORT_C TInt Replace(const TDesC& anOldName,const TDesC& aNewName);
   1.612 +	EFSRV_IMPORT_C TInt Att(const TDesC& aName,TUint& aAttValue) const;
   1.613 +	EFSRV_IMPORT_C TInt SetAtt(const TDesC& aName,TUint aSetAttMask,TUint aClearAttMask);
   1.614 +	EFSRV_IMPORT_C TInt Modified(const TDesC& aName,TTime& aTime) const;
   1.615 +	EFSRV_IMPORT_C TInt SetModified(const TDesC& aName,const TTime& aTime);
   1.616 +	EFSRV_IMPORT_C TInt Entry(const TDesC& aName,TEntry& anEntry) const;
   1.617 +	EFSRV_IMPORT_C TInt SetEntry(const TDesC& aName,const TTime& aTime,TUint aSetAttMask,TUint aClearAttMask);
   1.618 +private:
   1.619 +	EFSRV_IMPORT_C TInt ReadFileSection_RESERVED(const TDesC& aName,TInt aPos,TDes8& aDes,TInt aLength) const;
   1.620 +public:
   1.621 +	EFSRV_IMPORT_C static TBool IsValidDrive(TInt aDrive);
   1.622 +	EFSRV_IMPORT_C static TInt CharToDrive(TChar aChar,TInt& aDrive);
   1.623 +	EFSRV_IMPORT_C static TInt DriveToChar(TInt aDrive,TChar& aChar);
   1.624 +	EFSRV_IMPORT_C static TBool IsRomAddress(TAny* aAny);
   1.625 +	EFSRV_IMPORT_C static TDriveNumber GetSystemDrive();
   1.626 +	EFSRV_IMPORT_C static TChar GetSystemDriveChar();
   1.627 +	EFSRV_IMPORT_C TInt SetSystemDrive(TDriveNumber aSystemDrive);
   1.628 +	EFSRV_IMPORT_C void ResourceCountMarkStart() const;
   1.629 +	EFSRV_IMPORT_C void ResourceCountMarkEnd() const;
   1.630 +	EFSRV_IMPORT_C TInt ResourceCount() const;
   1.631 +	EFSRV_IMPORT_C TInt IsFileOpen(const TDesC& aFile,TBool& anAnswer) const;
   1.632 +	EFSRV_IMPORT_C TInt CheckDisk(const TDesC& aDrive) const;
   1.633 +	EFSRV_IMPORT_C TInt ScanDrive(const TDesC& aDrive) const;
   1.634 +	EFSRV_IMPORT_C TInt GetShortName(const TDesC& aLongName,TDes& aShortName) const;
   1.635 +	EFSRV_IMPORT_C TInt GetLongName(const TDesC& aShortName,TDes& aLongName) const;
   1.636 +	EFSRV_IMPORT_C TBool GetNotifyUser();
   1.637 +	EFSRV_IMPORT_C void SetNotifyUser(TBool aValue);
   1.638 +	EFSRV_IMPORT_C TUint8* IsFileInRom(const TDesC& aFileName) const;
   1.639 +	EFSRV_IMPORT_C TBool IsValidName(const TDesC& anEntryName) const;
   1.640 +	EFSRV_IMPORT_C TBool IsValidName(const TDesC& aFileName,TText& aBadChar) const;
   1.641 +	EFSRV_IMPORT_C TInt GetDriveName(TInt aDrive,TDes& aDriveName) const;
   1.642 +	EFSRV_IMPORT_C TInt SetDriveName(TInt aDrive,const TDesC& aDriveName);
   1.643 +	EFSRV_IMPORT_C TInt LoaderHeapFunction(TInt aFunction, TAny *aArg1=NULL, TAny *aArg2=NULL);
   1.644  	IMPORT_C TInt SetErrorCondition(TInt anError,TInt aCount=0);
   1.645 -	IMPORT_C TInt SetDebugRegister(TInt aVal);
   1.646 -	IMPORT_C TInt SetAllocFailure(TInt aAllocNum);
   1.647 -	IMPORT_C void DebugNotify(TInt aDrive,TUint aNotifyType,TRequestStatus& aStat);
   1.648 -	IMPORT_C TInt ControlIo(TInt aDrive,TInt aCommand);
   1.649 -	IMPORT_C TInt ControlIo(TInt aDrive,TInt aCommand,TDes8& aParam1);
   1.650 -	IMPORT_C TInt ControlIo(TInt aDrive,TInt aCommand,TDes8& aParam1,TDes8& aParam2);
   1.651 -	IMPORT_C TInt ControlIo(TInt aDrive,TInt aCommand,TAny* aParam1,TAny* aParam2);
   1.652 -	IMPORT_C TInt LockDrive(TInt aDrv, const TMediaPassword &aOld, const TMediaPassword &aNew, TBool aStr);
   1.653 -	IMPORT_C TInt UnlockDrive(TInt aDrv, const TMediaPassword &Pswd, TBool aStr);
   1.654 -	IMPORT_C TInt ClearPassword(TInt aDrv, const TMediaPassword &aPswd);
   1.655 -	IMPORT_C TInt ErasePassword(TInt aDrv);
   1.656 -	IMPORT_C TInt SetSessionToPrivate(TInt aDrive);
   1.657 -	IMPORT_C TInt PrivatePath(TDes& aPath);
   1.658 -	IMPORT_C TInt CreatePrivatePath(TInt aDrive);	
   1.659 -	IMPORT_C void StartupInitComplete(TRequestStatus& aStat);
   1.660 -	IMPORT_C TInt SetLocalDriveMapping(const TDesC8& aMapping);
   1.661 -
   1.662 -	IMPORT_C TInt FinaliseDrives();
   1.663 +	EFSRV_IMPORT_C TInt SetDebugRegister(TInt aVal);
   1.664 +	EFSRV_IMPORT_C TInt SetAllocFailure(TInt aAllocNum);
   1.665 +	EFSRV_IMPORT_C void DebugNotify(TInt aDrive,TUint aNotifyType,TRequestStatus& aStat);
   1.666 +	EFSRV_IMPORT_C TInt ControlIo(TInt aDrive,TInt aCommand);
   1.667 +	EFSRV_IMPORT_C TInt ControlIo(TInt aDrive,TInt aCommand,TDes8& aParam1);
   1.668 +	EFSRV_IMPORT_C TInt ControlIo(TInt aDrive,TInt aCommand,TDes8& aParam1,TDes8& aParam2);
   1.669 +	EFSRV_IMPORT_C TInt ControlIo(TInt aDrive,TInt aCommand,TAny* aParam1,TAny* aParam2);
   1.670 +	EFSRV_IMPORT_C TInt LockDrive(TInt aDrv, const TMediaPassword &aOld, const TMediaPassword &aNew, TBool aStr);
   1.671 +	EFSRV_IMPORT_C TInt UnlockDrive(TInt aDrv, const TMediaPassword &Pswd, TBool aStr);
   1.672 +	EFSRV_IMPORT_C TInt ClearPassword(TInt aDrv, const TMediaPassword &aPswd);
   1.673 +	EFSRV_IMPORT_C TInt ErasePassword(TInt aDrv);
   1.674 +	EFSRV_IMPORT_C TInt SetSessionToPrivate(TInt aDrive);
   1.675 +	EFSRV_IMPORT_C TInt PrivatePath(TDes& aPath);
   1.676 +	EFSRV_IMPORT_C TInt CreatePrivatePath(TInt aDrive);	
   1.677 +	EFSRV_IMPORT_C void StartupInitComplete(TRequestStatus& aStat);
   1.678 +	EFSRV_IMPORT_C TInt SetLocalDriveMapping(const TDesC8& aMapping);
   1.679 +
   1.680 +	EFSRV_IMPORT_C TInt FinaliseDrives();
   1.681      
   1.682      /** specifies drive finalisation modes */
   1.683      enum TFinaliseDrvMode
   1.684 @@ -1966,38 +2014,89 @@
   1.685          EForceUnfinalise///< @internalComponent  mark the drive as "not finalised" can result in KErrAbort if the dive is in inconsistent state.
   1.686          };
   1.687  
   1.688 -    IMPORT_C TInt FinaliseDrive(TInt aDriveNo, TFinaliseDrvMode aMode) const;
   1.689 -
   1.690 -	IMPORT_C TInt SwapFileSystem(const TDesC& aOldFileSystemName,const TDesC& aNewFileSystemName,TInt aDrive) const;
   1.691 -	IMPORT_C TInt ReserveDriveSpace(TInt aDriveNo, TInt aSpace);
   1.692 -	IMPORT_C TInt GetReserveAccess(TInt aDriveNo);
   1.693 -	IMPORT_C TInt ReleaseReserveAccess(TInt aDriveNo);
   1.694 -
   1.695 -	IMPORT_C TInt AddPlugin(const TDesC& aFileName) const;
   1.696 -	IMPORT_C TInt RemovePlugin(const TDesC& aPluginName) const;
   1.697 -	IMPORT_C TInt PluginName(TDes& aPluginName,TInt aDrive,TInt aPos);
   1.698 -
   1.699 -	IMPORT_C TInt MountPlugin(const TDesC& aPluginName) const;
   1.700 -	IMPORT_C TInt MountPlugin(const TDesC& aPluginName,TInt aDrive) const;
   1.701 -	IMPORT_C TInt MountPlugin(const TDesC& aPluginName,TInt aDrive, TInt aPos) const;
   1.702 +    EFSRV_IMPORT_C TInt FinaliseDrive(TInt aDriveNo, TFinaliseDrvMode aMode) const;
   1.703 +
   1.704 +	EFSRV_IMPORT_C TInt SwapFileSystem(const TDesC& aOldFileSystemName,const TDesC& aNewFileSystemName,TInt aDrive) const;
   1.705 +	EFSRV_IMPORT_C TInt ReserveDriveSpace(TInt aDriveNo, TInt aSpace);
   1.706 +	EFSRV_IMPORT_C TInt GetReserveAccess(TInt aDriveNo);
   1.707 +	EFSRV_IMPORT_C TInt ReleaseReserveAccess(TInt aDriveNo);
   1.708 +
   1.709 +	EFSRV_IMPORT_C TInt AddPlugin(const TDesC& aFileName) const;
   1.710 +	EFSRV_IMPORT_C TInt RemovePlugin(const TDesC& aPluginName) const;
   1.711 +	EFSRV_IMPORT_C TInt PluginName(TDes& aPluginName,TInt aDrive,TInt aPos);
   1.712 +
   1.713 +	EFSRV_IMPORT_C TInt MountPlugin(const TDesC& aPluginName) const;
   1.714 +	EFSRV_IMPORT_C TInt MountPlugin(const TDesC& aPluginName,TInt aDrive) const;
   1.715 +	EFSRV_IMPORT_C TInt MountPlugin(const TDesC& aPluginName,TInt aDrive, TInt aPos) const;
   1.716  	
   1.717 -	IMPORT_C TInt DismountPlugin(const TDesC& aPluginName) const;
   1.718 -	IMPORT_C TInt DismountPlugin(const TDesC& aPluginName,TInt aDrive) const;
   1.719 -	IMPORT_C TInt DismountPlugin(const TDesC& aPluginName,TInt aDrive,TInt aPos) const;
   1.720 -
   1.721 -	IMPORT_C void NotifyDismount(TInt aDrive, TRequestStatus& aStat, TNotifyDismountMode aMode=EFsDismountRegisterClient) const;
   1.722 -	IMPORT_C void NotifyDismountCancel(TRequestStatus& aStat) const;
   1.723 -	IMPORT_C void NotifyDismountCancel() const;
   1.724 -	IMPORT_C TInt AllowDismount(TInt aDrive) const;
   1.725 -    IMPORT_C TInt SetStartupConfiguration(TInt aCommand,TAny* aParam1,TAny* aParam2) const;
   1.726 -	IMPORT_C TInt AddCompositeMount(const TDesC& aFileSystemName,TInt aLocalDriveToMount,TInt aCompositeDrive, TBool aSync) const;
   1.727 -	IMPORT_C TInt SetNotifyChange(TBool aNotifyChange);
   1.728 -	IMPORT_C TInt QueryVolumeInfoExt(TInt aDrive, TQueryVolumeInfoExtCmd aCommand, TDes8& aInfo) const;
   1.729 -	IMPORT_C TInt VolumeIOParam(TInt aDriveNo, TVolumeIOParamInfo& aParamInfo) const;
   1.730 -	IMPORT_C TInt FileSystemSubType(TInt aDriveNo, TDes& aName) const;
   1.731 -	IMPORT_C TInt InitialisePropertiesFile(const TPtrC8& aPtr) const;
   1.732 -
   1.733 +	EFSRV_IMPORT_C TInt DismountPlugin(const TDesC& aPluginName) const;
   1.734 +	EFSRV_IMPORT_C TInt DismountPlugin(const TDesC& aPluginName,TInt aDrive) const;
   1.735 +	EFSRV_IMPORT_C TInt DismountPlugin(const TDesC& aPluginName,TInt aDrive,TInt aPos) const;
   1.736 +
   1.737 +	EFSRV_IMPORT_C void NotifyDismount(TInt aDrive, TRequestStatus& aStat, TNotifyDismountMode aMode=EFsDismountRegisterClient) const;
   1.738 +	EFSRV_IMPORT_C void NotifyDismountCancel(TRequestStatus& aStat) const;
   1.739 +	EFSRV_IMPORT_C void NotifyDismountCancel() const;
   1.740 +	EFSRV_IMPORT_C TInt AllowDismount(TInt aDrive) const;
   1.741 +    EFSRV_IMPORT_C TInt SetStartupConfiguration(TInt aCommand,TAny* aParam1,TAny* aParam2) const;
   1.742 +	EFSRV_IMPORT_C TInt AddCompositeMount(const TDesC& aFileSystemName,TInt aLocalDriveToMount,TInt aCompositeDrive, TBool aSync) const;
   1.743 +	EFSRV_IMPORT_C TInt SetNotifyChange(TBool aNotifyChange);
   1.744 +	EFSRV_IMPORT_C TInt QueryVolumeInfoExt(TInt aDrive, TQueryVolumeInfoExtCmd aCommand, TDes8& aInfo) const;
   1.745 +	EFSRV_IMPORT_C TInt VolumeIOParam(TInt aDriveNo, TVolumeIOParamInfo& aParamInfo) const;
   1.746 +	EFSRV_IMPORT_C TInt FileSystemSubType(TInt aDriveNo, TDes& aName) const;
   1.747 +	EFSRV_IMPORT_C TInt InitialisePropertiesFile(const TPtrC8& aPtr) const;
   1.748 +	
   1.749 +	IMPORT_C TInt AddProxyDrive(const TDesC& aFileName);
   1.750 +	IMPORT_C TInt RemoveProxyDrive(const TDesC& aDriveName);
   1.751 +	
   1.752 +	template <class T0,class T1> inline TInt MountProxyDrive(const TUint aDrive, const TDesC& aName, T0 a0, T1 a1)
   1.753 +		{ return(DoMountProxyDrive(TIpcArgs(aDrive, &aName, a0, a1))); };
   1.754 +	IMPORT_C TInt DismountProxyDrive(const TUint aDrive);
   1.755 +	
   1.756  	TInt Unclamp(const RFileClamp& aHandle);
   1.757 +	
   1.758 +	EFSRV_IMPORT_C TInt ReadFileSection(const TDesC& aName,TInt64 aPos,TDes8& aDes,TInt aLength) const;
   1.759 +	
   1.760 +    /**
   1.761 +	This class is used to for returning meaningful error code values to users of RFs::IsValidName(const TDesC& ,TNameValidParam& ) 
   1.762 +	@see TError
   1.763 +	*/
   1.764 +	class TNameValidParam
   1.765 +		{
   1.766 +		public:
   1.767 +			/** Initialises the members of the class. By default iUseSessionPath is set to EFalse, however one could set it to ETrue.*/
   1.768 +  			inline TNameValidParam(TBool aUseSessionPath = EFalse);
   1.769 +  				
   1.770 + 		/** possible error codes */
   1.771 + 		enum TError
   1.772 + 			{
   1.773 +			ErrNone,            ///< no error.
   1.774 + 			ErrBadCharacter,    ///< aName contains a bad character; and its position is in iInvalidCharPos.
   1.775 + 			ErrBadName,         ///< aName isn't a valid file or directory name.
   1.776 + 			ErrNameTooLong      ///< aName length or aName + session path length (see iUseSessionPath) is longer than 256 characters.
   1.777 + 			};
   1.778 +		
   1.779 +		inline TError ErrorCode() const;
   1.780 + 		inline void   UseSessionPath(TBool aUseSessionPath);
   1.781 + 		inline TUint  InvalidCharPos() const;
   1.782 + 		friend class TFsIsValidName;
   1.783 +		private:
   1.784 + 			TError iError;          ///< the reason why aName is invalid, see TError
   1.785 + 			TBool  iUseSessionPath; ///< if ETrue, and if aName isn't fully specified, missing parts will be taken from the session path
   1.786 + 			TUint  iInvalidCharPos; ///< may contain invalid character position if error is ErrBadCharacter,else 0.
   1.787 + 		};
   1.788 +	EFSRV_IMPORT_C TBool IsValidName(const TDesC& aName, TNameValidParam& aParam );
   1.789 +
   1.790 +    /** Special enumerator values for the SupportedFileSystemName() API */
   1.791 +    enum 
   1.792 +        {
   1.793 +        KRootFileSystem  = 0x00800000,  ///< specifies "root" file system. The result will be the same as for FileSystemName() API call
   1.794 +        KFirstChildFileSystem = 0       ///< specifies the first child file system number, the second will be KFirstChildFileSystem+1 etc.
   1.795 +        };
   1.796 +
   1.797 +    EFSRV_IMPORT_C TInt SupportedFileSystemName(TDes& aName, TInt aDrive, TInt aFsEnumerator) const;
   1.798 +
   1.799 +protected:
   1.800 +	TInt SendReceive(TInt aFunction,const TIpcArgs& aArgs) const;
   1.801  
   1.802  private:
   1.803  	void GetDirL(const TDesC& aMatchName,TUint anEntryAttMask,TUint anEntrySortKey,CDir*& anEntryList,CDir*& aDirList,RDir& aDir) const;
   1.804 @@ -2005,15 +2104,80 @@
   1.805  	void GetDirL(const TDesC& aMatchName,const TUidType& aUidType,TUint anEntrySortKey,CDir*& anEntryList,RDir& aDir) const;
   1.806  	void DoGetDirL(TUint anEntrySortKey,CDir*& anEntryList,RDir& aDir) const;
   1.807  	TInt GetOpenFileList(TInt& aSessionNum,TInt& aLocalPos,TThreadId& aThreadId,TEntryArray& anArray) const;
   1.808 +	
   1.809 +	IMPORT_C TInt DoMountProxyDrive(const TIpcArgs& ipcArgs);
   1.810 +	
   1.811  	friend class TOpenFileScan;
   1.812 +	friend class RFsPlugin;
   1.813  	};
   1.814  
   1.815  
   1.816 -
   1.817 -
   1.818 -
   1.819 -
   1.820 -
   1.821 +//-------------------------------------------------------------------------------------------------------------------
   1.822 +
   1.823 +/** 
   1.824 +
   1.825 +    Base class for volume formatting parameters. This class package buffer, TVolFormatParamBuf or
   1.826 +    packaged buffer of the derived class can be passed to the RFormat::Open() in order to provide
   1.827 +    file system-specific formatting parameters.
   1.828 +    Each file system that supports such formatting parameters shall have this class specialisation (e.g. TVolFormatParam_FAT)
   1.829 +    All classes, derived from this one must have the same size as the base class.  
   1.830 +    In order to use formatting parameters the format mode shall have ESpecialFormat bit flag set.
   1.831 +
   1.832 +
   1.833 +    @see    RFormat::Open(RFs&,const TDesC&,TUint,TInt& ,const TDesC8& anInfo);
   1.834 +    @see    TVolFormatParamBuf
   1.835 +
   1.836 +    @publishedAll
   1.837 +    @released
   1.838 +*/ 
   1.839 +class TVolFormatParam
   1.840 +    {
   1.841 +public:
   1.842 +    inline TVolFormatParam();
   1.843 +    inline void Init();
   1.844 +    
   1.845 +    inline void SetFileSystemName(const TDesC& aFsName);
   1.846 +
   1.847 +    static inline TUint32 CalcFSNameHash(const TDesC& aFsName);
   1.848 +    inline TUint32 FSNameHash() const;
   1.849 +
   1.850 +    inline TBool SomeParamsSet() const;
   1.851 +
   1.852 +
   1.853 +protected:
   1.854 +   
   1.855 +    
   1.856 +    enum {KMaxDataSlots = 64}; ///< the size of data array iData
   1.857 +
   1.858 +    inline void SetVal(TUint aIndex, TUint32 aVal);
   1.859 +    inline TUint32 GetVal(TUint aIndex) const;
   1.860 +
   1.861 +
   1.862 +public:
   1.863 +    enum {KUId = 0x820116A2}; ///< this value shell be in iUid field to identify this class object
   1.864 +
   1.865 +    /** 
   1.866 +    This class tree UID. Used to distinguish the object of this class from TLDFormatInfo and other possible data structures.
   1.867 +    For this and derived classes this field must be KUId. This field offset in the class must be 0
   1.868 +    */
   1.869 +    const TUint32 iUId;    
   1.870 +                            
   1.871 +private:
   1.872 +    TUint32 iFSysNameHash;          ///< Up-cased file system name hash (crc32) used to designate the file system. 0 means "not set"
   1.873 +    TBool   iParamsSet : 1;         ///< ETrue if any parameter was set (SetVal() called). Gets reset to EFalse by Init()    
   1.874 +    TUint32 iData[KMaxDataSlots];   ///< used as a pool for various data. The derived classes are free to use it by SetVal()/GetVal()
   1.875 +    }; 
   1.876 +
   1.877 +__ASSERT_COMPILE(_FOFF(TVolFormatParam, iUId) == 0);
   1.878 +
   1.879 +
   1.880 +/** package buffer for the objects of class TVolFormatParamBuf */
   1.881 +typedef TPckgBuf<TVolFormatParam> TVolFormatParamBuf;
   1.882 +
   1.883 +
   1.884 +
   1.885 +
   1.886 +#ifndef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
   1.887  /**
   1.888  @publishedAll
   1.889  @released
   1.890 @@ -2069,66 +2233,154 @@
   1.891  @see TDes8
   1.892  @see TDesC8
   1.893  */
   1.894 +#else
   1.895 +/**
   1.896 +@publishedAll
   1.897 +@released
   1.898 +
   1.899 +Creates and opens a file, and performs all operations on a single open file.
   1.900 +
   1.901 +These include:
   1.902 +
   1.903 +- reading from and writing to the file
   1.904 +
   1.905 +- seeking to a position within the file
   1.906 +
   1.907 +- locking and unlocking within the file
   1.908 +
   1.909 +- setting file attributes
   1.910 +
   1.911 +Before using any of these services, a connection to a file server session must
   1.912 +have been made, and the file must be open.
   1.913 +
   1.914 +Opening Files:
   1.915 +
   1.916 +-  use Open() to open an existing file for reading or writing; an error is
   1.917 +   returned if it does not already exist.
   1.918 +   To open an existing file for reading only, use Open() with an access mode of
   1.919 +   EFileRead, and a share mode of EFileShareReadersOnly.
   1.920 +
   1.921 +-  use Create() to create and open a new file for writing; an error is returned
   1.922 +   if it already exists.
   1.923 +
   1.924 +-  use Replace() to open a file for writing, replacing any existing file of
   1.925 +   the same name if one exists, or creating a new file if one does not exist.
   1.926 +   Note that if a file exists, its length is reset to zero.
   1.927 +
   1.928 +-  use Temp() to create and open a temporary file with a unique name,
   1.929 +   for writing and reading.
   1.930 +
   1.931 +When opening a file, you must specify the file server session to use for
   1.932 +operations with that file. If you do not close the file explicitly, it is
   1.933 +closed when the server session associated with it is closed.
   1.934 +
   1.935 +Reading and Writing:
   1.936 +
   1.937 +There are several variants of both Read() and Write().
   1.938 +The basic Read(TDes8& aDes) and Write(const TDesC8& aDes) are supplemented
   1.939 +by variants allowing the descriptor length to be overridden, or the seek
   1.940 +position of the first byte to be specified, or asynchronous completion,
   1.941 +or any combination.
   1.942 +
   1.943 +Reading transfers data from a file to a descriptor, and writing transfers
   1.944 +data from a descriptor to a file. In all cases, the file data is treated
   1.945 +as binary and byte descriptors are used (TDes8, TDesC8).
   1.946 +
   1.947 +RFile class supports operations on files of size less than or equal to 2GB - 1.
   1.948 +If the file size is greater than 2GB - 1 (large file), use of class RFile64 is 
   1.949 +recommended for following operations:
   1.950 +	1. Opening a large file
   1.951 +	2. Creating a file which can grow beyond 2GB - 1 by size
   1.952 +	3. Creating a temporary file which can grow beyond 2GB - 1 by size
   1.953 +	4. Replacing an existing file after which it can grow beyond 2GB - 1 by size
   1.954 +	5. Adopting a large file handle from client
   1.955 +	6. Adopting a large file handle from server
   1.956 +	7. Adopting a large file handle from another process
   1.957 +	8. Read from a position greater than 2GB - 1
   1.958 +	9. Writing to a file by which the size can grow beyond 2GB - 1
   1.959 +	10. Seek to a position greater than 2GB - 1
   1.960 +	11. Setting a size greater than 2GB - 1
   1.961 +	12. Querying the file size (greater than 2GB - 1)
   1.962 +	13. Locking and unlocking a position and length that is beyond 2GB - 1
   1.963 +
   1.964 +@see TDes8
   1.965 +@see TDesC8
   1.966 +
   1.967 +@see RFile64
   1.968 +
   1.969 +*/
   1.970 +
   1.971 +#endif
   1.972 +
   1.973 +
   1.974  class RFile : public RSubSessionBase
   1.975  	{
   1.976  public:
   1.977 -	IMPORT_C TInt Open(RFs& aFs,const TDesC& aName,TUint aFileMode);
   1.978 -	IMPORT_C void Close();
   1.979 -	IMPORT_C TInt Create(RFs& aFs,const TDesC& aName,TUint aFileMode);
   1.980 -	IMPORT_C TInt Replace(RFs& aFs,const TDesC& aName,TUint aFileMode);
   1.981 -	IMPORT_C TInt Temp(RFs& aFs,const TDesC& aPath,TFileName& aName,TUint aFileMode);
   1.982 -	IMPORT_C TInt Read(TDes8& aDes) const;
   1.983 -	IMPORT_C void Read(TDes8& aDes,TRequestStatus& aStatus) const;
   1.984 -	IMPORT_C TInt Read(TDes8& aDes,TInt aLength) const;
   1.985 -	IMPORT_C void Read(TDes8& aDes,TInt aLength,TRequestStatus& aStatus) const;
   1.986 -	IMPORT_C TInt Read(TInt aPos,TDes8& aDes) const;
   1.987 -	IMPORT_C void Read(TInt aPos,TDes8& aDes,TRequestStatus& aStatus) const;
   1.988 -	IMPORT_C TInt Read(TInt aPos,TDes8& aDes,TInt aLength) const;
   1.989 -	IMPORT_C void Read(TInt aPos,TDes8& aDes,TInt aLength,TRequestStatus& aStatus) const;
   1.990 -	IMPORT_C void ReadCancel(TRequestStatus& aStatus) const;
   1.991 -	IMPORT_C void ReadCancel() const;
   1.992 -	IMPORT_C TInt Write(const TDesC8& aDes);
   1.993 -	IMPORT_C void Write(const TDesC8& aDes,TRequestStatus& aStatus);
   1.994 -	IMPORT_C TInt Write(const TDesC8& aDes,TInt aLength);
   1.995 -	IMPORT_C void Write(const TDesC8& aDes,TInt aLength,TRequestStatus& aStatus);
   1.996 -	IMPORT_C TInt Write(TInt aPos,const TDesC8& aDes);
   1.997 -	IMPORT_C void Write(TInt aPos,const TDesC8& aDes,TRequestStatus& aStatus);
   1.998 -	IMPORT_C TInt Write(TInt aPos,const TDesC8& aDes,TInt aLength);
   1.999 -	IMPORT_C void Write(TInt aPos,const TDesC8& aDes,TInt aLength,TRequestStatus& aStatus);
  1.1000 -	IMPORT_C TInt Lock(TInt aPos,TInt aLength) const;
  1.1001 -	IMPORT_C TInt UnLock(TInt aPos,TInt aLength) const;
  1.1002 -	IMPORT_C TInt Seek(TSeek aMode,TInt& aPos) const;
  1.1003 -	IMPORT_C TInt Flush();
  1.1004 -	IMPORT_C void Flush(TRequestStatus& aStatus);
  1.1005 -	IMPORT_C TInt Size(TInt& aSize) const;
  1.1006 -	IMPORT_C TInt SetSize(TInt aSize);
  1.1007 -	IMPORT_C TInt Att(TUint& aAttValue) const;
  1.1008 -	IMPORT_C TInt SetAtt(TUint aSetAttMask,TUint aClearAttMask);
  1.1009 -	IMPORT_C TInt Modified(TTime& aTime) const;
  1.1010 -	IMPORT_C TInt SetModified(const TTime& aTime);
  1.1011 -	IMPORT_C TInt Set(const TTime& aTime,TUint aSetAttMask,TUint aClearAttMask);
  1.1012 -	IMPORT_C TInt ChangeMode(TFileMode aNewMode);
  1.1013 -	IMPORT_C TInt Rename(const TDesC& aNewName);
  1.1014 -	IMPORT_C TInt Drive(TInt &aDriveNumber, TDriveInfo &aDriveInfo) const;
  1.1015 -	IMPORT_C TInt Adopt(RFs& aFs, TInt aHandle);
  1.1016 -	IMPORT_C TInt AdoptFromClient(const RMessage2& aMsg, TInt aFsHandleIndex, TInt aFileHandleIndex);
  1.1017 -	IMPORT_C TInt AdoptFromServer(TInt aFsHandle, TInt aFileHandle);
  1.1018 -	IMPORT_C TInt AdoptFromCreator(TInt aFsIndex, TInt aFileHandleIndex);
  1.1019 -	IMPORT_C TInt Name(TDes& aName) const;
  1.1020 -	IMPORT_C TInt TransferToServer(TIpcArgs& aIpcArgs, TInt aFsHandleIndex, TInt aFileHandleIndex) const;
  1.1021 -	IMPORT_C TInt TransferToClient(const RMessage2& aMsg, TInt aFileHandleIndex) const;
  1.1022 -	IMPORT_C TInt TransferToProcess(RProcess& aProcess, TInt aFsHandleIndex, TInt aFileHandleIndex) const;
  1.1023 -	IMPORT_C TInt Duplicate(const RFile& aFile, TOwnerType aType=EOwnerProcess);
  1.1024 -	IMPORT_C TInt FullName(TDes& aName) const;
  1.1025 -	IMPORT_C TInt BlockMap(SBlockMapInfo& aInfo, TInt64& aStartPos, TInt64 aEndPos=-1, TInt aBlockMapusage=EBlockMapUsagePaging) const;
  1.1026 -//	IMPORT_C TInt Clamp(RFileClamp& aHandle);
  1.1027 +	EFSRV_IMPORT_C TInt Open(RFs& aFs,const TDesC& aName,TUint aFileMode);
  1.1028 +	EFSRV_IMPORT_C void Close();
  1.1029 +	EFSRV_IMPORT_C TInt Create(RFs& aFs,const TDesC& aName,TUint aFileMode);
  1.1030 +	EFSRV_IMPORT_C TInt Replace(RFs& aFs,const TDesC& aName,TUint aFileMode);
  1.1031 +	EFSRV_IMPORT_C TInt Temp(RFs& aFs,const TDesC& aPath,TFileName& aName,TUint aFileMode);
  1.1032 +	EFSRV_IMPORT_C TInt Read(TDes8& aDes) const;
  1.1033 +	EFSRV_IMPORT_C void Read(TDes8& aDes,TRequestStatus& aStatus) const;
  1.1034 +	EFSRV_IMPORT_C TInt Read(TDes8& aDes,TInt aLength) const;
  1.1035 +	EFSRV_IMPORT_C void Read(TDes8& aDes,TInt aLength,TRequestStatus& aStatus) const;
  1.1036 +	EFSRV_IMPORT_C TInt Read(TInt aPos,TDes8& aDes) const;
  1.1037 +	EFSRV_IMPORT_C void Read(TInt aPos,TDes8& aDes,TRequestStatus& aStatus) const;
  1.1038 +	EFSRV_IMPORT_C TInt Read(TInt aPos,TDes8& aDes,TInt aLength) const;
  1.1039 +	EFSRV_IMPORT_C void Read(TInt aPos,TDes8& aDes,TInt aLength,TRequestStatus& aStatus) const;
  1.1040 +	EFSRV_IMPORT_C void ReadCancel(TRequestStatus& aStatus) const;
  1.1041 +	EFSRV_IMPORT_C void ReadCancel() const;
  1.1042 +	EFSRV_IMPORT_C TInt Write(const TDesC8& aDes);
  1.1043 +	EFSRV_IMPORT_C void Write(const TDesC8& aDes,TRequestStatus& aStatus);
  1.1044 +	EFSRV_IMPORT_C TInt Write(const TDesC8& aDes,TInt aLength);
  1.1045 +	EFSRV_IMPORT_C void Write(const TDesC8& aDes,TInt aLength,TRequestStatus& aStatus);
  1.1046 +	EFSRV_IMPORT_C TInt Write(TInt aPos,const TDesC8& aDes);
  1.1047 +	EFSRV_IMPORT_C void Write(TInt aPos,const TDesC8& aDes,TRequestStatus& aStatus);
  1.1048 +	EFSRV_IMPORT_C TInt Write(TInt aPos,const TDesC8& aDes,TInt aLength);
  1.1049 +	EFSRV_IMPORT_C void Write(TInt aPos,const TDesC8& aDes,TInt aLength,TRequestStatus& aStatus);
  1.1050 +	EFSRV_IMPORT_C TInt Lock(TInt aPos,TInt aLength) const;
  1.1051 +	EFSRV_IMPORT_C TInt UnLock(TInt aPos,TInt aLength) const;
  1.1052 +	EFSRV_IMPORT_C TInt Seek(TSeek aMode,TInt& aPos) const;
  1.1053 +	EFSRV_IMPORT_C TInt Flush();
  1.1054 +	EFSRV_IMPORT_C void Flush(TRequestStatus& aStatus);
  1.1055 +	EFSRV_IMPORT_C TInt Size(TInt& aSize) const;
  1.1056 +	EFSRV_IMPORT_C TInt SetSize(TInt aSize);
  1.1057 +	EFSRV_IMPORT_C TInt Att(TUint& aAttValue) const;
  1.1058 +	EFSRV_IMPORT_C TInt SetAtt(TUint aSetAttMask,TUint aClearAttMask);
  1.1059 +	EFSRV_IMPORT_C TInt Modified(TTime& aTime) const;
  1.1060 +	EFSRV_IMPORT_C TInt SetModified(const TTime& aTime);
  1.1061 +	EFSRV_IMPORT_C TInt Set(const TTime& aTime,TUint aSetAttMask,TUint aClearAttMask);
  1.1062 +	EFSRV_IMPORT_C TInt ChangeMode(TFileMode aNewMode);
  1.1063 +	EFSRV_IMPORT_C TInt Rename(const TDesC& aNewName);
  1.1064 +	EFSRV_IMPORT_C TInt Drive(TInt &aDriveNumber, TDriveInfo &aDriveInfo) const;
  1.1065 +	EFSRV_IMPORT_C TInt Adopt(RFs& aFs, TInt aHandle);
  1.1066 +	EFSRV_IMPORT_C TInt AdoptFromClient(const RMessage2& aMsg, TInt aFsHandleIndex, TInt aFileHandleIndex);
  1.1067 +	EFSRV_IMPORT_C TInt AdoptFromServer(TInt aFsHandle, TInt aFileHandle);
  1.1068 +	EFSRV_IMPORT_C TInt AdoptFromCreator(TInt aFsIndex, TInt aFileHandleIndex);
  1.1069 +	EFSRV_IMPORT_C TInt Name(TDes& aName) const;
  1.1070 +	EFSRV_IMPORT_C TInt TransferToServer(TIpcArgs& aIpcArgs, TInt aFsHandleIndex, TInt aFileHandleIndex) const;
  1.1071 +	EFSRV_IMPORT_C TInt TransferToClient(const RMessage2& aMsg, TInt aFileHandleIndex) const;
  1.1072 +	EFSRV_IMPORT_C TInt TransferToProcess(RProcess& aProcess, TInt aFsHandleIndex, TInt aFileHandleIndex) const;
  1.1073 +	EFSRV_IMPORT_C TInt Duplicate(const RFile& aFile, TOwnerType aType=EOwnerProcess);
  1.1074 +	EFSRV_IMPORT_C TInt FullName(TDes& aName) const;
  1.1075 +	EFSRV_IMPORT_C TInt BlockMap(SBlockMapInfo& aInfo, TInt64& aStartPos, TInt64 aEndPos=-1, TInt aBlockMapusage=EBlockMapUsagePaging) const;
  1.1076  	TInt Clamp(RFileClamp& aHandle);
  1.1077  
  1.1078 -private:
  1.1079 +protected:
  1.1080 +	// RSubSessionBase overrides
  1.1081 +	TInt CreateSubSession(const RSessionBase& aSession,TInt aFunction,const TIpcArgs& aArgs);
  1.1082 +	void CloseSubSession(TInt aFunction);
  1.1083 +	TInt SendReceive(TInt aFunction,const TIpcArgs& aArgs) const;
  1.1084 +
  1.1085  	TInt DuplicateHandle(TInt& aSubSessionHandle) const;
  1.1086 +
  1.1087 +	friend class RFilePlugin;
  1.1088  	};
  1.1089  
  1.1090 -
  1.1091 +#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
  1.1092 +#include <f32file64.h>
  1.1093 +#endif
  1.1094  
  1.1095  class RDir : public RSubSessionBase
  1.1096  /**
  1.1097 @@ -2162,13 +2414,19 @@
  1.1098  */
  1.1099  	{
  1.1100  public:
  1.1101 -	IMPORT_C TInt Open(RFs& aFs,const TDesC& aMatchName,const TUidType& aUidType);
  1.1102 -	IMPORT_C TInt Open(RFs& aFs,const TDesC& aMatchName,TUint anAttMask);
  1.1103 -	IMPORT_C void Close();
  1.1104 -	IMPORT_C TInt Read(TEntryArray& anArray) const;
  1.1105 -	IMPORT_C void Read(TEntryArray& anArray,TRequestStatus& aStatus) const;
  1.1106 -	IMPORT_C TInt Read(TEntry& anEntry) const;
  1.1107 -	IMPORT_C void Read(TPckg<TEntry>& anEntry,TRequestStatus& aStatus) const;
  1.1108 +	EFSRV_IMPORT_C TInt Open(RFs& aFs,const TDesC& aMatchName,const TUidType& aUidType);
  1.1109 +	EFSRV_IMPORT_C TInt Open(RFs& aFs,const TDesC& aMatchName,TUint anAttMask);
  1.1110 +	EFSRV_IMPORT_C void Close();
  1.1111 +	EFSRV_IMPORT_C TInt Read(TEntryArray& anArray) const;
  1.1112 +	EFSRV_IMPORT_C void Read(TEntryArray& anArray,TRequestStatus& aStatus) const;
  1.1113 +	EFSRV_IMPORT_C TInt Read(TEntry& anEntry) const;
  1.1114 +	EFSRV_IMPORT_C void Read(TPckg<TEntry>& anEntry,TRequestStatus& aStatus) const;
  1.1115 +
  1.1116 +private:
  1.1117 +	// RSubSessionBase overrides
  1.1118 +	TInt SendReceive(TInt aFunction,const TIpcArgs& aArgs) const;
  1.1119 +
  1.1120 +	friend class RDirPlugin;
  1.1121  	};
  1.1122  
  1.1123  
  1.1124 @@ -2524,6 +2782,18 @@
  1.1125  
  1.1126  This class is not intended for user derivation.
  1.1127  
  1.1128 +Note: 
  1.1129 +
  1.1130 +To support wildcard, CFileMan needs to store the entire directory entry 
  1.1131 +information. Therefore, in a extreme condition, if a directory contains 
  1.1132 +a huge number of files (e.g. more than 15000 files with 10 characters' long file 
  1.1133 +names), user may encounter KErrNoMemory errors. Developers who have a need to handle 
  1.1134 +this rare case should increase the heap size limitation of their applications. 
  1.1135 +
  1.1136 +For more information about heap size configuration, please refer following 
  1.1137 +section in Symbian Developer Library:
  1.1138 +Symbian OS build guide >> Build Tools Reference >> MMP file syntax >> epocheapsize   
  1.1139 +
  1.1140  @see MFileManObserver
  1.1141  */
  1.1142  	{
  1.1143 @@ -2722,7 +2992,7 @@
  1.1144  	TInt SetupMoveAcrossDrives(TUint aSwitches);
  1.1145  	TInt SetupTargetDirectory(TBool aOverWrite, TBool& aComplete);
  1.1146  	TBool SrcTrgDrivesIdentical();
  1.1147 -	TBool SetupDirectoryForMove();
  1.1148 +	TInt SetupDirectoryForMove(TBool& aSrcIsDir);
  1.1149  private:
  1.1150  	void DoAttribsL();
  1.1151  	void DoCopyOrMoveL();
  1.1152 @@ -2730,7 +3000,11 @@
  1.1153  	void DoRenameL();
  1.1154  	void DoRmDirL();
  1.1155  	void DoCopyFromHandleL();
  1.1156 +#ifndef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
  1.1157  	TInt DoCopy(const RFile& aSrcFile, RFile& aDstFile, TInt& aRet);
  1.1158 +#else
  1.1159 +	TInt DoCopy(const RFile64& aSrcFile, RFile64& aDstFile, TInt& aRet);
  1.1160 +#endif
  1.1161  private:
  1.1162  	TParse iTrgFile;
  1.1163  	TInternalAction iAction;
  1.1164 @@ -2738,7 +3012,11 @@
  1.1165  	TUint iClearMask;
  1.1166  	TTime iTime;
  1.1167  	TInt iBytesTransferred;
  1.1168 +#ifndef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
  1.1169  	RFile iSrcFileHandle;
  1.1170 +#else
  1.1171 +	RFile64 iSrcFileHandle;
  1.1172 +#endif
  1.1173  	TBool iMovingContents;
  1.1174  	TEntry iTmpEntry;
  1.1175  	TParse iTmpParse;
  1.1176 @@ -2861,10 +3139,7 @@
  1.1177  Reads and writes single lines of text to or from a Unicode file.
  1.1178  */
  1.1179  	{
  1.1180 -public:
  1.1181 -    /**
  1.1182 -    @internalComponent
  1.1183 -    */
  1.1184 +private:
  1.1185  	enum TFileState
  1.1186  		{
  1.1187  		EStartOfFile,
  1.1188 @@ -2885,7 +3160,11 @@
  1.1189  	const TText* iNext;
  1.1190  	const TText* iEnd;
  1.1191  	TFileState iState;
  1.1192 +#ifndef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
  1.1193  	RFile iFile;
  1.1194 +#else
  1.1195 +	RFile64 iFile;
  1.1196 +#endif
  1.1197  	TBuf8<0x100> iReadBuf; 
  1.1198  	};
  1.1199  
  1.1200 @@ -2898,67 +3177,6 @@
  1.1201  */
  1.1202  IMPORT_C TBool FileNamesIdentical(const TDesC& aFileName1,const TDesC& aFileName2);
  1.1203  
  1.1204 -
  1.1205 -
  1.1206 -/**
  1.1207 -Local drive mapping list - passed as argument to RFs::SetLocalDriveMapping().
  1.1208 -
  1.1209 -@publishedPartner
  1.1210 -@released
  1.1211 -*/
  1.1212 -class TLocalDriveMappingInfo
  1.1213 -	{
  1.1214 -public:
  1.1215 -	enum TDrvMapOperation {EWriteMappingsAndSet=0,EWriteMappingsNoSet=1,ESwapIntMappingAndSet=2};	
  1.1216 -public:
  1.1217 -	TInt iDriveMapping[KMaxLocalDrives];
  1.1218 -	TDrvMapOperation iOperation;
  1.1219 -    };
  1.1220 -typedef TPckgBuf<TLocalDriveMappingInfo> TLocalDriveMappingInfoBuf;
  1.1221 -
  1.1222 -/**
  1.1223 -Client side plugin API.
  1.1224 -
  1.1225 -@publishedPartner
  1.1226 -@released
  1.1227 -*/
  1.1228 -class RPlugin : public RSubSessionBase
  1.1229 -	{
  1.1230 -public:
  1.1231 -	IMPORT_C TInt Open(RFs& aFs, TInt aPos);
  1.1232 -	IMPORT_C void Close();
  1.1233 -protected:
  1.1234 -	IMPORT_C void DoRequest(TInt aReqNo,TRequestStatus& aStatus) const;
  1.1235 -	IMPORT_C void DoRequest(TInt aReqNo,TRequestStatus& aStatus,TDes8& a1) const;
  1.1236 -	IMPORT_C void DoRequest(TInt aReqNo,TRequestStatus& aStatus,TDes8& a1,TDes8& a2) const;
  1.1237 -	IMPORT_C TInt DoControl(TInt aFunction) const;
  1.1238 -	IMPORT_C TInt DoControl(TInt aFunction,TDes8& a1) const;
  1.1239 -	IMPORT_C TInt DoControl(TInt aFunction,TDes8& a1,TDes8& a2) const;
  1.1240 -	IMPORT_C void DoCancel(TUint aReqMask) const;
  1.1241 -	};
  1.1242 -
  1.1243 -/**
  1.1244 -@publishedPartner
  1.1245 -@released
  1.1246 -
  1.1247 -Specifies that a plugin should determine for itself which drives it attaches to.
  1.1248 -
  1.1249 -@see RFs::MountPlugin
  1.1250 -@see RFs::DismountPlugin
  1.1251 -*/
  1.1252 -const TInt KPluginAutoAttach = 0x19;
  1.1253 -
  1.1254 -/**
  1.1255 -@publishedPartner
  1.1256 -@released
  1.1257 -
  1.1258 -Specifies that a plugin should determine its own position in the plugin stack.
  1.1259 -
  1.1260 -@see RFs::MountPlugin
  1.1261 -@see RFs::DismountPlugin
  1.1262 -*/
  1.1263 -const TInt KPluginAutoLocate = 0xC8;
  1.1264 -
  1.1265  /**
  1.1266  @publishedAll
  1.1267  @released
  1.1268 @@ -2967,51 +3185,18 @@
  1.1269  */
  1.1270  const TInt KFileServerUidValue = 0x100039e3;
  1.1271  
  1.1272 -enum TSessionFlags
  1.1273 -/**
  1.1274 -@internalTechnology
  1.1275 -
  1.1276 -A set of session specific configuration flags.
  1.1277 -*/
  1.1278 -	{
  1.1279 -	/**
  1.1280 -	Notify the user or write failures
  1.1281 -	*/
  1.1282 -	EFsSessionNotifyUser	= KBit0,
  1.1283 -	
  1.1284 -	/**
  1.1285 -	Notify clients registered for change notification
  1.1286 -	*/
  1.1287 -	EFsSessionNotifyChange	= KBit1,
  1.1288 -
  1.1289 -	/**	
  1.1290 -	Enables all session flags
  1.1291 -	*/
  1.1292 -	EFsSessionFlagsAll		= KSet32,
  1.1293 -	};
  1.1294 -
  1.1295 -/**
  1.1296 -@internalTechnology
  1.1297 -*/
  1.1298 -struct SBlockMapArgs
  1.1299 -	{
  1.1300 -	TInt64 iStartPos;
  1.1301 -	TInt64 iEndPos;
  1.1302 -	};
  1.1303 -	
  1.1304 -	
  1.1305 -/**
  1.1306 -@internalTechnology
  1.1307 -
  1.1308 -Validates the mask used to match drive attributes.
  1.1309 -
  1.1310 -@see RFs::DriveList
  1.1311 -@see TFindFile::SetFindMask
  1.1312 -*/	
  1.1313 -TInt ValidateMatchMask( TUint aMask);
  1.1314 -
  1.1315 -
  1.1316 -	
  1.1317 -
  1.1318 -#include "f32file.inl"
  1.1319 +
  1.1320 +#include <f32file.inl>
  1.1321 +#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
  1.1322 +#include <f32file64.inl>
  1.1323  #endif
  1.1324 +
  1.1325 +#ifdef SYMBIAN_F32_ENHANCED_CHANGE_NOTIFICATION	
  1.1326 +#include <f32notification.h>
  1.1327 +#endif
  1.1328 +
  1.1329 +#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
  1.1330 +#include <f32file_private.h>
  1.1331 +#endif
  1.1332 +
  1.1333 +#endif