Функция SetupGetFileCompressionInfoA (setupapi.h)
[Эта функция доступна для использования в операционных системах, указанных в разделе "Требования". Он может быть изменен или недоступен в последующих версиях. SetupAPI больше не следует использовать для установки приложений. Вместо этого используйте установщик Windows для разработки установщиков приложений. SetupAPI по-прежнему используется для установки драйверов устройств.]
Функция setupGetFileCompression Info
Обратите внимание, что эта функция устарела и заменена SetupGetFileCompressionInfoEx. Не используйте SetupGetFileCompressionInfo, вместо этого всегда используйте SetupGetFileCompressionInfoEx.
Синтаксис
WINSETUPAPI DWORD SetupGetFileCompressionInfoA(
[in] PCSTR SourceFileName,
[in, out] PSTR *ActualSourceFileName,
[in, out] PDWORD SourceFileSize,
[in, out] PDWORD TargetFileSize,
[in, out] PUINT CompressionType
);
Параметры
[in] SourceFileName
Имя файла, о котором требуется информация. Если файл не найден на исходном носителе точно так же, как по имени, файл выполняется поиск с двумя альтернативными именами "сжатых форм". Например, если файл F:\x86\cmd.exe и он не найден, выполняется поиск F:\mpis\cmd.ex_ и, если он не найден, поиск выполняется для F:\x86\cmd.ex$. Следует использовать строку, завершаемую значением NULL.
[in, out] ActualSourceFileName
Указатель на переменную, получающую полный путь к файлу, который он смог найти. Вызывающий объект может освободить указатель с вызовом LocalFree. Путь действителен, только если функция возвращает NO_ERROR. Обратите внимание, что если версия SetupAPI.dll меньше 5.0.2195, вызывающий объект должен использовать экспортированную функцию MyFree из SetupAPI, чтобы освободить память, выделенную этой функцией, а затем использовать LocalFree. См. раздел "Примечания".
[in, out] SourceFileSize
Указатель на переменную, в которой эта функция возвращает размер файла в текущей форме, который является текущим размером файла с именем ActualSourceFileName. Размер определяется путем изучения исходного файла; Он не извлекается из INF-файла. Размер исходного файла действителен, только если функция возвращает NO_ERROR.
[in, out] TargetFileSize
Указатель на переменную, в которой эта функция возвращает размер файла, который будет заниматься при распаковке или копировании. Если файл не сжимается, это значение будет совпадать с SourceFileSize. Размер определяется путем изучения файла; Он не извлекается из INF-файла. Размер целевого файла действителен, только если функция возвращает NO_ERROR.
[in, out] CompressionType
Указатель на переменную, в которой эта функция возвращает значение, указывающее тип сжатия, используемого для ActualSourceFileName. Тип сжатия действителен, только если функция возвращает NO_ERROR. Значение может быть одним из следующих флагов.
FILE_COMPRESSION_NONE
Исходный файл не сжимается с распознаваемым алгоритмом сжатия.
FILE_COMPRESSION_WINLZA
Исходный файл сжимается с сжатием LZ.
FILE_COMPRESSION_MSZIP
Исходный файл сжимается с сжатием MSZIP.
Возвращаемое значение
Функция возвращает системный код ошибки, указывающий результат поиска файла. Код ошибки может быть одним из следующих значений.
Чтобы получить расширенные сведения об ошибке, вызовите GetLastError.
Замечания
Не используйте SetupGetFileCompressionInfo, вместо этого всегда используйте SetupGetFileCompressionInfoEx.
Так как SetupGetFileCompressionInfo определяет сжатие путем ссылки на физический файл, приложение установки должно убедиться, что файл присутствует перед вызовом SetupGetFileCompressionInfo.
Обратите внимание, что если версия SetupAPI.dll меньше 5.0.2195, вызывающий объект должен использовать экспортированную функцию MyFree из SetupAPI, чтобы освободить память, выделенную этой функцией, а затем использовать LocalFree. Если вызов LocalFree вызывает нарушение доступа, необходимо решить проблему с помощью MyFree.
Ниже приведен пример получения функции MyFree из SetupAPI.dll:
typedef VOID (WINAPI* MYFREEFUNC)(LPVOID lpBuff);
MYFREEFUNC MyFree;
HMODULE hDll=NULL;
hDll = GetModuleHandle("SETUPAPI.DLL");
MyFree = (MYFREEFUNC)GetProcAddress(hDll, "MyFree");
...
other code here to prepare file queue
...
PTSTR lpActualSourceFileName;
SetupGetFileCompressionInfo(...,&lpActualSourceFileName,...,...,...);
...
MyFree(lpActualSourceFileName);
Заметка
Заголовок setupapi.h определяет SetupGetFileCompressionInfo как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows XP [только классические приложения] |
минимальный поддерживаемый сервер | Windows Server 2003 [только классические приложения] |
целевая платформа | Виндоус |
заголовка | setupapi.h |
библиотеки |
Setupapi.lib |
DLL | Setupapi.dll |
См. также
Обзор