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

Posted

技术标签:

【中文标题】在磁盘中创建一个文件夹并使用 IMAPI 2 刻录到它【英文标题】:Create a folder in disk and Burn Into it using IMAPI 2 【发布时间】:2013-09-09 05:00:11 【问题描述】:

我在 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

【问题讨论】:

【参考方案1】:

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

例如:代替

rootItem.AddTree(sourceDirectory,includeBaseDirectory);

替换为:

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

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

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

【讨论】:

我不久前也实现了同样的功能。 .只是忘了发布我的答案。 .但是,无论如何,谢谢:) '.get_Item() 导致错误“无法显式调用运算符或访问器”。

以上是关于在磁盘中创建一个文件夹并使用 IMAPI 2 刻录到它的主要内容,如果未能解决你的问题,请参考以下文章

IMAPI界面可以选择刻录模式吗?

IMAPI2 如何刻录已经创建的iso

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

空白 DVD/蓝光光盘 (IMAPI) 上的可用空间

如何使用 IMAPI 异步写入 CD/DVD?

使用 ICDBurn 刻录 CD