IMAPI2 可以刻录大于 4Gb 的文件吗?
Posted
技术标签:
【中文标题】IMAPI2 可以刻录大于 4Gb 的文件吗?【英文标题】:Can IMAPI2 burn files with the size > 4Gb? 【发布时间】:2010-10-29 22:08:18 【问题描述】:IMAPI2 接口 IFileSystem 使用COM IStream 接口来表示文件数据。有 AddTree 方法将指定的目录内容添加到 IFileSystem。所以 AddTree 必须在这个过程中创建 IStream。我想知道它使用什么 IStream 实现?如果它使用标准的 OLE 实现,我们就会遇到一个严重的问题,因为 OLE 流不支持大于 4Gb 的文件。
谁能解释一下这个问题?
【问题讨论】:
如果你需要写比这个更大的文件,你总是可以先使用归档程序将它分成块。如果没有直接的解决方案,请绕行。 我可以实现自己的 IStream 并使用 AddFile 而不是 AddTree。这是更好的解决方法。我想知道我真的需要这样做。 【参考方案1】: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 原生支持许多现代文件系统功能:
大分区大小(最大 2TB,块大小为 512B,或 8TB,块大小为 2KB)64 位文件大小 无大小限制的扩展属性(例如,命名流或分支) 长文件名(最大 254 字节,名称中可以出现任何字符) 文件名的Unicode编码 稀疏文件 硬链接 符号链接 元数据校验和限制:
分区大小有限。对于 512 个扇区大小,32 位块号将分区大小限制为 2TB。 不支持压缩/加密文件和目录。【讨论】:
以上是关于IMAPI2 可以刻录大于 4Gb 的文件吗?的主要内容,如果未能解决你的问题,请参考以下文章