Поделиться через


Функция VerFindFileA (winver.h)

Определяет, где установить файл на основе того, найдите ли он другую версию файла в системе. Значения VerFindFile возвращаются в указанных буферах при последующем вызове функции VerInstallFile.

Синтаксис

DWORD VerFindFileA(
  [in]           DWORD  uFlags,
  [in]           LPCSTR szFileName,
  [in, optional] LPCSTR szWinDir,
  [in]           LPCSTR szAppDir,
  [out]          LPSTR  szCurDir,
  [in, out]      PUINT  puCurDirLen,
  [out]          LPSTR  szDestDir,
  [in, out]      PUINT  puDestDirLen
);

Параметры

[in] uFlags

Тип: DWORD

Этот параметр может быть следующим значением. Все остальные биты зарезервированы.

Ценность Значение
VFFF_ISSHAREDFILE
0x0001
Исходный файл можно совместно использовать несколькими приложениями. Приложение может использовать эти сведения для определения места копирования файла.

[in] szFileName

Тип: LPCTSTR

Имя установленного файла. Включите только имя файла и расширение, а не путь.

[in, optional] szWinDir

Тип: LPCTSTR

Каталог, в котором работает Windows или будет выполняться. Эта строка возвращается функцией GetWindowsDirectory.

[in] szAppDir

Тип: LPCTSTR

Каталог, в котором программа установки устанавливает набор связанных файлов. Если программа установки устанавливает приложение, это каталог, в котором будет находиться приложение. Этот параметр также указывает на текущий каталог приложения, если иное не указано.

[out] szCurDir

Тип: LPWSTR

Буфер, получающий путь к текущей версии установленного файла. Путь — это строка, завершающаяся с нуля. Если текущая версия не установлена, буфер будет содержать строку нулевой длины. Буфер должен быть по крайней мере _MAX_PATH символов длиной, хотя это не обязательно.

[in, out] puCurDirLen

Тип: PUINT

Длина буфера szCurDir. Этот указатель не должен быть null.

Когда функция возвращается, lpuCurDirLen содержит размер в символах данных, возвращаемых в szCurDir, включая конечный символ NULL. Если буфер слишком мал, чтобы содержать все данные, lpuCurDirLen будет размером буфера, необходимого для хранения пути.

[out] szDestDir

Тип: LPTSTR

Буфер, получающий путь к расположению установки, рекомендуемый VerFindFile. Путь — это строка, завершающаяся с нуля. Буфер должен быть по крайней мере _MAX_PATH символов длиной, хотя это не обязательно.

[in, out] puDestDirLen

Тип: PUINT

Указатель на переменную, указывающую длину буфера szDest Dir. Этот указатель не должен быть null.

Когда функция возвращается, lpuDestDirLen содержит размер в символах данных, возвращаемых в szDestDir, включая завершающий символ NULL. Если буфер слишком мал, чтобы содержать все данные, lpuDestDirLen будет размером буфера, необходимого для хранения пути.

Возвращаемое значение

Тип: DWORD

Возвращаемое значение представляет собой битовую маску, указывающую состояние файла. Это может быть одно или несколько следующих значений. Все остальные значения зарезервированы.

Возврат кода или значения Описание
VFF_CURNEDEST
0x0001
Текущая установленная версия файла не находится в рекомендуемом месте назначения.
VFF_FILEINUSE
0x0002
Система использует текущую установленную версию файла; поэтому файл нельзя перезаписать или удалить.
VFF_BUFFTOOSMALL
0x0004
По крайней мере один из буферов слишком мал, чтобы содержать соответствующую строку. Приложение должно проверить выходные буферы, чтобы определить, какой буфер слишком мал.

Замечания

Эта функция работает на 16-, 32-разрядных и 64-разрядных образах файлов.

VerFindFile выполняет поиск копии указанного файла с помощью функции OpenFile. Однако он определяет системный каталог из указанного каталога Windows или выполняет поиск по пути.

Если параметр dwFlags указывает, что файл является частным для этого приложения (а не VFFF_ISSHAREDFILE), VerFindFile рекомендует установить файл в каталоге приложения. В противном случае, если система выполняет общую копию системы, функция рекомендует установить файл в каталоге Windows. Если система выполняет частную копию системы, функция рекомендует установить файл в системном каталоге.

Заметка

Заголовок winver.h определяет VerFindFile как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 2000 Профессиональный [только классические приложения]
минимальный поддерживаемый сервер Windows 2000 Server [только классические приложения]
целевая платформа Виндоус
заголовка winver.h (включая Windows.h)
библиотеки Version.lib
DLL Api-ms-win-core-version-l1-1-0.dll

См. также

концептуальные

GetWindowsDirectory

OpenFile

другие ресурсы

Справочник

VerInstallFile

сведения о версиях