windowsimapi

Can IMAPI2 burn files with the size > 4Gb?


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?


Solution

  • 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: