IMAPI2接口IFileSystem使用COM IStream接口来表示文件数据。有AddTree方法可将指定的目录内容添加到IFileSystem。所以AddTree必须在这个过程中创建IStream。我想知道它使用的是什么实现的IStream?如果它使用标准的OLE实现比我们有一个讨厌的问题,因为OLE流不支持大于4Gb的文件。IMAPI2可以刻录大小> 4Gb的文件吗?
任何人都可以解释一下这个问题?
IMAPI2接口IFileSystem使用COM IStream接口来表示文件数据。有AddTree方法可将指定的目录内容添加到IFileSystem。所以AddTree必须在这个过程中创建IStream。我想知道它使用的是什么实现的IStream?如果它使用标准的OLE实现比我们有一个讨厌的问题,因为OLE流不支持大于4Gb的文件。IMAPI2可以刻录大小> 4Gb的文件吗?
任何人都可以解释一下这个问题?
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本身支持许多现代的文件系统的功能:
限制:
显然AddTree使用SHCreateStreamOnFileEx,它明显支持大文件。我会在检查时接受我的回答。
如果您需要编写大于该文件的文件,您可以使用归档程序首先将其拆分成块。如果没有直接的解决方案,请四处走走。 – 2009-05-29 15:37:24