IMAPI2 interface IFileSystem uses COM IStream interfaces to represent file data. There is AddTree method that adds specified directory contents to IFileSystem. So AddTree must create IStream's in the process. I wonder what implementation of IStream it uses? If it uses the standard OLE implementation than we have a nasty problem because OLE streams doesn't support files bigger than 4Gb.
Can anyone shed some light on this issue?
IMAPIv2 limits the size of the file on a ISO9660 compatible disc to 2GB.
In order to burn files of more than 2GB you have to set a UDF file system.
HRESULT hr = FileSystemImage->put_FileSystemsToCreate( FsiFileSystemUDF );
The FsiFileSystems enumeration defines the values for recognized file systems:
typedef enum FsiFileSystems {
FsiFileSystemNone = 0,
FsiFileSystemISO9660 = 1,
FsiFileSystemJoliet = 2,
FsiFileSystemUDF = 4,
FsiFileSystemUnknown = 0x40000000
} FsiFileSystems;
- FsiFileSystemNone The disc does not contain a recognized file system.
- FsiFileSystemISO9660 Standard CD file system.
- FsiFileSystemJoliet Joliet file system.
- FsiFileSystemUDF UDF file system.
- FsiFileSystemUnknown The disc appears to have a file system, but the layout does not match any of the recognized types.
UDF natively supports many modern file systems features:
Limitations: