我在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
答案 0 :(得分:1)
您可以使用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)来做到这一点......