我使用 Windows IMAPI 用 C++ 开发了一个 CD 刻录应用程序。
但是,现在我希望我的光盘能够像 Live File System(像 USB)一样运行。
基本上,我想拥有 Windows Explorer 在下面的屏幕截图中提供的功能:
我可以知道是否有任何 Windows API 可以用来实现这一目标吗?
我使用 Windows IMAPI 用 C++ 开发了一个 CD 刻录应用程序。
但是,现在我希望我的光盘能够像 Live File System(像 USB)一样运行。
基本上,我想拥有 Windows Explorer 在下面的屏幕截图中提供的功能:
我可以知道是否有任何 Windows API 可以用来实现这一目标吗?
“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 闪存驱动器一样写入和删除文件,而无需在每次要擦除某些文件时执行笨重的全盘擦除操作。
FsiFileSystemUDF
IMAPI 支持的情况也是如此。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 也不支持。