2013-09-05 59 views
0

我在C#中使用IMAPI2將文件列表刻錄到多區段磁盤。但我希望能夠將這些文件刻錄到磁盤中的目錄中。 現在這是我在磁盤中創建一個文件夾,並使用IMAPI將其刻錄到它2

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)嘗試獲取目錄時返回的錯誤來做到這一點...

+0

我已經實現了相同的一段時間。 。只是忘了發佈我的答案。 。但無論如何謝謝:) –

相關問題