0

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-を

4

1 に答える 1

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) を考慮することで、これを行うことができます...

于 2013-11-13T11:53:31.700 に答える