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


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

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

MsiEnumComponentCosts следует запускать только после завершения затрат на файл установщика и после действия CostFinalize. Дополнительные сведения см. в стоимости файлов.

Синтаксис

UINT MsiEnumComponentCostsA(
  [in]      MSIHANDLE    hInstall,
  [in]      LPCSTR       szComponent,
  [in]      DWORD        dwIndex,
  [in]      INSTALLSTATE iState,
  [out]     LPSTR        szDriveBuf,
  [in, out] LPDWORD      pcchDriveBuf,
  [out]     LPINT        piCost,
  [out]     LPINT        piTempCost
);

Параметры

[in] hInstall

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

[in] szComponent

Строка, завершающая значение NULL, указывающая имя компонента, как указано в столбце компонента таблицы компонентов . Этот параметр может иметь значение NULL. Если szComponent имеет значение NULL или пустая строка, MsiEnumComponentCosts перечисляет общее дисковое пространство на диск, используемое во время установки. В этом случае iState игнорируется. Затраты установщика включают эти затраты на кэширование базы данных в безопасной папке, а также затраты на создание скрипта установки. Обратите внимание, что общее дисковое пространство, используемое во время установки, может быть больше места, используемого после установки компонента.

[in] dwIndex

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

[in] iState

Запрошенное состояние компонента для перечисления. Если szComponent передается как null или пустая строка, установщик игнорирует параметр iState.

[out] szDriveBuf

Буфер, содержащий имя диска, включая конечный элемент NULL. Это пустая строка в случае ошибки.

[in, out] pcchDriveBuf

Указатель на переменную, указывающую размер буфера, на который указывает параметр lpDriveBuf. Этот размер должен содержать завершающийся пустой символ. Если предоставленный буфер слишком мал, переменная, на которую указывает pcchDriveBuf содержит количество символов, не включая терминатор NULL.

[out] piCost

Стоимость компонента на диск, выраженная в нескольких 512 байтах. Это значение равно 0, если произошла ошибка. Значение, возвращаемое в piCost, является окончательным дисковым пространством, используемым компонентом после установки. Если szComponent передается как null или пустая строка, установщик задает значение по piCost 0.

[out] piTempCost

Стоимость компонента на диск в течение длительности установки или 0, если произошла ошибка. Значение в *piTempCost представляет временные требования к пространству для длительности установки. Это временное требование к пространству требуется только для длительности установки. Это не влияет на окончательное требование места на диске.

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

Возвращаемое значение Значение
ERROR_INVALID_HANDLE_STATE
Данные конфигурации повреждены.
ERROR_INVALID_PARAMETER
Недопустимый параметр был передан функции.
ERROR_NO_MORE_ITEMS
Нет больше дисков для возврата.
ERROR_SUCCESS
Было перечислено значение.
ERROR_UNKNOWN_COMPONENT
Компонент отсутствует.
ERROR_FUNCTION_NOT_CALLED
Затраты не завершены.
ERROR_MORE_DATA
Буфер недостаточно велик для имени диска.
ERROR_INVALID_HANDLE
Предоставленный дескриптор недопустим или неактивен.
 
 

Замечания

Рекомендуемый метод перечисления затрат на дисковое пространство на диск выглядит следующим образом. Начните с dwIndex с 0 и добавите его по одному после каждого вызова. Продолжайте перечисление, пока MsiEnumComponentCosts возвращает ERROR_SUCCESS.

msiEnumComponentCosts могут вызываться из пользовательских действий.

Общая итоговая стоимость диска для установки — это сумма затрат на все компоненты, а также стоимость установщика Windows (szComponent = null).

Заметка

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Установщик 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
целевая платформа Виндоус
заголовка msiquery.h
библиотеки Msi.lib
DLL Msi.dll