IMAPI2接口IFileSystem使用COM IStream接口来表示文件数据。 AddTree方法将指定的目录内容添加到IFileSystem。因此AddTree必须在此过程中创建IStream。我想知道它使用的是什么IStream实现?如果它使用标准的OLE实现比我们有一个讨厌的问题,因为OLE流不支持大于4Gb的文件。
有人能解释一下这个问题吗?
答案 0 :(得分:2)
IMAPIv2将ISO9660兼容光盘上的文件大小限制为2GB。
要刻录超过2GB的文件,您必须设置UDF文件系统。
HRESULT hr = FileSystemImage->put_FileSystemsToCreate( FsiFileSystemUDF );
FsiFileSystems枚举定义了已识别文件系统的值:
typedef enum FsiFileSystems {
FsiFileSystemNone = 0,
FsiFileSystemISO9660 = 1,
FsiFileSystemJoliet = 2,
FsiFileSystemUDF = 4,
FsiFileSystemUnknown = 0x40000000
} FsiFileSystems;
- FsiFileSystemNone光盘不包含可识别的文件系统。
- FsiFileSystemISO9660标准CD文件系统。
- FsiFileSystemJoliet Joliet文件系统。
- FsiFileSystemUDF UDF文件系统。
- FsiFileSystemUnknown光盘似乎有文件系统,但布局与任何已识别的类型都不匹配。
UDF本身支持许多现代文件系统功能:
限制:
答案 1 :(得分:0)
显然AddTree使用SHCreateStreamOnFileEx,它显然支持大文件。我会在检查时接受我的回答。