Share via


Funzione MsiEnumComponentCostsA (msiquery.h)

La funzione MsiEnumComponentCosts enumera lo spazio su disco per unità necessaria per installare un componente. Queste informazioni sono necessarie per visualizzare il costo dello spazio su disco necessario per tutte le unità nell'interfaccia utente. I costi di spazio su disco restituiti sono espressi in più di 512 byte.

MsiEnumComponentCosts deve essere eseguito solo dopo il completamento del programma di installazione e dopo l'azione CostFinalize. Per altre informazioni, vedere Costo file.

Sintassi

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

Parametri

[in] hInstall

Gestire l'installazione fornita a un'azione personalizzata DLL o ottenuta tramite MsiOpenPackage, MsiOpenPackageEx o MsiOpenProduct.

[in] szComponent

Stringa con terminazione null che specifica il nome del componente come elencato nella colonna Component della tabella Component. Questo parametro può essere null. Se szComponent è null o una stringa vuota, MsiEnumComponentCosts enumera il totale spazio su disco usato per unità durante l'installazione. In questo caso, iState viene ignorato. I costi del programma di installazione includono tali costi per la memorizzazione nella cache del database nella cartella sicura e il costo per creare lo script di installazione. Si noti che lo spazio totale usato durante l'installazione può essere maggiore dello spazio usato dopo l'installazione del componente.

[in] dwIndex

Indice basato su 0 per le unità. Questo parametro deve essere zero per la prima chiamata alla funzione MsiEnumComponentCosts e quindi incrementata per le chiamate successive.

[in] iState

Stato del componente richiesto da enumerare. Se szComponent viene passato come Null o una stringa vuota, il programma di installazione ignora il parametro iState .

[out] szDriveBuf

Buffer che contiene il nome dell'unità, incluso il terminatore Null. Si tratta di una stringa vuota in caso di errore.

[in, out] pcchDriveBuf

Puntatore a una variabile che specifica le dimensioni, in TCHARs, del buffer a cui punta il parametro lpDriveBuf . Questa dimensione deve includere il carattere Null terminante. Se il buffer specificato è troppo piccolo, la variabile puntata da pcchDriveBuf contiene il numero di caratteri non inclusi il terminatore Null.

[out] piCost

Costo del componente per unità espresso in più di 512 byte. Questo valore è 0 se si è verificato un errore. Il valore restituito in piCost è lo spazio su disco finale usato dal componente dopo l'installazione. Se szComponent viene passato come Null o una stringa vuota, il programma di installazione imposta il valore su piCost su 0.

[out] piTempCost

Costo del componente per unità per durata dell'installazione o 0 se si è verificato un errore. Il valore in *piTempCost rappresenta i requisiti di spazio temporaneo per la durata dell'installazione. Questo requisito di spazio temporaneo è necessario solo per la durata dell'installazione. Ciò non influisce sul requisito di spazio su disco finale.

Valore restituito

Valore restituito Significato
ERROR_INVALID_HANDLE_STATE
I dati di configurazione sono danneggiati.
ERROR_INVALID_PARAMETER
Un parametro non valido è stato passato alla funzione.
ERROR_NO_MORE_ITEMS
Non ci sono più unità da restituire.
ERROR_SUCCESS
È stato enumerato un valore.
ERROR_UNKNOWN_COMPONENT
Il componente non è presente.
ERROR_FUNCTION_NOT_CALLED
Il costo non è completo.
ERROR_MORE_DATA
Buffer non abbastanza grande per il nome dell'unità.
ERROR_INVALID_HANDLE
L'handle fornito non è valido o inattivo.
 
 

Commenti

Il metodo consigliato per enumerare i costi dello spazio su disco per unità è il seguente. Iniziare con dwIndex impostato su 0 e incrementarlo per una sola chiamata. Continuare l'enumerazione finché MsiEnumComponentCosts restituisce ERROR_SUCCESS.

MsiEnumComponentCosts può essere chiamato da azioni personalizzate.

Il costo totale del disco finale per l'installazione è la somma dei costi di tutti i componenti e il costo di Windows Installer (szComponent = null).

Nota

L'intestazione msiquery.h definisce MsiEnumComponentCosts come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.

Requisiti

Requisito Valore
Client minimo supportato Windows Installer 5.0 in Windows Server 2012, Windows 8, Windows Server 2008 R2 o Windows 7. Windows Installer 4.0 o Windows Installer 4.5 in Windows Server 2008 o Windows Vista. Windows Installer in Windows Server 2003 o Windows XP
Piattaforma di destinazione Windows
Intestazione msiquery.h
Libreria Msi.lib
DLL Msi.dll