, eg ? With other parameters - does not work either. Successfully works only with CLSID_CFormat7z.
I want to learn how to use 7z. dll files to other formats.
Thank you.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Вроде бы как разобрался. Извините, что пишу по-русски - на этом языке я более дельно изъясняю свои мысли :)
Ответ крылся в файлике ArchiveExports.cpp из проекта Format7zF. В описании функции CreateArchiver, которая вызывается из функции CreateObject, есть такое место (добавил свои комментарии):
STDAPI CreateArchiver(const GUID *clsid, const GUID *iid, void **outObject)
{
COM_TRY_BEGIN
{
int needIn = (*iid == IID_IInArchive);
int needOut = (*iid == IID_IOutArchive);
if (!needIn && !needOut)
return E_NOINTERFACE;
// Производится поиск по пятому байту структуры типа архива
int formatIndex = FindFormatCalssId(clsid);
if (formatIndex < 0)
return CLASS_E_CLASSNOTAVAILABLE;
// создается элемент структуры CArcInfo для типа требуемого архива
const CArcInfo &arc = *g_Arcs[formatIndex];
if (needIn)
{
*outObject = arc.CreateInArchive();
((IInArchive *)*outObject)->AddRef();
}
else
{
if (![b]arc.CreateOutArchive[/b])
// Вот здесь мне возвращалась ошибка - так как для некоторых форматов нет поддержки упаковки в архив
return CLASS_E_CLASSNOTAVAILABLE;
*outObject = arc.CreateOutArchive();
((IOutArchive *)*outObject)->AddRef();
}
}
COM_TRY_END
return S_OK;
}
Последний комментарий сделал на основании следующего:
например, в файле 7zRegister.cpp видим:
Печально. Получается, что 7z.dll поддерживает архивацию не во все форматы. А в какой тогда формат упаковывает консольная программа 7z.exe, если указать формат *.rar?
В любом случае спасибо за прекрасную работу - работать с исходниками доставляет удовольствие!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello!
I can not understand: Why is the "CreateObject" (7z.dll) does not return "S_OK" when I call it a
, eg ? With other parameters - does not work either. Successfully works only with CLSID_CFormat7z.
I want to learn how to use 7z. dll files to other formats.
Thank you.
Вроде бы как разобрался. Извините, что пишу по-русски - на этом языке я более дельно изъясняю свои мысли :)
Ответ крылся в файлике ArchiveExports.cpp из проекта Format7zF. В описании функции CreateArchiver, которая вызывается из функции CreateObject, есть такое место (добавил свои комментарии):
Последний комментарий сделал на основании следующего:
например, в файле 7zRegister.cpp видим:
Аналогично и, например, для Zip (ZipRegister.cpp)
А для Rar (RarRegister.cpp)
Печально. Получается, что 7z.dll поддерживает архивацию не во все форматы. А в какой тогда формат упаковывает консольная программа 7z.exe, если указать формат *.rar?
В любом случае спасибо за прекрасную работу - работать с исходниками доставляет удовольствие!