在磁盘中创建一个文件夹,然后使用 IMAPI 2 刻录到其中

本文关键字:IMAPI 然后 文件夹 创建 磁盘 一个 | 更新日期: 2023-09-27 18:30:26

我在C#中使用IMAPI2将文件列表刻录到多会话磁盘。但我希望能够将这些文件刻录到磁盘中的目录中。现在这就是我所拥有的

fileSystemImage = new MsftFileSystemImage();
            fileSystemImage.ChooseImageDefaults(discRecorder);
            fileSystemImage.FileSystemsToCreate =
            FsiFileSystems.FsiFileSystemJoliet | FsiFileSystems.FsiFileSystemISO9660;
if (multisessionInterfaces != null)
            {
                fileSystemImage.MultisessionInterfaces = multisessionInterfaces;
                fileSystemImage.ImportFileSystem();
            }
IFsiDirectoryItem rootItem = fileSystemImage.Root;
rootItem.AddTree(sourceDirectory,includeBaseDirectory)

这是一个圆形方法,因为我必须在驱动器中创建一个临时文件夹,并将要刻录的所有文件复制到该文件夹中,并将该文件夹添加为刻录项目。

我正在使用此 C# IMAPI2 包装器的略微修改版本来实现此 http://www.codeproject.com/Articles/24544/Burning-and-Erasing-CD-DVD-Blu-ray-Media-with-C-an

在磁盘中创建一个文件夹,然后使用 IMAPI 2 刻录到其中

您可以使用

IFsiDirectoryItem 接口的 IFsiDirectoryItem::AddDirectory 方法将目录添加到光学介质上的文件系统映像中;然后,使用 IFsiDirectoryItem::get_Item 方法检索它。

例如:而不是

rootItem.AddTree(sourceDirectory,includeBaseDirectory);

替换为以下内容:

rootItem.AddDirectory(directoryName);
rootItem.get_Item(directoryName, newDirItem);   

您可以创建多个目录级别(只需在相应的目录项而不是 rootItem 上调用 AddDirectory)。

此外,如果光盘介质上的现有目录已存在,则可能需要重用这些目录。您可以通过考虑尝试获取目录时返回的错误IMAPI_E_DUP_NAME((HRESULT)0xC0AAB112L)来做到这一点...