1

C#.NET Windows アプリケーションで IMAPI を使用して CD/DVD を書き込んでいます。私が CD に書き込むデータには、C#.NET で開発され、Turbo Virtualization Studioを使用して仮想化 (sandobx)された 1 つの実行可能ファイル (test.exe) が含まれています。CD に書き込むすべてのデータは、C ドライブの 1 つのフォルダー (ソース パス) に配置されます。

以下は小さなコード スニペットです: -

IStream stream = null;
try
{
    System.Diagnostics.Debug.Print("Adding - " + thisFileItem.SourcePath);
    if (thisFileItem.SourcePath != null)
    Win32.SHCreateStreamOnFile(thisFileItem.SourcePath, Win32.STGM_READ | Win32.STGM_SHARE_DENY_WRITE, ref stream);
    if (stream != null)
    {
        fileSystemImage.Root.AddFile(thisFileItem.DestPath + thisFileItem.DisplayName, stream);
    }
}
finally
{
    if (stream != null)
    {
        Marshal.FinalReleaseComObject(stream);
    }
}

test.exe の追加中に "fileSystemImage.Root.AddFile" メソッドを呼び出すと、COMException -1062555360 "内部ファイル システム エラーが発生しました" がスローされます。他のすべてのファイルは正しく追加および書き込みされます。

例外の詳細: -

COMException -1062555360
Internal file system error occurred.
   at ImapiInterop.IFsiDirectoryItem.AddFile(String path, IStream fileData)
   at ImapiImplementation.CDWriter.objBackgroundWorker_DoWork(Object sender, DoWorkEventArgs e) in C:\.........\CDWriter.cs:line 405

ソース フォルダーを別の場所 (デスクトップまたは D ドライブ) に置くと、すべての書き込みプロセス (test.exe を含む) がエラーなしで正常に実行されます。

この問題は仮想化が原因であると思われますが、よくわかりません。助けてください。

4

1 に答える 1