Я использую этот простой метод
bool bk = cabber.OpenExtractCAB( "C:\\xx\\xx\\INSTALL.CAB", "C:\\xx\xx\\");
Что реализовано таким образом
BOOL OpenExtractCAB( char * cCABFullPath, char * cDestinationFolder )
{
FDICABINETINFO fdici;
int hf;
char *p;
// Set up some important globals
g_hfdi = NULL;
g_pFDIProgress = NULL;
g_hfdi = FDICreate(
fdi_mem_alloc,
fdi_mem_free,
fdi_file_open,
fdi_file_read,
fdi_file_write,
fdi_file_close,
fdi_file_seek,
cpu80386,
&g_fdi_erf
);
if (g_hfdi == NULL)
{
return FALSE;
}
/*
* Is this file really a cabinet?
*/
hf = fdi_file_open(
cCABFullPath,
_O_BINARY | _O_RDONLY | _O_SEQUENTIAL,
0
);
if (hf == -1)
{
return FALSE;
}
if (FALSE == FDIIsCabinet(
g_hfdi,
hf,
&fdici))
{
/*
* No, it's not a cabinet!
*/
_close(hf);
return FALSE;
}
Я не публикую остальную часть функции, но на этом она останавливается, и я не понимаю, почему функция FDI, которая проверяет, является ли мой файл CAB или нет, продолжает возвращать false .. когда мой файл явно CAB-файл.
Отладка это hf = 0, но я не знаю, как отладить остальные и посмотреть, что на самом деле идет не так