Функция 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

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

[in] dwIndex

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

[in] iState

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

[out] szDriveBuf

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

[in, out] pcchDriveBuf

Указатель на переменную, указывающую размер (в TCHAR) буфера, на который указывает параметр lpDriveBuf . Этот размер должен включать завершающий символ NULL. Если предоставленный буфер слишком мал, переменная, на которую указывает 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
Целевая платформа Windows
Header msiquery.h
Библиотека Msi.lib
DLL Msi.dll