2017-01-06 6 views
2

Привет, записывайте программу записи компакт-дисков и сталкиваетесь с многосессионным прожигом. Проблема заключается в импортируемой файловой системе udf.IMAPI2 importfilesystem udf error importing windows 7

моя ОС: Windows 7 x64 мой компакт-диск: DVD + RW

мой код в программе

обновление я сделал код в соответствии с вашими рекомендациями

У меня была проблема importfilesystem метод возвращает ошибку

VARIANT_BOOL rt=VARIANT_FALSE; 
    HRESULT jj=discformatdata2->get_MediaHeuristicallyBlank(&rt); 
    if (SUCCEEDED(jj)) 
    { 
     if (rt==VARIANT_FALSE) //multi-session 
     { 
      FsiFileSystems fss; 
      res=image->ChooseImageDefaults(recorder2); 
      if (SUCCEEDED(res)) 
      { 
       fss=FsiFileSystems(FsiFileSystemUDF); 
       res=image->put_FileSystemsToCreate(fss); 
       if (SUCCEEDED(res)) 
       { 
        SAFEARRAY *val=NULL; 
        HRESULT ok=discformatdata2->get_MultisessionInterfaces(&val); 
        if (SUCCEEDED(ok)) 
        { 
         ok=image->put_MultisessionInterfaces(val); 
         if (SUCCEEDED(ok)) 
         { 
          printf("ok2\n"); 
          BSTR metka; 

          ok=image->ImportFileSystem(&fss); 
          if(SUCCEEDED(ok)) 
          { 
           printf("ok3\n"); 
          } 
          else 
          { 
           printf("oshibkaIMPORTFIELSYSTEM=0x%08x\n\n",ok); 
           exit(0); 
          } 
          HRESULT rx=image->get_ImportedVolumeName(&metka); 
          if (!SUCCEEDED(rx)) 
          { 
           printf("okkkk1\n"); 
          } 
          res=image->put_VolumeName(metka); 
          if (!SUCCEEDED(res)) 
          { 

           printf("okkkk2\n"); 
           ok=false; 
          } 

         } 
        } 
       } 
      }   
     } 
     if (rt==VARIANT_TRUE) //disc empty 
     { 
      if (fss==IMAPI_MEDIA_TYPE_DVDPLUSRW) 
      { 
       res=image->ChooseImageDefaults(recorder2); 
       if (SUCCEEDED(res)) 
       { 
        FsiFileSystems fs=FsiFileSystems(FsiFileSystemUDF); 
        res=image->put_FileSystemsToCreate(fs); 
        if (SUCCEEDED(res)) 
        { 
         printf("11111\n"); 
        } 
       } 
      } 
      BSTR mt=BSTR(L"333"); 
      res=image->put_VolumeName(mt); 
      if (SUCCEEDED(res)) 
      { 
       printf("metkaok\n"); 
      } 
     } 
    } 

oshibkaIMPORTFIELSYSTEM = 0xc0aab151 IMAPI_E_NO_SUPPORTED_FILE_SYSTEM

что может быть проблема?

ps Эта ошибка появляется только в том случае, если FsiFileSystems fs = FsiFileSystems (FsiFileSystemUDF);

+0

my os windows 7 x64 –

+0

Почему не импортированная файловая система udf? –

+0

У меня нет пакета функций Windows и моих окон Windows 7 x 64 –

ответ

0

Наши языки разработки разные; Я работаю над C#. Я все еще надеюсь, что это может вам помочь, потому что базовый интерфейс IMAPI такой же.

Вам необходимо назначить дисковый рекордер для вашей файловой системы. Кроме того, вам необходимо установить файловые системы по умолчанию. Так что это должно быть что-то, как показано ниже в C#:

fileSystemImage.ChooseImageDefaults(discRecorder); 
fileSystemImage.FileSystemsToCreate = FsiFileSystems.FsiFileSystemJoliet | FsiFileSystems.FsiFileSystemISO9660 | FsiFileSystems.FsiFileSystemUDF; 
if(!discFormatData.MediaHeuristicallyBlank) 
{ 
    fileSystemImage.MultisessionInterfaces = discFormatData.MultisessionInterfaces; 
    fileSystemImage.ImportFileSystem(); 
} 

После ПЛОХО ПЕРЕВОД на C++:

FsiFileSystems fs; 
fs = ChooseImageDefaults(discRecorder); 
fs.FileSystemsToCreate = FsiFileSystems.FsiFileSystemJoliet | FsiFileSystems.FsiFileSystemISO9660 | FsiFileSystems.FsiFileSystemUDF; 
ok=image->ImportFileSystem(&fs); 

IMAPI будет только пытаться импортировать файловые системы те, которые назначены по умолчанию для него.

Также убедитесь, что вы не закрыли предыдущую сессию. Свойство ForceMediaToBeClosed должно быть установлено на false при записи нового нового компакт-диска; то только это позволит записать его снова.

Edit 1:

См этот link. Попробуйте установить все соответствующие обновления Windows в вашу систему.

Я только что обнаружил, что код ошибки IMAPI_E_NO_SUPPORTED_FILE_SYSTEM возвращается только в системах с установленным пакетом Windows Feature Pack for Storage 1.0. В системах Windows XP с обновлением KB932716 все работает так, как ожидалось: я импортирую предыдущий сеанс UDF и без проблем записываю новый сеанс.

+0

у вас нет проблем с импортом udf с кодом, который вы мне написали? –

+0

Нет; этот код реализован и работает. Ты это пробовал? У тебя какие-то проблемы? Я говорю о коде C#. Я НЕ C++ парень, так что код предназначен только для демонстрации. Вам нужно перевести код C# на C++ самостоятельно. –

+0

Я реализовал, но есть небольшая проблема, они описаны в другом сообщении –