Функция MsiGetSourcePathA (msiquery.h)

Функция MsiGetSourcePath возвращает полный исходный путь к папке в таблице Directory.

Синтаксис

UINT MsiGetSourcePathA(
  [in]      MSIHANDLE hInstall,
  [in]      LPCSTR    szFolder,
  [out]     LPSTR     szPathBuf,
  [in, out] LPDWORD   pcchPathBuf
);

Параметры

[in] hInstall

Дескриптор установки, предоставленной пользовательскому действию DLL или полученной через MsiOpenPackage, MsiOpenPackageEx или MsiOpenProduct.

[in] szFolder

Строка, завершающаяся нулевым значением, указывающая запись таблицы Directory. Если каталог является корневым каталогом, это может быть значение из столбца DefaultDir. В противном случае это должно быть значение из столбца Каталог.

[out] szPathBuf

Указатель на буфер, который получает полный исходный путь, завершающийся null. Не пытайтесь определить размер буфера, передав значение NULL (value=0) для szPathBuf. Размер буфера можно получить, передав пустую строку (например, ""). Затем функция возвращает ERROR_MORE_DATA и pcchPathBuf содержит требуемый размер буфера в TCHAR, не включая завершающий символ NULL. При возвращении ERROR_SUCCESS pcchPathBuf содержит количество TCHAR, записанных в буфер, не включая завершающий символ NULL.

[in, out] pcchPathBuf

Указатель на переменную, указывающую размер (в TCHAR) буфера, на который указывает переменная szPathBuf. Когда функция возвращает ERROR_SUCCESS, эта переменная содержит размер данных, скопированных в szPathBuf, не включая завершающий символ NULL. Если szPathBuf недостаточно большой, функция возвращает ERROR_MORE_DATA и сохраняет требуемый размер, не включая завершающий символ NULL, в переменной, на которую указывает pcchPathBuf.

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

Функция MsiGetSourcePath возвращает следующие значения:

Комментарии

Перед вызовом этой функции установщик должен сначала запустить действия CostInitialize, FileCost и CostFinalize. Дополнительные сведения см. в разделе Вызов функций базы данных из программ.

Если возвращается ERROR_MORE_DATA, параметр, являющийся указателем, задает размер буфера, необходимый для хранения строки. Если возвращается ERROR_SUCCESS, возвращается количество символов, записанных в буфер строки. Таким образом, можно получить размер буфера, передав пустую строку (например, "") для параметра, указывающего буфер. Не пытайтесь определить размер буфера, передав значение Null (value=0).

В случае сбоя функции можно получить расширенные сведения об ошибке с помощью MsiGetLastErrorRecord.

Примечание

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

Требования

Требование Значение
Минимальная версия клиента Установщик Windows 5.0 в Windows Server 2012, Windows 8, Windows Server 2008 R2 или Windows 7. Установщик Windows 4.0 или установщик Windows 4.5 в Windows Server 2008 или Windows Vista. Установщик Windows в Windows Server 2003 или Windows XP
Целевая платформа Windows
Header msiquery.h
Библиотека Msi.lib
DLL Msi.dll

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

Функции расположения установщика

Передача null в качестве аргумента функций установщика Windows