首页 > 解决方案 > 将光盘用作实时文件系统的 Windows API 是什么?

问题描述

我使用 Windows IMAPI 用 C++ 开发了一个 CD 刻录应用程序。

但是,现在我希望我的光盘能够像 Live File System(像 USB)一样运行。

基本上,我想拥有 Windows Explorer 在下面的屏幕截图中提供的功能:

就像一个 USB 闪存驱动器

我可以知道是否有任何 Windows API 可以用来实现这一目标吗?

标签: c++windowsdvd-burningimapi

解决方案


“Like a USB flash drive”文件系统也称为Live File System

Live File System 是 Microsoft 用来描述在 Windows Vista 及更高版本中创建光盘的数据包写入方法的术语,它允许将文件以增量方式添加到媒体中。这些光盘使用 UDF 文件系统。

较旧的 Windows 版本不支持读取最新的 UDF 版本。如果用户在 Windows Vista 中使用 UDF 2.50 创建 DVD/CD,除非安装了第三方 UDF 读取器驱动程序,否则这些 DVD/CD 可能无法在其他系统上读取,包括 Windows XP 和更早的(Mac OS 10.5 之前的)Apple 系统。为确保在 Windows Vista 上创建的磁盘的兼容性,应选择 UDF 2.01 或更低版本。

Live 文件系统基于Nero AG 为 Microsoft Windows 开发的InCD技术。

InCD 是 Nero AG 为 Microsoft Windows 开发的数据包写入软件。

InCD 允许以与软盘类似的方式使用光盘。用户可以使用 Windows 资源管理器将文件拖放到磁盘或从磁盘拖放文件,或直接从应用程序打开和保存磁盘上的文件。 [2]

InCD 格式化媒体,并写入通用磁盘格式。不支持 UDF 的系统(如 Windows 98)只会显示一个 HTML 页面(存储在磁盘上,在 UDF 部分之外),解释问题并链接到免费的 UDF 阅读器软件。

如上所述,Live 文件系统在FsiFileSystemUDF内部使用。

以下是IMAPI 支持的文件系统:

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.

实时文件系统以下列方式工作:

但是,如果您使用的是不可重写光盘,您仍然只能对光盘的每个区域写入一次。例如,如果您将 50 MB 的文件刻录到光盘上,然后将其删除,然后再将 50 MB 的文件刻录到光盘上,则光盘上使用的总空间仍然是 100 MB。您刻录到光盘上的原始 50 MB 仍然存在,尽管它已被标记为已删除,并且在您使用光盘时不会显示。

如果您在 Live File System 中使用可擦写光盘,则已删除文件使用的空间将被立即擦除并回收。这对于可擦写光盘来说是一个很大的优势——您可以像写入 USB 闪存驱动器一样写入和删除文件,而无需在每次要擦除某些文件时执行笨重的全盘擦除操作。

FsiFileSystemUDFIMAPI 支持的情况也是如此。FsiFileSystemUDF是最先进的,大多数设备都支持。所以,你可以考虑使用FsiFileSystemUDF文件系统。

USB Like 行为是通过允许多次写入同一个磁盘来实现的。这可以通过不关闭/完成磁盘来实现。这样,当您每次尝试将新(或旧)数据重新写入磁盘时,old data is erased- space is lost on non-rewritable disk- data is written freshly您可以在此处阅读有关完成磁盘的更多信息。

请注意,我并不是说它FsiFileSystemUDF与Live File System完全相同。如上所述,Live 文件系统不是微软开发的,IMAPI 也不支持。


推荐阅读