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 的文件吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 IMAPI2 检索和设置刻录速度?

在磁盘中创建一个文件夹并使用 IMAPI 2 刻录到它

在 Windows XP 中使用 .NET 刻录 DVD 需要哪些基本 COM 组件?

如何在空白光盘上刻录东西!?

怎么把wim系统镜像刻录到U盘

Windows XP 上的 IMAPI2 错误