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


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

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

Синтаксис

DWORD VerFindFileW(
  [in]           DWORD   uFlags,
  [in]           LPCWSTR szFileName,
  [in, optional] LPCWSTR szWinDir,
  [in]           LPCWSTR szAppDir,
  [out]          LPWSTR  szCurDir,
  [in, out]      PUINT   puCurDirLen,
  [out]          LPWSTR  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

Указатель на переменную, указывающую длину буфера szDestDir . Этот указатель не должен иметь значение 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 или Юникод этой функции на основе определения константы препроцессора UNICODE. Сочетание использования псевдонима, не зависящий от кодировки, с кодом, не зависящим от кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header winver.h (включая Windows.h)
Библиотека Version.lib
DLL Api-ms-win-core-version-l1-1-0.dll

См. также раздел

Основные понятия

GetWindowsDirectory

OpenFile

Другие ресурсы

Справочные материалы

VerInstallFile

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