2016-04-27 2 views
1

Я пишу CD/DVD, используя IMAPI с приложением Windows C# .NET. Данные, которые я пишу на CD, содержат один исполняемый файл (test.exe), который также разработан с использованием C# .NET и виртуализированных (sandobx) с использованием Turbo Virtualization Studio. Все данные, которые должны быть записаны на компакт-диске, помещаются в одну папку (путь источника) на диске C.IMAPI: COMException Ошибка внутренней файловой системы [-1062555360]

После небольшой фрагмент кода: -

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); 
    } 
} 

вызова метода "fileSystemImage.Root.AddFile" при добавлении test.exe бросает 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 

Если я кладу исходную папку на каком-то другом месте (Desktop или D диск), все написание процесса (в том числе TEST.EXE) происходит нормально без ошибок.

Я подозреваю, что проблема связана с вирусализацией, но не уверен. Пожалуйста, помогите.

+1

-1062555360 == 0xC0AAB120 == IMAPI_E_IMAGE_SIZE_LIMIT == «Добавление имени файла» приведет к тому, что результат будет иметь размер, превышающий текущий установленный лимит ». IMAPI, конечно, ничего не знает о том, откуда появился файл. –

ответ

2

Сообщение об ошибке, возвращаемое IMAPI, неверно, и поэтому вся путаница. См. Следующую ссылку.

social.msdn.microsoft.com

Ниже приводится текст, скопированный из ответа (от Дмитрия) на указанном выше сайте: -

IMAPI поддерживает интерфейс ISupportErrorInfo, и мы отдаем себе отчет вопрос о несовпадающих сообщения об ошибках ваш сценарий.

Внутренний IMAPI создает объекты отката для отмены добавления/удаления файла действий. У нас была проблема, когда действие отката было создано преждевременно, поэтому после того, как уже был установлен код возврата для IFsiDirectoryItem :: AddFile , действие отката должно было удалить файл из изображения . Так как файл не был добавлен, было выбрано исключение IMAPI_E_FSI_INTERNAL_ERROR , которое изменило сообщение IErrorInfo на тот, который вы видите .

Мы знаем об этой проблеме, и она будет исправлена ​​в следующем выпуске IMAPI. К сожалению, для исправления это не достаточно серьезно.

Смежные вопросы