Attempt to represent the S^2->S^3 header reorganisation as a series of "hg rename" operations
1 // Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
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
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
24 #if !defined(__F32FILE_H__)
27 #if !defined(__E32BASE_H__)
31 #if !defined(__E32SVR_H__)
42 The session default drive.
44 const TInt KDefaultDrive=KMaxTInt;
53 Indicates a drive letter which is not in use.
55 This is useful when scanning a drive list to find which drives are available.
57 const TInt KDriveAbsent=0x00;
66 The default value for the number of message slots passed to RFs::Connect().
70 const TInt KFileServerDefaultMessageSlots=-1;
79 The size of the array of TEntry items contained in a TEntryArray object.
84 const TInt KEntryArraySize=(0x200*sizeof(TText));
93 The character used to separate directories in the path name.
95 const TInt KPathDelimiter='\\';
104 The character used to separate the drive letter from the path.
106 const TInt KDriveDelimiter=':';
115 The character used to separate the filename from the extension.
117 const TInt KExtDelimiter='.';
126 The maximum number of available drives.
128 const TInt KMaxDrives=26;
135 Defines a modifiable buffer descriptor to contain a drive list.
137 The descriptor has maximum length KMaxDrives, sufficient to contain
138 all possible drive letters.
143 typedef TBuf8<KMaxDrives> TDriveList;
151 The maximum length of a drivename.
153 Sufficient for a drive letter and colon.
155 const TInt KMaxDriveName=0x02;
164 Defines a modifiable buffer descriptor to contain a drive name.
166 A drive name comprises a drive letter (A through Z) and a colon.
167 KMaxDriveName (2 bytes) is sufficient for a drive letter and colon.
169 @see TDriveUnit::Name
172 typedef TBuf<KMaxDriveName> TDriveName;
181 The maximum length of a file system name or file system sub type name.
182 32 characters is sufficient for a file system or sub type name.
184 const TInt KMaxFSNameLength=0x0020;
193 Defines a modifiable buffer descriptor to contain a file system or file system sub type name.
195 @see KMaxFSNameLength
197 typedef TBuf<KMaxFSNameLength> TFSName;
206 File/directory attribute: any file without the hidden or system attribute.
208 const TUint KEntryAttNormal=0x0000;
217 File/directory attribute: read-only file or directory.
219 const TUint KEntryAttReadOnly=0x0001;
228 File/directory attribute: hidden file or directory.
230 const TUint KEntryAttHidden=0x0002;
239 File/directory attribute: system file.
241 const TUint KEntryAttSystem=0x0004;
250 File/directory attribute: volume name directory.
252 const TUint KEntryAttVolume=0x0008;
261 File/directory attribute: a directory without the hidden or system attribute.
263 const TUint KEntryAttDir=0x0010;
272 File/directory attribute: an archive file.
274 const TUint KEntryAttArchive=0x0020;
283 File/directory attribute: ROM eXecute In Place file
285 const TUint KEntryAttXIP=0x0080;
294 This file attribute bit is set if the file exists only on a remote file
295 system and is not locally cached.
297 Due to the potential high-latency of remote file systems, applications
298 (or users of applications) may make use of this bit to modify their
299 behaviour when working with remote files.
301 This is a read-only attribute, so any attempt to set this attribute will
304 const TUint KEntryAttRemote=0x0100;
313 The range of entry attributes reserved for file-system specific meanings.
314 File systems may assign meaning to these bits, but their definition will
315 not be supported nor maintained by Symbian.
317 All other file attribute bits are reserved for use by Symbian.
319 The following table summarises the assignment of attribute bits:
321 0 - KEntryAttReadOnly
340 16 - File System Specific
341 17 - File System Specific
342 18 - File System Specific
343 19 - File System Specific
345 20 - File System Specific
346 22 - File System Specific
347 22 - File System Specific
348 23 - File System Specific
353 27 - KEntryAttMatchExclude
355 28 - KEntryAttAllowUid
357 30 - KEntryAttMatchExclusive
360 const TUint KEntryAttMaskFileSystemSpecific=0x00FF0000;
369 Bit mask for matching file and directory entries.
371 This mask ensures that directories and hidden and
372 system files are matched.
374 (Note that KEntryAttNormal matches all entry types except directories, hidden
379 const TUint KEntryAttMatchMask=(KEntryAttHidden|KEntryAttSystem|KEntryAttDir);
389 Bit mask for matching file and directory entries.
391 This is used when all entry types, including hidden and system files,
392 but excluding the volume entry are to be matched.
396 const TUint KEntryAttMaskSupported=0x3f;
405 Bit mask for matching file and directory entries.
407 This is used for exclusive matching. When OR'ed with one or more file attribute
408 constants, for example, KEntryAttNormal, it ensures that only the files with
409 those attributes are matched.
410 When OR’ed with KEntryAttDir, directories only (not hidden or system) are matched.
416 const TUint KEntryAttMatchExclusive=0x40000000;
425 Bit mask for feature manager file entries.
427 It is used in order to identify each ROM feature set data file
428 uniquely in the mount order of ROM sections.
431 const TUint KEntryAttUnique=0x01000000;
440 Bit mask for matching file and directory entries.
442 It is used to exclude files or directories with certain attributes from
443 directory listings. This bitmask has the opposite effect
444 to KEntryAttMatchExclusive. For example:
447 KEntryAttMatchExclude|KEntryAttReadOnly
450 excludes all read only entries from the directory listing.
453 KEntryAttMatchExclusive|KEntryAttReadOnly
455 lists only read only entries.
457 @see KEntryAttMatchExclusive
460 const TUint KEntryAttMatchExclude=0x08000000;
469 Bit mask for matching file and directory entries.
471 Bit mask flag used when UID information should be included in the directory
476 const TUint KEntryAttAllowUid=0x10000000;
485 Bit mask used when evaluating whether or not a session gets notified of a
488 @see DebugNotifySessions
490 const TUint KDebugNotifyMask=0xFF000000; // Reserved for debug notification
495 const TUint KMaxMapsPerCall = 0x8;
504 The default blocksize value.
506 This value is returned when you query the blocksize for a media type that does not
507 support the concept of 'block' (e.g. NOR flash media).
509 @see TVolumeIOParamInfo
511 const TUint KDefaultVolumeBlockSize = 512;
521 A set of change notification flags.
523 These flags indicate the kind of change that should result in notification.
525 This is useful for programs that maintain displays of file lists that
526 must be dynamically updated.
528 @see RFs::NotifyChange
535 Any change, including mounting and unmounting drives.
541 Addition or deletion of a directory entry, or changing or formatting a disk.
547 Change resulting from file requests:
548 RFile::Create(), RFile::Replace(), RFile::Rename(), RFs::Delete(),
549 RFs::Replace(), and RFs::Rename().
555 Change resulting from directory requests:
556 RFs::MkDir(), RFs::RmDir(), and RFs::Rename().
562 Change resulting from: RFs::SetEntry(), RFile::Set(), RFile::SetAtt(),
563 RFile::SetModified() and RFile::SetSize() requests.
565 ENotifyAttributes=0x10,
569 Change resulting from the RFile::Write() request.
575 Change resulting from the RRawDisk::Write() request.
580 enum TNotifyDismountMode
585 Notification modes for safe media removal notification API
587 @see RFs::NotifyDismount
591 Used by a client to register for notification of pending dismount.
592 - This is the default behaviour for RFs::NotifyDismount
594 EFsDismountRegisterClient=0x01,
597 Used to notify clients of a pending dismount.
599 EFsDismountNotifyClients=0x02,
602 Used to forcibly dismount the file system without notifying clients.
604 EFsDismountForceDismount=0x03,
613 Flags used to enable file server drive-specific caching
617 Enable read caching - if file explicitly opened in EFileReadBuffered mode
619 EFileCacheReadEnabled = 0x01,
622 Enable read caching for all files, regardless of file open mode
624 EFileCacheReadOn = 0x02,
627 Enable read-ahead caching - if file explicitly opened in EFileReadAheadOn mode
629 EFileCacheReadAheadEnabled = 0x04,
632 Enable read-ahead caching, regardless of file open mode
634 EFileCacheReadAheadOn = 0x08,
637 Enable write caching, if file explicitly opened in EFileWriteBuffered mode
639 EFileCacheWriteEnabled = 0x10,
642 Enable write caching for all files, regardless of file open mode
644 EFileCacheWriteOn = 0x20,
648 enum TStartupConfigurationCmd
653 Command used to set file server configuration at startup.
655 @see RFs::SetStartupConfiguration()
659 Set loader thread priority
664 Set TDrive flags. Value should be ETrue or EFalse
668 Command upper boundary
670 EMaxStartupConfigurationCmd
677 Commands to query specific volume information.
679 @see TVolumeIOParamInfo
681 enum TQueryVolumeInfoExtCmd
684 Queries the sub type of the file system mounted on a specified volume.
685 For example, FAT12, FAT16 or FAT32.
690 Queries the I/O parameters of a specificed volume.
691 This includes the block size, the cluster size and the recommended read and write sizes for the media.
696 This command determines whether the volume is synchronous or asynchronous.
697 A boolean value is returned within the buffer defined as TPckgBuf<TBool>.
698 ETrue for Synchronous and EFalse for Asynchronous.
703 Query if the given drive is finalised. See RFs::FinaliseDrive()
704 Not all file systems may support this query.
705 A boolean value is returned within the buffer defined as TPckgBuf<TBool>.
706 ETrue value means that the drive is finalised
715 Volume IO parameter information.
717 This class is used to return IO parameter information for a specified volume.
719 The volume parameter information holds recommended buffer sizes for the creation of efficient buffers for
722 @see RFs::VolumeIOParam()
724 class TVolumeIOParamInfo
728 The size of a block in bytes.
730 Reads and writes that are aligned on block boundaries are up to twice as fast as when
733 Read and write operations on certain underlying media is done in blocks.
734 A write operation that modifies only part of a block is less efficient, in general, than
735 one that modifies an entire block. Data throughput degrades linearly for reads and writes in smaller
740 The size in bytes of a single disk cluster.
742 Read and write operations that are aligned on cluster boundaries are more efficient.
744 The file system organises and allocates the file data on the disk in clusters where each cluster is
745 one or more blocks. Files that are not zero length occupy at least one cluster of the disk,
746 so large numbers of very small files use up more disk space than expected.
750 The recommended buffer size for optimised reading performance.
752 The given buffer size is based on sensible benchmark testing results produced by the mobile device vendor.
753 The buffer size is then added to the estart.txt file
755 The figure is included in the estart.txt file along with the drive number and the variable name.
756 The example below shows the required format:
761 When no value is provided, value KErrNotSupported is returned.
763 TInt iRecReadBufSize;
765 The recommended buffer size for optimised writing performance.
767 The given buffer size is based on sensible benchmark testing results produced by the mobile device vendor.
768 The buffer size is then added to the estart.txt file
770 The figure is included in the estart.txt file along with the drive number and the variable name.
771 The example below shows the required format:
774 RecWriteBufSize 16384
776 When no value is provided, value KErrNotSupported is returned.
778 TInt iRecWriteBufSize;
782 Reserved space for future use
792 The drive number enumeration.
795 EDriveA, EDriveB, EDriveC, EDriveD, EDriveE,
796 EDriveF, EDriveG, EDriveH, EDriveI, EDriveJ,
797 EDriveK, EDriveL, EDriveM, EDriveN, EDriveO,
798 EDriveP, EDriveQ, EDriveR, EDriveS, EDriveT,
799 EDriveU, EDriveV, EDriveW, EDriveX, EDriveY,
811 Flags indicating the order in which directory entries are to be sorted.
814 @see CDirScan::SetScanDataL
819 The default; no sorting takes place
825 Sort according to alphabetic order of file and directory name.
827 This setting is mutually exclusive with ESortByExt, ESortBySize,
828 ESortByDate and ESortByUid.
834 Sort according to alphabetic order of file extension.
836 Files without an extension take precedence over files with an extension.
837 For files with the same extension or without an extension, the default is
840 This setting is mutually exclusive with ESortByName, ESortBySize,
841 ESortByDate and ESortByUid.
847 Sort according to file size.
849 This setting is mutually exclusive with ESortByName, ESortByExt,
850 ESortByDate and ESortByUid.
856 Sort according to files' last modified time and date.
858 By default, most recent last.
860 This setting is mutually exclusive with ESortByName, ESortByExt,
861 ESortBySize and ESortByUid.
867 Sort according to file UID.
869 This setting is mutually exclusive with ESortByName, ESortByExt,
870 ESortBySize and ESortByDate.
876 Qualifies the sort order; if set, directories are listed in the order in
881 This flag is mutually exclusive with EDirsFirst and EDirslast.
887 Qualifies the sort order; if set, directories come before files in sort order.
889 This flag is mutually exclusive with EDirsAnyOrder and EDirsLast.
895 Qualifies the sort order; if set, files come before directories in sort order.
897 This flag is mutually exclusive with EDirsAnyOrder and EDirsFirst.
903 Qualifies the sort order; files are sorted in ascending order, i.e. from A to Z.
904 This is the default behaviour.
906 This flag is mutually exclusive with EDescending and EDirDescending.
912 Qualifies the sort order; files are sorted in descending order, i.e. from Z to A.
914 This flag is mutually exclusive with EAscending and EDirDescending.
920 Qualifies the sort order; directories are sorted in descending order, i.e. from Z to A.
922 This flag shall be used in combination with either EDirsFirst or EDirsLast.
923 This flag is mutually exclusive with EAscending and EDescending.
936 Access and share modes available when opening a file.
938 The access mode indicates whether the file is opened just for reading or
941 The share mode indicates whether other RFile objects can access the
942 open file, and whether this access is read only.
944 Use EFileShareReadersOrWriters if a client does not care whether the file has
945 been previously opened for ReadOnly or Read/Write access.
947 If EFileShareReadersOrWriters is not used, then a client needs to cooperate with
948 other clients in order to open the file with the correct share mode, either
949 EFileShareReadersOnly or EFileShareAny, depending on the share mode used when
950 the file was originally opened.
952 To open a file for reading and writing with read and write shared access,
956 _LIT(KFilename, "filename.ext");
958 file.Open(theFs, KFilename, EFileShareAny|EFileWrite);
961 If another instance of RFile tries to open this file in EFileShareExclusive
962 or EFileShareReadersOnly mode, access is denied. However, it can be opened
963 in EFileShareAny mode or EFileShareReadersOrWriters mode.
965 If a file is opened with EFileShareReadersOrWriters, and the file is opened for
966 sharing by another client, then the file share mode is promoted to the new share
967 mode. When the file handle is closed then the share mode is demoted back to
968 EFileShareReadersOrWriters.
972 Table of FileShare promotion rules
973 ----------------------------------
975 Client A Client B Resultant Share Mode
976 -------- -------- --------------------
977 ReadersOnly ReadersOnly ReadersOnly
978 ReadersOnly ReadersOrWriters|EFileRead ReadersOnly
979 ReadersOnly ReadersOrWriters|EFileWrite INCOMPATIBLE
980 ReadersOnly Any INCOMPATIBLE
982 ReadersOrWriters|EFileRead ReadersOnly ReadersOnly
983 ReadersOrWriters|EFileRead ReadersOrWriters|EFileRead ReadersOrWriters
984 ReadersOrWriters|EFileRead ReadersOrWriters|EFileWrite ReadersOrWriters
985 ReadersOrWriters|EFileRead Any Any
987 ReadersOrWriters|EFileWrite ReadersOnly INCOMPATIBLE
988 ReadersOrWriters|EFileWrite ReadersOrWriters|EFileRead ReadersOrWriters
989 ReadersOrWriters|EFileWrite ReadersOrWriters|EFileWrite ReadersOrWriters
990 ReadersOrWriters|EFileWrite Any Any
992 Any ReadersOnly INCOMPATIBLE
993 Any ReadersOrWriters|EFileRead Any
994 Any ReadersOrWriters|EFileWrite Any
998 Use the following guidance notes for selecting FileShare mode with shared RFile objects:
1001 - Use this mode to request both read and write access when another client needs
1002 to write to the file and respective client access to the file is coordinated.
1003 - To open a file for non-exclusive write, use EFileShareAny | EFileWrite.
1004 - It is recommended that either EFileShareAny or EFileShareAny | EFileRead are
1005 not used. These combinations will block users attempting to use the
1006 EFileShareReadersOnly mode even if all the EFileShareAny handles do not have
1007 the EFileWrite bit set as the EFileRead and EFileWrite bits have no affect on
1008 sharing. Use either EFileShareReadersOnly or EFileShareReadersOrWriters.
1010 EFileShareReadersOrWriters
1011 - Use this mode when it does not matter if another file writes to the file and
1012 file access can not be coordinated as other clients are unknown.
1013 - To open a file for shared read access whilst permitting writers, use
1014 EFileShareReadersOrWriters | EFileRead.
1016 - For write access with unrestricted share mode,
1017 EFileShareReadersOrWriters | EFileWrite may be used however
1018 EFilesShareAny | EFileWrite is preferred.
1020 EFileShareReadersOnly
1021 - Use this mode to get read access to the file and deny write access for any
1022 other handles on this file.
1023 - To open a file for shared read access whilst disallowing writers use
1024 EFileShareReadersOnly.
1027 Files may be opened in text or binary mode. Native Symbian OS application
1028 files are nearly all binary, (so they will usually be opened in binary mode).
1029 However, they can be opened in text mode (to support testing, and to make them
1030 compatible with text formats on remote systems).
1031 Symbian OS native text format uses CR-LF (ASCII 0x0d, 0x0a) to denote the end of
1032 a line. When reading, however, any combination of CR, LF, LF-CR or CR-LF is
1033 recognised as the end of a line. Where a remote file system uses a different
1034 format, it is the responsibility of the installable file system to present
1035 an interface for text files which conforms with this format.
1037 The share mode may be OR’ed with either EFileStream or EFileStreamText.
1039 Additionally, it may be OR’ed with either EFileRead or EFileWrite.
1043 Exclusive access for the program opening the file.
1045 No other program can access the file until it is closed.
1046 If another program is already accessing the file in any share mode, then
1047 an attempt to open it with an EFileShareExclusive will fail.
1049 EFileShareExclusive,
1055 This means that the file may only be accessed for reading.
1056 A file cannot be opened using a share mode of EFileShareReadersOnly with
1059 EFileShareReadersOnly,
1063 Shared access for reading and writing.
1065 This means that other programs may share access to the file for reading
1066 and writing with the program which opened the file.
1068 When using this mode, the program is expecting another program to be able
1069 to write to the file, so is not compatible with EFileShareReadersOnly.
1075 Shared access for reading and writing.
1077 This means that other programs may share access to the file for reading
1078 and writing with the program which opened the file.
1080 When using this mode, the program does not care if another program has
1081 the file open for read or write access.
1083 EFileShareReadersOrWriters,
1087 For files to be opened in binary mode.
1093 For files to be opened in text mode.
1095 EFileStreamText=0x100,
1099 The file may be read from but not written to.
1105 The file may be read from and written to
1107 Cannot be combined with a share mode of EFileShareReadersOnly.
1112 Specifies that an asynchronous read request should not be completed
1113 until all requested data becomes available.
1115 Cannot be combined with the EFileShareExclusive or EFileShareReadersOnly
1116 share modes as this will prohibit a writer from updating the file.
1118 EFileReadAsyncAll=0x400,
1121 Enables write buffering
1123 EFileWriteBuffered =0x00000800,
1126 Disables write buffering
1128 EFileWriteDirectIO =0x00001000,
1131 Enables read buffering
1133 EFileReadBuffered =0x00002000,
1136 Disables read buffering
1138 EFileReadDirectIO =0x00004000,
1143 EFileReadAheadOn =0x00008000,
1146 Disables read ahead.
1148 EFileReadAheadOff =0x00010000
1158 Bit mask provided for retrieving a file's share mode.
1162 const TUint KFileShareMask=0xff;
1176 Indicates a high density floppy disk to be formatted.
1182 Indicates a standard floppy disk to be formatted.
1188 Performs a full format, erasing existing content and resetting the FAT
1191 This is the default, and can be ORed with bit EHighDensity or ELowDensity.
1197 Does the minimum required to format the device, only resetting the FAT
1200 This is the default, and can be ORed with bit EHighDensity or ELowDensity.
1206 Indicates a custom formatting mode.
1208 ESpecialFormat=0x200,
1211 Forced erase of locked media
1224 Flags indicating the destination of a seek operation.
1226 File locations are specified as a 32-bit signed integer,
1227 allowing offsets of ?GB from the origin of the seek.
1233 This can only be used for file systems with execute-in-place facilities,
1234 such as the ROM file system: the offset specifies the absolute address of
1241 Destination is the start of file.
1247 Destination is the current position in file.
1253 Destination is the end of file.
1261 class TBlockMapEntry : public TBlockMapEntryBase
1264 IMPORT_C TBlockMapEntry();
1265 IMPORT_C void SetNumberOfBlocks( TUint aNumberOfBlocks );
1266 IMPORT_C void SetStartBlock( TUint aStartBlock );
1272 typedef TBuf8<KMaxMapsPerCall*sizeof(TBlockMapEntry)> TBlockArrayDes;
1274 struct SBlockMapInfo : public SBlockMapInfoBase
1276 TBlockArrayDes iMap;
1285 EBlockMapUsagePaging,
1295 Encapsulates an entry in a directory, which can be another (nested) directory,
1296 a file or a volume label.
1298 Each directory entry has a name which is relative to its owning directory
1299 and a type, which is indicated by its unique identifier (UID).
1301 An entry can be interrogated for the following properties:
1303 1. the kind of entry: stored in the entry UIDs, stored in iType
1305 2. the entry attributes, stored in iAtt
1307 3. the size of entry
1309 4. the time the entry was last modified.
1314 @see CfileBase::CurrentEntry
1319 IMPORT_C TEntry(const TEntry& aEntry);
1320 IMPORT_C TEntry& operator=(const TEntry& aEntry);
1321 IMPORT_C TBool IsReadOnly() const;
1322 IMPORT_C TBool IsHidden() const;
1323 IMPORT_C TBool IsSystem() const;
1324 IMPORT_C TBool IsDir() const;
1325 IMPORT_C TBool IsArchive() const;
1326 inline const TUid& operator[](TInt anIndex) const;
1327 inline TBool IsUidPresent(TUid aUid) const;
1328 inline TBool IsTypeValid() const;
1329 inline TUid MostDerivedUid() const;
1332 The individual bits within this byte indicate which attributes
1335 @see KEntryAttNormal
1336 @see KEntryAttReadOnly
1337 @see KEntryAttHidden
1338 @see KEntryAttSystem
1344 The size of the file in bytes.
1345 For files larger that 2G it must be cast to TUint in order to avoid looking like negative signed.
1351 The local time of last modification.
1363 The name of the file relative to the owning directory,
1364 with a maximum of KMaxFileName characters.
1368 TBufC<KMaxFileName> iName;
1372 Reserved for future expansion
1374 TUint32 iReserved[2];
1386 Array of directory entries.
1388 It contains the results of a call to RDir::Read(): it will contain all
1389 the TEntry items in the directory. Thus, a directory can be read in
1390 a single call, minimising client/server communication overheads.
1397 IMPORT_C TEntryArray();
1398 IMPORT_C TInt Count() const;
1399 IMPORT_C const TEntry& operator[](TInt anIndex) const;
1404 TBuf8<KEntryArraySize> iBuf;
1417 Contains drive information.
1424 The type of media mounted on the drive.
1430 Indicates whether the drive supports a battery, and if so, its state.
1432 TBatteryState iBattery;
1436 The drive attributes.
1440 @see KDriveAttRedirected
1441 @see KDriveAttSubsted
1442 @see KDriveAttInternal
1443 @see KDriveAttRemovable
1449 The attributes of the media mounted on the drive.
1451 @see KMediaAttVariableSize
1452 @see KMediaAttDualDensity
1453 @see KMediaAttFormattable
1454 @see KMediaAttWriteProtected
1455 @see KMediaAttLockable
1456 @see KMediaAttLocked
1461 Reserved for future expansion
1474 Contains information about a volume mounted on a drive. Use RFs::Drive() if only
1475 the drive information is required.
1477 If a drive supports removable media it may contain different volumes over time.
1479 Volume information is made up of information concerning the drive on which it is mounted,
1480 which can also be accessed through RFs::Drive(), and the volume information, this is made
1481 up of the size of the volume, the free space, its unique identifying number and a name.
1483 TVolumeInfo is initialised by RFs::Volume().
1490 IMPORT_C TVolumeInfo();
1493 Information about the drive on which the volume is mounted.
1501 The volume’s unique identifying number.
1507 The maximum size of the volume in bytes. The current amount of memory
1508 in use plus the amount of free memory.
1514 The amount of free space on the volume in bytes.
1520 Name of the volume, with a maximum of KMaxFileName characters.
1522 This field is optional.
1526 TBufC<KMaxFileName> iName;
1529 Flags which define the default file-caching behaviour for this volume
1531 @see TFileCacheFlags
1533 TFileCacheFlags iFileCacheFlags;
1538 Internal flag, used in the case of non-blocking getting volume information.
1539 @see RFs::Volume(TVolumeInfo& aVol,TInt aDrive, TRequestStatus& aStat)
1541 If this flag is set, it means that the volume information will be obtained
1542 asynchronously. More specific, on return iFree will reflect the _current_ amount of free space on volume at the moment of
1543 RFs::Volume() call, not the exact final value. This is because in this case getting volume information will be asynchronous,
1544 and the client will not be suspended until the mount finish calculating free space. At present appicable to FAT32 file system only.
1546 TUint8 iVolSizeAsync : 1;
1550 Reserved for future expansion
1553 TUint16 i16Reserved1;
1554 TUint32 i32Reserved1;
1555 TUint32 i32Reserved2;
1566 Drive numbers and letters.
1568 A drive may be represented by either an integer between zero and twenty five
1569 inclusive, or by a buffer descriptor containing a character between "A" and "Z"
1570 inclusive, followed by a colon.
1571 This class encapsulates both representations.
1572 An instance of this class is constructed specifying either the drive number
1573 or the drive letter and may be converted between the two representations.
1577 inline TDriveUnit() {};
1578 IMPORT_C TDriveUnit(TInt aDrive);
1579 IMPORT_C TDriveUnit(const TDesC& aDrive);
1580 IMPORT_C TDriveUnit& operator=(TInt aDrive);
1581 IMPORT_C TDriveUnit& operator=(const TDesC& aDrive);
1582 inline operator TInt() const;
1583 IMPORT_C TDriveName Name() const;
1598 Base class for file name parsing.
1600 You first need to set up the path to be parsed using either a TParse, TParsePtr
1601 or TParsePtrC object.
1603 The interrogation and extraction functions in this class allow you to test
1604 whether a component has been specified in the pathname, and if so,
1605 to extract it. If a component is not present in the pathname,
1606 the extraction function returns an empty string.
1608 This class also allows directories to be added to, and popped from the path.
1612 1. the filename modification functions cannot be used by the TParsePtrC class.
1614 2. navigation using .. and . is not supported.
1622 struct SField {TUint8 pos;TUint8 len;TUint8 present;TUint8 filler;};
1623 enum TField {EDrive,EPath,EName,EExt,EMaxFields};
1624 enum TWild {EWildName=0x01,EWildExt=0x02,EWildEither=0x04,EIsRoot=0x08,EWildIsKMatchOne=0x10,EWildIsKMatchAny=0x20};
1626 IMPORT_C TParseBase();
1627 IMPORT_C TInt PopDir();
1628 IMPORT_C TInt AddDir(const TDesC& aName);
1629 IMPORT_C const TDesC& FullName() const;
1630 IMPORT_C TPtrC Drive() const;
1631 IMPORT_C TPtrC Path() const;
1632 IMPORT_C TPtrC DriveAndPath() const;
1633 IMPORT_C TPtrC Name() const;
1634 IMPORT_C TPtrC Ext() const;
1635 IMPORT_C TPtrC NameAndExt() const;
1636 IMPORT_C TBool DrivePresent() const;
1637 IMPORT_C TBool PathPresent() const;
1638 IMPORT_C TBool NamePresent() const;
1639 IMPORT_C TBool ExtPresent() const;
1640 IMPORT_C TBool NameOrExtPresent() const;
1641 IMPORT_C TBool IsRoot() const;
1642 IMPORT_C TBool IsWild() const;
1643 IMPORT_C TBool IsKMatchOne() const;
1644 IMPORT_C TBool IsKMatchAny() const;
1645 IMPORT_C TBool IsNameWild() const;
1646 IMPORT_C TBool IsExtWild() const;
1648 virtual TDes& NameBuf() = 0; // Reference to derived class descriptor containing the filename.
1649 virtual const TDesC& NameBufC() const = 0; // const reference to derived class descriptor containing the filename.
1650 TInt Set(const TDesC* aName,const TDesC* aRelated,const TDesC* aDefault,TBool allowWild);
1652 TInt ParseDrive(TLex& aName,TBool& aDone);
1653 TInt ParsePath(TLex& aName,TBool& aDone);
1654 TInt ParseName(TLex& aName,TBool& aDone);
1655 TInt ParseExt(TLex& aName,TBool& aDone);
1657 TInt16 iMod; // Non-zero indicates File name modification functionality is enabled.
1660 SField iField[EMaxFields];
1666 class TParsePtr : public TParseBase
1671 Parses filenames using less space on the stack than TParse.
1673 Stores a reference to a filename, unlike TParse, which uses
1674 a 512 byte TFileName object as an internal buffer to store
1675 a copy of the filename.
1676 The filename's components (drive, path, etc.) can be retrieved using
1677 the functions provided by the base class, TParseBase.
1678 This class should be used in preference to TParse when minimising stack
1679 usage is a priority.
1686 IMPORT_C TParsePtr(TDes& aName);
1688 IMPORT_C TDes& NameBuf();
1689 IMPORT_C const TDesC& NameBufC() const;
1697 class TParsePtrC : public TParseBase
1702 Parses, but cannot modify, filenames using less space on the stack than TParse.
1704 Stores a reference to a filename, unlike TParse, which uses
1705 a 512 byte TFileName object as an internal buffer to store
1706 a copy of the filename.
1707 The filename's components (drive, path, etc.) can be retrieved using
1708 the functions provided by the base class, TParseBase.
1709 Note that because the filename cannot be modified through this class,
1710 the base class functions PopDir() and AddDir() cannot be called, because
1711 a panic will be raised.
1718 IMPORT_C TParsePtrC(const TDesC& aName);
1720 IMPORT_C TDes& NameBuf();
1721 IMPORT_C const TDesC& NameBufC() const;
1729 class TParse : public TParseBase
1736 The class uses the full filename structure supported by Symbian OS.
1738 TParse works by using the Set() function to set up the filename to be parsed.
1739 Then, various getter functions defined in the base class, TParseBase, such as:
1740 FullName(), Drive(), Path(), DriveAndPath(), Name(), Ext() and NameAndExt()
1741 may be used to retrieve path components.
1743 There are a number of restrictions to valid path components, which are
1744 described in guide documentation.
1749 IMPORT_C TInt Set(const TDesC& aName,const TDesC* aRelated,const TDesC* aDefault);
1750 IMPORT_C TInt SetNoWild(const TDesC& aName,const TDesC* aRelated,const TDesC* aDefault);
1752 IMPORT_C TDes& NameBuf();
1753 IMPORT_C const TDesC& NameBufC() const;
1761 class CDir : public CBase
1766 Array of directory entries that has been read into memory from the file system.
1768 It can be read and sorted by user programs, but cannot be created by them.
1772 IMPORT_C virtual ~CDir();
1773 IMPORT_C TInt Count() const;
1774 IMPORT_C const TEntry& operator[](TInt anIndex) const;
1775 IMPORT_C TInt Sort(TUint aEntrySortKey);
1778 IMPORT_C static CDir* NewL();
1779 IMPORT_C void AddL(const TEntry& anEntry);
1780 IMPORT_C void ExtractL(TBool aRemove,CDir*& aDir);
1781 IMPORT_C void Compress();
1783 CArrayPakFlat<TEntry>* iArray;
1785 friend class TOpenFileScan;
1791 class RFs : public RSessionBase
1796 A handle to a file server session.
1798 A program or thread may have arbitrarily many sessions open simultaneously.
1800 Use this class for all file system manipulation, including:
1802 1. adding, removing, moving and renaming files and directories
1804 2. inspecting and changing file attributes and directory entry details.
1805 These include the time and date when the file or directory was last
1806 written to, its size and various attribute flags such as read-only,
1807 hidden, archive or system.
1809 3. finding a file’s real name; if the file system on which it is stored
1810 has to "mangle" the name into a shorter format
1812 4. getting directory listings
1814 5. maintaining a default path; unlike some other systems, there is a single
1815 system default path, rather than one for each drive: the default path
1816 consists of a drive and a path specification.
1818 6. performing context-sensitive parses using TParse objects, and
1821 7. obtaining information on drives and volumes
1823 8. formatting and labelling volumes
1825 9. obtaining a list of valid drives
1827 10. emulating the DOS subst command, which allows any directory to appear
1828 as if it were a separate drive
1830 11. requesting notification of when significant change occurs.
1831 This can be used for programs which maintain file lists, but must
1832 update those lists when change occurs.
1834 12. finding the version number of the file server
1836 13. resource counting to ensure that all resources are closed when
1837 the session terminates.
1839 This class is not intended for user derivation.
1841 The following restrictions apply when a path is specified:
1843 1. its total length must not exceed 256 characters
1845 2. wildcards cannot be used in the drive or in any directory name,
1846 although they may be allowed in the filename and extension.
1848 3. double backslashes are not allowed in the path.
1850 4. the following characters must not be included anywhere in the path: < > " / |
1852 5. a colon may only be included between the drive and path
1854 6. no directory name or filename plus extension may consist solely
1855 of space characters, or of a single or double dot.
1857 7. spaces between the drive, if specified, and the first directory in
1858 the path are illegal, although there may be spaces between other
1859 path components, for instance between directories.
1863 IMPORT_C TInt Connect(TInt aMessageSlots=KFileServerDefaultMessageSlots);
1864 IMPORT_C TVersion Version() const;
1865 IMPORT_C TInt AddFileSystem(const TDesC& aFileName) const;
1866 IMPORT_C TInt MountFileSystem(const TDesC& aFileSystemName,TInt aDrive) const;
1867 IMPORT_C TInt MountFileSystem(const TDesC& aFileSystemName,TInt aDrive, TBool aIsSync) const;
1868 IMPORT_C TInt MountFileSystemAndScan(const TDesC& aFileSystemName,TInt aDrive,TBool& aIsMountSuccess) const;
1869 IMPORT_C TInt MountFileSystem(const TDesC& aFileSystemName,const TDesC& aExtensionName,TInt aDrive);
1870 IMPORT_C TInt MountFileSystem(const TDesC& aFileSystemName,const TDesC& aExtensionName,TInt aDrive, TBool aIsSync);
1871 IMPORT_C TInt MountFileSystemAndScan(const TDesC& aFileSystemName,const TDesC& aExtensionName,TInt aDrive,TBool& aIsMountSuccess) const;
1872 IMPORT_C TInt DismountFileSystem(const TDesC& aFileSystemName,TInt aDrive) const;
1873 IMPORT_C TInt RemoveFileSystem(const TDesC& aFileSystemName) const;
1874 IMPORT_C TInt FileSystemName(TDes& aName,TInt aDrive) const;
1875 IMPORT_C TInt AddExtension(const TDesC& aFileName);
1876 IMPORT_C TInt MountExtension(const TDesC& aExtensionName,TInt aDrive);
1877 IMPORT_C TInt DismountExtension(const TDesC& aExtensionName,TInt aDrive);
1878 IMPORT_C TInt RemoveExtension(const TDesC& aExtensionName);
1879 IMPORT_C TInt ExtensionName(TDes& aExtensionName,TInt aDrive,TInt aPos);
1880 IMPORT_C TInt RemountDrive(TInt aDrive,const TDesC8* aMountInfo=NULL,TUint aFlags=0);
1881 IMPORT_C void NotifyChange(TNotifyType aType,TRequestStatus& aStat);
1882 IMPORT_C void NotifyChange(TNotifyType aType,TRequestStatus& aStat,const TDesC& aPathName);
1883 IMPORT_C void NotifyChangeCancel();
1884 IMPORT_C void NotifyChangeCancel(TRequestStatus& aStat);
1885 IMPORT_C void NotifyDiskSpace(TInt64 aThreshold,TInt aDrive,TRequestStatus& aStat);
1886 IMPORT_C void NotifyDiskSpaceCancel(TRequestStatus& aStat);
1887 IMPORT_C void NotifyDiskSpaceCancel();
1888 IMPORT_C TInt DriveList(TDriveList& aList) const;
1889 IMPORT_C TInt DriveList(TDriveList& aList, TUint aFlags) const;
1890 IMPORT_C TInt Drive(TDriveInfo& anInfo,TInt aDrive=KDefaultDrive) const;
1891 IMPORT_C TInt Volume(TVolumeInfo& aVol,TInt aDrive=KDefaultDrive) const;
1892 IMPORT_C void Volume(TVolumeInfo& aVol,TInt aDrive, TRequestStatus& aStat) const;
1893 IMPORT_C TInt SetVolumeLabel(const TDesC& aName,TInt aDrive=KDefaultDrive);
1894 IMPORT_C TInt Subst(TDes& aPath,TInt aDrive=KDefaultDrive) const;
1895 IMPORT_C TInt SetSubst(const TDesC& aPath,TInt aDrive=KDefaultDrive);
1896 IMPORT_C TInt RealName(const TDesC& aName,TDes& aResult) const;
1897 IMPORT_C TInt GetMediaSerialNumber(TMediaSerialNumber& aSerialNum, TInt aDrive);
1898 IMPORT_C TInt SessionPath(TDes& aPath) const;
1899 IMPORT_C TInt SetSessionPath(const TDesC& aPath);
1900 IMPORT_C TInt Parse(const TDesC& aName,TParse& aParse) const;
1901 IMPORT_C TInt Parse(const TDesC& aName,const TDesC& aRelated,TParse& aParse) const;
1902 IMPORT_C TInt MkDir(const TDesC& aPath);
1903 IMPORT_C TInt MkDirAll(const TDesC& aPath);
1904 IMPORT_C TInt RmDir(const TDesC& aPath);
1905 IMPORT_C TInt GetDir(const TDesC& aName,TUint anEntryAttMask,TUint anEntrySortKey,CDir*& anEntryList) const;
1906 IMPORT_C TInt GetDir(const TDesC& aName,TUint anEntryAttMask,TUint anEntrySortKey,CDir*& anEntryList,CDir*& aDirList) const;
1907 IMPORT_C TInt GetDir(const TDesC& aName,const TUidType& anEntryUid,TUint anEntrySortKey,CDir*& aFileList) const;
1908 IMPORT_C TInt Delete(const TDesC& aName);
1909 IMPORT_C TInt Rename(const TDesC& anOldName,const TDesC& aNewName);
1910 IMPORT_C TInt Replace(const TDesC& anOldName,const TDesC& aNewName);
1911 IMPORT_C TInt Att(const TDesC& aName,TUint& aAttValue) const;
1912 IMPORT_C TInt SetAtt(const TDesC& aName,TUint aSetAttMask,TUint aClearAttMask);
1913 IMPORT_C TInt Modified(const TDesC& aName,TTime& aTime) const;
1914 IMPORT_C TInt SetModified(const TDesC& aName,const TTime& aTime);
1915 IMPORT_C TInt Entry(const TDesC& aName,TEntry& anEntry) const;
1916 IMPORT_C TInt SetEntry(const TDesC& aName,const TTime& aTime,TUint aSetAttMask,TUint aClearAttMask);
1917 IMPORT_C TInt ReadFileSection(const TDesC& aName,TInt aPos,TDes8& aDes,TInt aLength) const;
1918 IMPORT_C static TBool IsValidDrive(TInt aDrive);
1919 IMPORT_C static TInt CharToDrive(TChar aChar,TInt& aDrive);
1920 IMPORT_C static TInt DriveToChar(TInt aDrive,TChar& aChar);
1921 IMPORT_C static TBool IsRomAddress(TAny* aAny);
1922 IMPORT_C static TDriveNumber GetSystemDrive();
1923 IMPORT_C static TChar GetSystemDriveChar();
1924 IMPORT_C TInt SetSystemDrive(TDriveNumber aSystemDrive);
1925 IMPORT_C void ResourceCountMarkStart() const;
1926 IMPORT_C void ResourceCountMarkEnd() const;
1927 IMPORT_C TInt ResourceCount() const;
1928 IMPORT_C TInt IsFileOpen(const TDesC& aFile,TBool& anAnswer) const;
1929 IMPORT_C TInt CheckDisk(const TDesC& aDrive) const;
1930 IMPORT_C TInt ScanDrive(const TDesC& aDrive) const;
1931 IMPORT_C TInt GetShortName(const TDesC& aLongName,TDes& aShortName) const;
1932 IMPORT_C TInt GetLongName(const TDesC& aShortName,TDes& aLongName) const;
1933 IMPORT_C TBool GetNotifyUser();
1934 IMPORT_C void SetNotifyUser(TBool aValue);
1935 IMPORT_C TUint8* IsFileInRom(const TDesC& aFileName) const;
1936 IMPORT_C TBool IsValidName(const TDesC& anEntryName) const;
1937 IMPORT_C TBool IsValidName(const TDesC& aFileName,TText& aBadChar) const;
1938 IMPORT_C TInt GetDriveName(TInt aDrive,TDes& aDriveName) const;
1939 IMPORT_C TInt SetDriveName(TInt aDrive,const TDesC& aDriveName);
1940 IMPORT_C TInt LoaderHeapFunction(TInt aFunction, TAny *aArg1=NULL, TAny *aArg2=NULL);
1941 IMPORT_C TInt SetErrorCondition(TInt anError,TInt aCount=0);
1942 IMPORT_C TInt SetDebugRegister(TInt aVal);
1943 IMPORT_C TInt SetAllocFailure(TInt aAllocNum);
1944 IMPORT_C void DebugNotify(TInt aDrive,TUint aNotifyType,TRequestStatus& aStat);
1945 IMPORT_C TInt ControlIo(TInt aDrive,TInt aCommand);
1946 IMPORT_C TInt ControlIo(TInt aDrive,TInt aCommand,TDes8& aParam1);
1947 IMPORT_C TInt ControlIo(TInt aDrive,TInt aCommand,TDes8& aParam1,TDes8& aParam2);
1948 IMPORT_C TInt ControlIo(TInt aDrive,TInt aCommand,TAny* aParam1,TAny* aParam2);
1949 IMPORT_C TInt LockDrive(TInt aDrv, const TMediaPassword &aOld, const TMediaPassword &aNew, TBool aStr);
1950 IMPORT_C TInt UnlockDrive(TInt aDrv, const TMediaPassword &Pswd, TBool aStr);
1951 IMPORT_C TInt ClearPassword(TInt aDrv, const TMediaPassword &aPswd);
1952 IMPORT_C TInt ErasePassword(TInt aDrv);
1953 IMPORT_C TInt SetSessionToPrivate(TInt aDrive);
1954 IMPORT_C TInt PrivatePath(TDes& aPath);
1955 IMPORT_C TInt CreatePrivatePath(TInt aDrive);
1956 IMPORT_C void StartupInitComplete(TRequestStatus& aStat);
1957 IMPORT_C TInt SetLocalDriveMapping(const TDesC8& aMapping);
1959 IMPORT_C TInt FinaliseDrives();
1961 /** specifies drive finalisation modes */
1962 enum TFinaliseDrvMode
1964 EFinal_RW, ///< after successful finalisation the drive remains writable and will become "not finalised" after the first write operation.
1965 EFinal_RO, ///< after successful finalisation the drive becomes read-only
1966 EForceUnfinalise///< @internalComponent mark the drive as "not finalised" can result in KErrAbort if the dive is in inconsistent state.
1969 IMPORT_C TInt FinaliseDrive(TInt aDriveNo, TFinaliseDrvMode aMode) const;
1971 IMPORT_C TInt SwapFileSystem(const TDesC& aOldFileSystemName,const TDesC& aNewFileSystemName,TInt aDrive) const;
1972 IMPORT_C TInt ReserveDriveSpace(TInt aDriveNo, TInt aSpace);
1973 IMPORT_C TInt GetReserveAccess(TInt aDriveNo);
1974 IMPORT_C TInt ReleaseReserveAccess(TInt aDriveNo);
1976 IMPORT_C TInt AddPlugin(const TDesC& aFileName) const;
1977 IMPORT_C TInt RemovePlugin(const TDesC& aPluginName) const;
1978 IMPORT_C TInt PluginName(TDes& aPluginName,TInt aDrive,TInt aPos);
1980 IMPORT_C TInt MountPlugin(const TDesC& aPluginName) const;
1981 IMPORT_C TInt MountPlugin(const TDesC& aPluginName,TInt aDrive) const;
1982 IMPORT_C TInt MountPlugin(const TDesC& aPluginName,TInt aDrive, TInt aPos) const;
1984 IMPORT_C TInt DismountPlugin(const TDesC& aPluginName) const;
1985 IMPORT_C TInt DismountPlugin(const TDesC& aPluginName,TInt aDrive) const;
1986 IMPORT_C TInt DismountPlugin(const TDesC& aPluginName,TInt aDrive,TInt aPos) const;
1988 IMPORT_C void NotifyDismount(TInt aDrive, TRequestStatus& aStat, TNotifyDismountMode aMode=EFsDismountRegisterClient) const;
1989 IMPORT_C void NotifyDismountCancel(TRequestStatus& aStat) const;
1990 IMPORT_C void NotifyDismountCancel() const;
1991 IMPORT_C TInt AllowDismount(TInt aDrive) const;
1992 IMPORT_C TInt SetStartupConfiguration(TInt aCommand,TAny* aParam1,TAny* aParam2) const;
1993 IMPORT_C TInt AddCompositeMount(const TDesC& aFileSystemName,TInt aLocalDriveToMount,TInt aCompositeDrive, TBool aSync) const;
1994 IMPORT_C TInt SetNotifyChange(TBool aNotifyChange);
1995 IMPORT_C TInt QueryVolumeInfoExt(TInt aDrive, TQueryVolumeInfoExtCmd aCommand, TDes8& aInfo) const;
1996 IMPORT_C TInt VolumeIOParam(TInt aDriveNo, TVolumeIOParamInfo& aParamInfo) const;
1997 IMPORT_C TInt FileSystemSubType(TInt aDriveNo, TDes& aName) const;
1998 IMPORT_C TInt InitialisePropertiesFile(const TPtrC8& aPtr) const;
2000 TInt Unclamp(const RFileClamp& aHandle);
2003 void GetDirL(const TDesC& aMatchName,TUint anEntryAttMask,TUint anEntrySortKey,CDir*& anEntryList,CDir*& aDirList,RDir& aDir) const;
2004 void GetDirL(const TDesC& aMatchName,TUint anEntryAttMask,TUint anEntrySortKey,CDir*& anEntryList,RDir& aDir) const;
2005 void GetDirL(const TDesC& aMatchName,const TUidType& aUidType,TUint anEntrySortKey,CDir*& anEntryList,RDir& aDir) const;
2006 void DoGetDirL(TUint anEntrySortKey,CDir*& anEntryList,RDir& aDir) const;
2007 TInt GetOpenFileList(TInt& aSessionNum,TInt& aLocalPos,TThreadId& aThreadId,TEntryArray& anArray) const;
2008 friend class TOpenFileScan;
2021 Creates and opens a file, and performs all operations on a single open file.
2025 - reading from and writing to the file
2027 - seeking to a position within the file
2029 - locking and unlocking within the file
2031 - setting file attributes
2033 Before using any of these services, a connection to a file server session must
2034 have been made, and the file must be open.
2038 - use Open() to open an existing file for reading or writing; an error is
2039 returned if it does not already exist.
2040 To open an existing file for reading only, use Open() with an access mode of
2041 EFileRead, and a share mode of EFileShareReadersOnly.
2043 - use Create() to create and open a new file for writing; an error is returned
2044 if it already exists.
2046 - use Replace() to open a file for writing, replacing any existing file of
2047 the same name if one exists, or creating a new file if one does not exist.
2048 Note that if a file exists, its length is reset to zero.
2050 - use Temp() to create and open a temporary file with a unique name,
2051 for writing and reading.
2053 When opening a file, you must specify the file server session to use for
2054 operations with that file. If you do not close the file explicitly, it is
2055 closed when the server session associated with it is closed.
2057 Reading and Writing:
2059 There are several variants of both Read() and Write().
2060 The basic Read(TDes8& aDes) and Write(const TDesC8& aDes) are supplemented
2061 by variants allowing the descriptor length to be overridden, or the seek
2062 position of the first byte to be specified, or asynchronous completion,
2065 Reading transfers data from a file to a descriptor, and writing transfers
2066 data from a descriptor to a file. In all cases, the file data is treated
2067 as binary and byte descriptors are used (TDes8, TDesC8).
2072 class RFile : public RSubSessionBase
2075 IMPORT_C TInt Open(RFs& aFs,const TDesC& aName,TUint aFileMode);
2076 IMPORT_C void Close();
2077 IMPORT_C TInt Create(RFs& aFs,const TDesC& aName,TUint aFileMode);
2078 IMPORT_C TInt Replace(RFs& aFs,const TDesC& aName,TUint aFileMode);
2079 IMPORT_C TInt Temp(RFs& aFs,const TDesC& aPath,TFileName& aName,TUint aFileMode);
2080 IMPORT_C TInt Read(TDes8& aDes) const;
2081 IMPORT_C void Read(TDes8& aDes,TRequestStatus& aStatus) const;
2082 IMPORT_C TInt Read(TDes8& aDes,TInt aLength) const;
2083 IMPORT_C void Read(TDes8& aDes,TInt aLength,TRequestStatus& aStatus) const;
2084 IMPORT_C TInt Read(TInt aPos,TDes8& aDes) const;
2085 IMPORT_C void Read(TInt aPos,TDes8& aDes,TRequestStatus& aStatus) const;
2086 IMPORT_C TInt Read(TInt aPos,TDes8& aDes,TInt aLength) const;
2087 IMPORT_C void Read(TInt aPos,TDes8& aDes,TInt aLength,TRequestStatus& aStatus) const;
2088 IMPORT_C void ReadCancel(TRequestStatus& aStatus) const;
2089 IMPORT_C void ReadCancel() const;
2090 IMPORT_C TInt Write(const TDesC8& aDes);
2091 IMPORT_C void Write(const TDesC8& aDes,TRequestStatus& aStatus);
2092 IMPORT_C TInt Write(const TDesC8& aDes,TInt aLength);
2093 IMPORT_C void Write(const TDesC8& aDes,TInt aLength,TRequestStatus& aStatus);
2094 IMPORT_C TInt Write(TInt aPos,const TDesC8& aDes);
2095 IMPORT_C void Write(TInt aPos,const TDesC8& aDes,TRequestStatus& aStatus);
2096 IMPORT_C TInt Write(TInt aPos,const TDesC8& aDes,TInt aLength);
2097 IMPORT_C void Write(TInt aPos,const TDesC8& aDes,TInt aLength,TRequestStatus& aStatus);
2098 IMPORT_C TInt Lock(TInt aPos,TInt aLength) const;
2099 IMPORT_C TInt UnLock(TInt aPos,TInt aLength) const;
2100 IMPORT_C TInt Seek(TSeek aMode,TInt& aPos) const;
2101 IMPORT_C TInt Flush();
2102 IMPORT_C void Flush(TRequestStatus& aStatus);
2103 IMPORT_C TInt Size(TInt& aSize) const;
2104 IMPORT_C TInt SetSize(TInt aSize);
2105 IMPORT_C TInt Att(TUint& aAttValue) const;
2106 IMPORT_C TInt SetAtt(TUint aSetAttMask,TUint aClearAttMask);
2107 IMPORT_C TInt Modified(TTime& aTime) const;
2108 IMPORT_C TInt SetModified(const TTime& aTime);
2109 IMPORT_C TInt Set(const TTime& aTime,TUint aSetAttMask,TUint aClearAttMask);
2110 IMPORT_C TInt ChangeMode(TFileMode aNewMode);
2111 IMPORT_C TInt Rename(const TDesC& aNewName);
2112 IMPORT_C TInt Drive(TInt &aDriveNumber, TDriveInfo &aDriveInfo) const;
2113 IMPORT_C TInt Adopt(RFs& aFs, TInt aHandle);
2114 IMPORT_C TInt AdoptFromClient(const RMessage2& aMsg, TInt aFsHandleIndex, TInt aFileHandleIndex);
2115 IMPORT_C TInt AdoptFromServer(TInt aFsHandle, TInt aFileHandle);
2116 IMPORT_C TInt AdoptFromCreator(TInt aFsIndex, TInt aFileHandleIndex);
2117 IMPORT_C TInt Name(TDes& aName) const;
2118 IMPORT_C TInt TransferToServer(TIpcArgs& aIpcArgs, TInt aFsHandleIndex, TInt aFileHandleIndex) const;
2119 IMPORT_C TInt TransferToClient(const RMessage2& aMsg, TInt aFileHandleIndex) const;
2120 IMPORT_C TInt TransferToProcess(RProcess& aProcess, TInt aFsHandleIndex, TInt aFileHandleIndex) const;
2121 IMPORT_C TInt Duplicate(const RFile& aFile, TOwnerType aType=EOwnerProcess);
2122 IMPORT_C TInt FullName(TDes& aName) const;
2123 IMPORT_C TInt BlockMap(SBlockMapInfo& aInfo, TInt64& aStartPos, TInt64 aEndPos=-1, TInt aBlockMapusage=EBlockMapUsagePaging) const;
2124 // IMPORT_C TInt Clamp(RFileClamp& aHandle);
2125 TInt Clamp(RFileClamp& aHandle);
2128 TInt DuplicateHandle(TInt& aSubSessionHandle) const;
2133 class RDir : public RSubSessionBase
2138 Reads the entries contained in a directory.
2140 You must first open the directory, specifying an attribute mask which is used
2141 by Read() calls to filter the entry types required. Then, use one of
2142 the Read() functions to read the filtered entries. When the operation
2143 is complete, the directory should be closed using Close()
2145 There are two types of Read(): one works with a single entry at a time,
2146 requiring programs to iterate through the entries explicitly.
2147 The other works with an entire TEntryArray, allowing multiple entries to be
2149 As well as making application program logic somewhat simpler, this type
2150 uses fewer calls to the server, and is more efficient.
2152 Each type of Read() can be performed either synchronously or asynchronously.
2154 It may be more convenient to use RFs::GetDir() than the Read() calls supported
2156 RFs::GetDir() has the advantage that it allows a directory’s entries to be
2157 sorted in various ways.
2158 However, it does not provide asynchronous as well as synchronous variants
2159 and does not allow entries to be read individually.
2165 IMPORT_C TInt Open(RFs& aFs,const TDesC& aMatchName,const TUidType& aUidType);
2166 IMPORT_C TInt Open(RFs& aFs,const TDesC& aMatchName,TUint anAttMask);
2167 IMPORT_C void Close();
2168 IMPORT_C TInt Read(TEntryArray& anArray) const;
2169 IMPORT_C void Read(TEntryArray& anArray,TRequestStatus& aStatus) const;
2170 IMPORT_C TInt Read(TEntry& anEntry) const;
2171 IMPORT_C void Read(TPckg<TEntry>& anEntry,TRequestStatus& aStatus) const;
2175 class RFormat : public RSubSessionBase
2180 Formats a device, one step at a time.
2182 RFormat must first be opened on a device before formatting each
2185 There is also an asynchronous version of Next() which, if encapsulated into
2186 a suitable active object, can be used to implement a
2187 user-interruptible formatting process.
2191 IMPORT_C TInt Open(RFs& aFs,const TDesC& aName,TUint aFormatMode,TInt& aCount);
2192 IMPORT_C TInt Open(RFs& aFs,const TDesC& aName,TUint aFormatMode,TInt& aCount,const TDesC8& anInfo);
2193 IMPORT_C void Close();
2194 IMPORT_C TInt Next(TInt& aStep);
2195 IMPORT_C void Next(TPckgBuf<TInt>& aStep,TRequestStatus& aStatus);
2201 class RRawDisk : public RSubSessionBase
2206 Enables direct disk access.
2208 No other resources can access the disk while direct access to it is in effect.
2210 This class is not intended for user derivation.
2214 IMPORT_C TInt Open(RFs& aFs,TInt aDrive);
2215 IMPORT_C void Close();
2216 IMPORT_C TInt Read(TInt64 aPos,TDes8& aDes);
2217 IMPORT_C TInt Write(TInt64 aPos,TDesC8& aDes);
2226 NONSHARABLE_CLASS(CDirScan) : public CBase
2231 Scans a directory structure.
2233 The scan moves from directory to directory through the hierarchy, returning
2234 a list of the entries contained in each. The order in which the directories
2235 are scanned is determined by a sort key which is specified when setting up
2236 the scan. The base directory to be scanned and the entry types of interest
2237 must also be specified before performing the scan.
2239 This class is not intended for user derivation
2244 Defines the scan direction.
2249 Scan upwards from the lowest level directory in the hierarchy to
2250 the top level directory.
2255 Scan downwards from the top level directory in the hierarchy to
2256 the bottom level directory.
2261 IMPORT_C static CDirScan* NewL(RFs& aFs);
2262 IMPORT_C static CDirScan* NewLC(RFs& aFs);
2263 IMPORT_C ~CDirScan();
2264 IMPORT_C void SetScanDataL(const TDesC& aMatchName,TUint anEntryAttMask,TUint anEntrySortMask,TScanDirection aScanDir=EScanDownTree);
2265 IMPORT_C void NextL(CDir*& aDirEntries);
2266 IMPORT_C TPtrC AbbreviatedPath();
2267 IMPORT_C TPtrC FullPath();
2272 void UpdateAbbreviatedPath();
2273 void ScanUpTreeL(CDir*& aDirEntries);
2274 void ScanDownTreeL(CDir*& aDirEntries);
2275 void GetDirEntriesL(CDir*& aDirEntries);
2279 TPtrC iAbbreviatedPath;
2280 TInt iAbbreviatedPathPos;
2281 TUint iEntryAttMask;
2282 TUint iEntrySortMask;
2284 TScanDirection iScanDir;
2296 A list of CFileMan error codes.
2302 No additional error information is available, either because
2303 the latest CFileMan operation did not return an error, or if it did,
2304 the error was not one for which additional information is available.
2306 ENoExtraInformation,
2310 A leave occurred while setting up the initial scan.
2312 This indicates that the operation did not begin.
2316 EInitializationFailed,
2320 A leave occurred while scanning the next directory in the course of a file
2321 management function.
2323 This indicates that the operation did begin.
2327 EScanNextDirectoryFailed,
2331 Error occurred when attempting to open the source file for a file copy
2338 Error occurred while attempting to create, or, if overwriting is in effect,
2339 replace the target file for a file copy or move.
2345 The operation completed without processing any files because no matching
2354 class MFileManObserver
2359 Provides notification of the progress of synchronous or asynchronous
2360 file management operations.
2362 It should be inherited by classes which implement this protocol.
2364 The enquiry functions provided by CFileBase and CFileMan may be used by
2365 the observer to display information about the progress of the operation
2366 such as error messages, the names of the target and destination files,
2367 and the number of bytes transferred during a copy operation.
2368 Notification may take place before or after an entry has been processed,
2369 or during a file copy or move.
2370 Each notification function returns a value which can be used to enable
2371 the user to control the progress of the operation, for example to cancel
2372 a long-running multiple file copy.
2373 To use this class, pass a pointer to an instance of the class to
2374 the CFileMan constructor, or use SetObserver(), defined in CFileBase.
2379 Control for the current CFileMan operation.
2384 Proceed with the current or the next entry.
2390 Retry processing the previous entry.
2396 Abort operation, causes function to return KErrCancel.
2402 Cancel processing the current entry.
2407 IMPORT_C virtual TControl NotifyFileManStarted();
2408 IMPORT_C virtual TControl NotifyFileManOperation();
2409 IMPORT_C virtual TControl NotifyFileManEnded();
2415 class CFileBase : public CBase
2420 Abstract base class for file management.
2422 It provides functions to set an observer for the derived class
2423 CFileMan, and to get information about the entry being processed.
2429 IMPORT_C void SetObserver(MFileManObserver* anObserver);
2431 IMPORT_C const TEntry& CurrentEntry();
2432 IMPORT_C TPtrC AbbreviatedPath();
2433 IMPORT_C TPtrC FullPath();
2434 IMPORT_C TInt GetLastError();
2435 IMPORT_C TFileManError GetMoreInfoAboutError();
2437 IMPORT_C CFileBase(RFs& anFs);
2438 IMPORT_C void ConstructL();
2439 IMPORT_C ~CFileBase();
2440 IMPORT_C void RunL();
2441 IMPORT_C void RunInSeparateThreadL(TThreadFunction aThreadFunction);
2444 Called from RunL to perform tidy up after an operation.
2447 @see CFileBase::RunL
2449 virtual void CompleteOperationL() {};
2453 Called from RunL to perform the requested operation.
2456 @see CFileBase::RunL
2458 virtual void DoOperationL() = 0;
2462 RThread iFManThread;
2463 RSemaphore iSynchronizer;
2470 MFileManObserver* iObserver;
2472 TFileManError iErrorInfo;
2473 TRequestStatus* iStatus;
2474 HBufC* iSessionPath;
2475 TInt iNumberOfFilesProcessed;
2480 friend void DoFManBaseOperationL(TAny* aPtr);
2481 friend TInt FManBaseThreadFunction(TAny* aPtr);
2487 NONSHARABLE_CLASS(CFileMan) : public CFileBase
2492 Offers file management services which accept the use of wildcards;
2493 synchronous and asynchronous.
2495 It also provides enquiry functions, which, like those provided by
2496 the base class CFileBase, may be used by an observer class object
2497 to provide the user with information about the progress of the operation.
2499 All of the file management functions provided by this class accept the use of
2500 wildcards, and may operate either synchronously or asynchronously.
2501 When CFileMan is operating asynchronously, the operation takes place in
2502 a separate thread from the calling code.
2504 A file notification observer (an instance of a class deriving
2505 from MFileManObserver) may optionally be used by CFileMan when operating
2506 synchronously or asynchronously. If provided, the appropriate notification
2507 function is called before or after each entry has been processed,
2508 or during a file copy or move.
2509 This notification can be used to provide information about the state of
2510 the operation, such as the number of bytes transferred during a
2511 large-scale file copy. It can also be used to allow the user to cancel,
2512 retry or continue processing an entry, or to abort the whole operation.
2513 If such notification is required, specify an object deriving from
2514 MFileManObserver class in the constructor, or call SetObserver(),
2515 defined in the base class, CFileBase.
2517 All of the file manipulation functions except Rename() may operate recursively,
2518 and all can operate non-recursively. When operating recursively,
2519 these functions will act on all matching files located throughout
2520 the source directory’s hierarchy. When operating non-recursively,
2521 these functions act upon files contained in the single top level source
2522 directory only. Recursion is set or unset using the switch parameter to
2525 This class is not intended for user derivation.
2527 @see MFileManObserver
2532 An enumeration that identifies CFileMan tasks. This enumeration is used
2533 by CurrentAction() to identify which task currently being carried out.
2535 @see CFileMan::CurrentAction
2576 Deleting a directory and all contents
2582 Renaming component to VFAT short name (guaranteed to be unique)
2584 ERenameInvalidEntry,
2587 Copying file from open file handle
2594 Overwriting and recursion switch.
2596 Used in CFileMan functions to set whether operations are applied to
2597 the specified directory and all directories below it, or
2598 the specified directory only.
2603 Any files in the destination directory that have the same name as
2604 the source files in a rename, move or copy operation, will
2611 Recursive operation.
2616 IMPORT_C static CFileMan* NewL(RFs& aFs);
2617 IMPORT_C static CFileMan* NewL(RFs& aFs,MFileManObserver* anObserver);
2619 IMPORT_C TAction CurrentAction();
2620 IMPORT_C void GetCurrentTarget(TFileName& aFile);
2621 IMPORT_C void GetCurrentSource(TFileName& aFile);
2622 IMPORT_C TInt BytesTransferredByCopyStep();
2624 IMPORT_C TInt Attribs(const TDesC& aName,TUint aSetMask,TUint aClearMask,const TTime& aTime,TUint aSwitch=0);
2625 IMPORT_C TInt Attribs(const TDesC& aName,TUint aSetMask,TUint aClearMask,const TTime& aTime,TUint aSwitch,TRequestStatus& aStatus);
2626 IMPORT_C TInt Copy(const TDesC& anOld,const TDesC& aNew,TUint aSwitch=EOverWrite);
2627 IMPORT_C TInt Copy(const TDesC& anOld,const TDesC& aNew,TUint aSwitch,TRequestStatus& aStatus);
2628 IMPORT_C TInt Delete(const TDesC& aName,TUint aSwitch=0);
2629 IMPORT_C TInt Delete(const TDesC& aName,TUint aSwitch,TRequestStatus& aStatus);
2630 IMPORT_C TInt Move(const TDesC& anOld,const TDesC& aNew,TUint aSwitch=EOverWrite);
2631 IMPORT_C TInt Move(const TDesC& anOld,const TDesC& aNew,TUint aSwitch,TRequestStatus& aStatus);
2632 IMPORT_C TInt Rename(const TDesC& anOld,const TDesC& aNew,TUint aSwitch=EOverWrite);
2633 IMPORT_C TInt Rename(const TDesC& anOld,const TDesC& aNew,TUint aSwitch,TRequestStatus& aStatus);
2634 IMPORT_C TInt RmDir(const TDesC& aDirName);
2635 IMPORT_C TInt RmDir(const TDesC& aDirName,TRequestStatus& aStatus);
2636 IMPORT_C TInt Copy(const RFile& anOld,const TDesC& aNew,TUint aSwitches=EOverWrite);
2637 IMPORT_C TInt Copy(const RFile& anOld,const TDesC& aNew,TUint aSwitches,TRequestStatus& aStatus);
2640 TInt RenameInvalidEntry(const TDesC& anOld,const TDesC& aNew,TUint aSwitch=EOverWrite);
2643 This is an internal enumeration for CFileMan implementation.
2644 THis enumeration is mapped into TAction when user wants to identify the current
2645 task of CFileMan by CurrentAction().
2647 @see CFileMan::TAction
2648 @see CFileMan::CurrentAction
2650 enum TInternalAction
2653 Internal indicator for None operation.
2654 This is mapped to CFileMan::ENone.
2659 Internal indicator for Attribs() operation.
2660 This is mapped to CFileMan::EAttribs.
2665 Internal indicator for Copy() operation.
2666 This is mapped to CFileMan::ECopy.
2671 Internal indicator for Delete() operation.
2672 This is mapped to CFileMan::EDelete.
2677 Internal indicator for Move() operation on different drives.
2678 This is mapped to CFileMan::Move.
2680 EInternalCopyForMove,
2683 Internal indicator for Move() operation on the same drive.
2684 This is mapped to CFileMan::Rename.
2685 Note for compatibility reasons, it is not mapped to CFileMan::Move.
2687 EInternalRenameForMove,
2690 Internal indicator for Rename() operation.
2691 This is mapped to CFileMan::ERename.
2696 Internal indicator for RmDir() operation.
2697 This is mapped to CFileMan::ERmDir.
2702 Internal indicator for RenameInvalidEntry() operation.
2703 This is mapped to CFileMan::ERenameInvalidEntry.
2705 EInternalRenameInvalidEntry,
2708 Internal indicator for CopyFromHandle() operation.
2709 This is mapped to CFileMan::ECopyFromHandle.
2711 EInternalCopyFromHandle,
2714 void CompleteOperationL();
2715 void DoOperationL();
2716 void CheckForDirectory();
2717 void SetFlags(TBool aOverWrite,TBool aRecurse,TBool aScanDirection,TBool aMoveRename);
2718 void GetSrcAndTrg(TParse& aSrcName,TFileName& aTrgName);
2719 void DoSynchronize(TInt aRetVal);
2720 TInt CheckRenameAllowed(const TDesC& aSrcName,const TDesC& aTrgName);
2721 TInt SetupMoveOnSameDrive(TUint aSwitches, TBool& aComplete);
2722 TInt SetupMoveAcrossDrives(TUint aSwitches);
2723 TInt SetupTargetDirectory(TBool aOverWrite, TBool& aComplete);
2724 TBool SrcTrgDrivesIdentical();
2725 TBool SetupDirectoryForMove();
2728 void DoCopyOrMoveL();
2732 void DoCopyFromHandleL();
2733 TInt DoCopy(const RFile& aSrcFile, RFile& aDstFile, TInt& aRet);
2736 TInternalAction iAction;
2740 TInt iBytesTransferred;
2741 RFile iSrcFileHandle;
2742 TBool iMovingContents;
2745 TFileName iTmpName1;
2746 TFileName iTmpName2;
2748 friend void RenameInvalidEntryL(RFs& aFs,TParse& aSrcFile);
2759 Searches for files and directories.
2761 Each function has a variant which searches for multiple files/directories,
2762 using one or more wildcard characters in the filename.
2763 If an initial search is successful, further searches can be carried out
2764 using Find() or FindWild().
2765 You can also retrieve the fully qualified file specification,
2766 and manipulate and interrogate it using the TParse class (or related classes).
2768 Note that when specifying the path of a directory to search, the path should
2769 always end with a backslash character.When trailing backslash is not present
2770 then it is considered as file. And path will be taken till last backslash.
2771 The client must have appropriate capabilities for the directory to be searched.
2772 For example without ALL FILES Capability, it is not possible to successfully
2773 find any files under \sys\bin directory.
2775 By default if the file is not found in the current drive the rest of the drives,
2776 excluding the remote ones, will be searched. Using function SetFindMask it is
2777 possible to specify a combination of drive attributes(aMask) that the drives to
2778 be searched must match.
2783 IMPORT_C TFindFile(RFs& aFs);
2784 IMPORT_C TInt FindByPath(const TDesC& aFileName,const TDesC* aPathList);
2785 IMPORT_C TInt FindByDir(const TDesC& aFileName,const TDesC& aDirPath);
2786 IMPORT_C TInt Find();
2787 IMPORT_C TInt FindWildByPath(const TDesC& aFileName,const TDesC* aPathList,CDir*& aDirList);
2788 IMPORT_C TInt FindWildByDir(const TDesC& aFileName,const TDesC& aDirPath,CDir*& aDir);
2789 IMPORT_C TInt FindWild(CDir*& aDirList);
2790 IMPORT_C TInt SetFindMask(TUint aMask);
2791 inline const TDesC& File() const;
2794 TInt DoFindByPath(const TDesC& aFileName,const TDesC* aPathList);
2795 TInt DoFindByDir(const TDesC& aFileName,const TDesC& aDir);
2797 TInt DoFindNextInPath();
2798 TInt DoFindNextInDriveList();
2806 TDriveList iDrvList;
2818 Contains a list of entries for the files which were opened in
2819 a file server session.
2823 typedef CDir CFileList;
2833 Scans open files to get a list of the entries for all files which are currently
2834 open in a particular file server session.
2836 NextL() creates a list of the files opened by the session.
2837 The ID of the thread which opened the files listed may be obtained by calling ThreadId().
2838 If multiple sessions are in use, repeatedly calling NextL() will return a list
2839 of open files in each session.
2843 IMPORT_C TOpenFileScan(RFs& aFs);
2844 IMPORT_C void NextL(CFileList*& aFileList);
2845 IMPORT_C TThreadId ThreadId() const;
2848 TThreadId iThreadId;
2861 Reads and writes single lines of text to or from a Unicode file.
2875 IMPORT_C TFileText();
2876 IMPORT_C void Set(RFile& aFile);
2877 IMPORT_C TInt Read(TDes& aDes);
2878 IMPORT_C TInt Write(const TDesC& aDes);
2879 IMPORT_C TInt Seek(TSeek aMode);
2882 TInt CheckForTerminator(TBool& anAnswer);
2889 TBuf8<0x100> iReadBuf;
2899 IMPORT_C TBool FileNamesIdentical(const TDesC& aFileName1,const TDesC& aFileName2);
2904 Local drive mapping list - passed as argument to RFs::SetLocalDriveMapping().
2909 class TLocalDriveMappingInfo
2912 enum TDrvMapOperation {EWriteMappingsAndSet=0,EWriteMappingsNoSet=1,ESwapIntMappingAndSet=2};
2914 TInt iDriveMapping[KMaxLocalDrives];
2915 TDrvMapOperation iOperation;
2917 typedef TPckgBuf<TLocalDriveMappingInfo> TLocalDriveMappingInfoBuf;
2920 Client side plugin API.
2925 class RPlugin : public RSubSessionBase
2928 IMPORT_C TInt Open(RFs& aFs, TInt aPos);
2929 IMPORT_C void Close();
2931 IMPORT_C void DoRequest(TInt aReqNo,TRequestStatus& aStatus) const;
2932 IMPORT_C void DoRequest(TInt aReqNo,TRequestStatus& aStatus,TDes8& a1) const;
2933 IMPORT_C void DoRequest(TInt aReqNo,TRequestStatus& aStatus,TDes8& a1,TDes8& a2) const;
2934 IMPORT_C TInt DoControl(TInt aFunction) const;
2935 IMPORT_C TInt DoControl(TInt aFunction,TDes8& a1) const;
2936 IMPORT_C TInt DoControl(TInt aFunction,TDes8& a1,TDes8& a2) const;
2937 IMPORT_C void DoCancel(TUint aReqMask) const;
2944 Specifies that a plugin should determine for itself which drives it attaches to.
2946 @see RFs::MountPlugin
2947 @see RFs::DismountPlugin
2949 const TInt KPluginAutoAttach = 0x19;
2955 Specifies that a plugin should determine its own position in the plugin stack.
2957 @see RFs::MountPlugin
2958 @see RFs::DismountPlugin
2960 const TInt KPluginAutoLocate = 0xC8;
2966 The UID of the File Server process
2968 const TInt KFileServerUidValue = 0x100039e3;
2974 A set of session specific configuration flags.
2978 Notify the user or write failures
2980 EFsSessionNotifyUser = KBit0,
2983 Notify clients registered for change notification
2985 EFsSessionNotifyChange = KBit1,
2988 Enables all session flags
2990 EFsSessionFlagsAll = KSet32,
2996 struct SBlockMapArgs
3006 Validates the mask used to match drive attributes.
3009 @see TFindFile::SetFindMask
3011 TInt ValidateMatchMask( TUint aMask);
3016 #include "f32file.inl"