Compartilhar via


Função MsiEnumComponentCostsA (msiquery.h)

A função MsiEnumComponentCosts enumera o espaço em disco por unidade necessário para instalar um componente. Essas informações são necessárias para exibir o custo de espaço em disco necessário para todas as unidades na interface do usuário. Os custos de espaço em disco retornados são expressos em múltiplos de 512 bytes.

msiEnumComponentCosts só deve ser executado depois que o instalador tiver concluído o custo do arquivo e depois que a ação CostFinalize . Para obter mais informações, consulte de custo de arquivo.

Sintaxe

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
);

Parâmetros

[in] hInstall

Manipule a instalação fornecida para uma ação personalizada de DLL ou obtida por meio MsiOpenPackage, MsiOpenPackageExou MsiOpenProduct.

[in] szComponent

Uma cadeia de caracteres terminada em nulo especificando o nome do componente como ele está listado na coluna Componente da tabela componente . Esse parâmetro pode ser nulo. Se szComponent for nulo ou uma cadeia de caracteres vazia, MsiEnumComponentCosts enumera o espaço em disco total por unidade usado durante a instalação. Nesse caso, iState é ignorado. Os custos do instalador incluem esses custos para armazenar o banco de dados em cache na pasta segura, bem como o custo para criar o script de instalação. Observe que o espaço em disco total usado durante a instalação pode ser maior do que o espaço usado após a instalação do componente.

[in] dwIndex

Índice baseado em 0 para unidades. Esse parâmetro deve ser zero para a primeira chamada para a função MsiEnumComponentCosts e incrementada para chamadas subsequentes.

[in] iState

Estado do componente solicitado a ser enumerado. Se szComponent for passado como Null ou uma cadeia de caracteres vazia, o instalador ignorará o parâmetro iState.

[out] szDriveBuf

Buffer que contém o nome da unidade, incluindo o terminador nulo. Essa é uma cadeia de caracteres vazia em caso de erro.

[in, out] pcchDriveBuf

Ponteiro para uma variável que especifica o tamanho, em TCHARs, do buffer apontado pelo parâmetro lpDriveBuf. Esse tamanho deve incluir o caractere nulo de encerramento. Se o buffer fornecido for muito pequeno, a variável apontada por pcchDriveBuf conterá a contagem de caracteres que não incluem o terminador nulo.

[out] piCost

Custo do componente por unidade expresso em múltiplos de 512 bytes. Esse valor será 0 se ocorrer um erro. O valor retornado em piCost é o espaço em disco final usado pelo componente após a instalação. Se szComponent for passado como Nulo ou uma cadeia de caracteres vazia, o instalador definirá o valor em piCost como 0.

[out] piTempCost

O custo do componente por unidade durante a instalação ou 0 se ocorreu um erro. O valor em *piTempCost representa os requisitos de espaço temporário durante a instalação. Esse requisito de espaço temporário é necessário apenas para a duração da instalação. Isso não afeta o requisito final de espaço em disco.

Valor de retorno

Valor retornado Significado
ERROR_INVALID_HANDLE_STATE
Os dados de configuração estão corrompidos.
ERROR_INVALID_PARAMETER
Um parâmetro inválido foi passado para a função.
ERROR_NO_MORE_ITEMS
Não há mais unidades a serem retornadas.
ERROR_SUCCESS
Um valor foi enumerado.
ERROR_UNKNOWN_COMPONENT
O componente está ausente.
ERROR_FUNCTION_NOT_CALLED
O custo não está concluído.
ERROR_MORE_DATA
Buffer não grande o suficiente para o nome da unidade.
ERROR_INVALID_HANDLE
O identificador fornecido é inválido ou inativo.
 
 

Observações

O método recomendado para enumerar os custos de espaço em disco por unidade é o seguinte. Comece com o dwIndex definido como 0 e incremente-o por um após cada chamada. Continue a enumeração desde que MsiEnumComponentCosts retorne ERROR_SUCCESS.

msiEnumComponentCosts podem ser chamados de ações personalizadas.

O custo total do disco final para a instalação é a soma dos custos de todos os componentes mais o custo do Windows Installer (szComponent = nulo).

Nota

O cabeçalho msiquery.h define MsiEnumComponentCosts como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows Installer 5.0 no Windows Server 2012, Windows 8, Windows Server 2008 R2 ou Windows 7. Windows Installer 4.0 ou Windows Installer 4.5 no Windows Server 2008 ou Windows Vista. Windows Installer no Windows Server 2003 ou Windows XP
da Plataforma de Destino Windows
cabeçalho msiquery.h
biblioteca Msi.lib
de DLL Msi.dll