Partager via


MsiEnumComponentCostsA, fonction (msiquery.h)

La fonction MsiEnumComponentCosts énumère l’espace disque par lecteur requis pour installer un composant. Ces informations sont nécessaires pour afficher le coût de l’espace disque requis pour tous les lecteurs dans l’interface utilisateur. Les coûts d’espace disque retournés sont exprimés en multiples de 512 octets.

MsiEnumComponentCosts ne doit être exécuté qu’une fois que le programme d’installation a terminé le coût des fichiers et après l’action CostFinalize. Pour plus d’informations, consultez Calcul du coût des fichiers.

Syntaxe

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

Paramètres

[in] hInstall

Gérez l’installation fournie à une action personnalisée DLL ou obtenue via MsiOpenPackage, MsiOpenPackageEx ou MsiOpenProduct.

[in] szComponent

Chaîne terminée par null spécifiant le nom du composant tel qu’il est répertorié dans la colonne Composant de la table Component. Ce paramètre peut avoir la valeur Null. Si szComponent a la valeur Null ou une chaîne vide, MsiEnumComponentCosts énumère l’espace disque total par lecteur utilisé pendant l’installation. Dans ce cas, iState est ignoré. Les coûts du programme d’installation incluent les coûts de mise en cache de la base de données dans le dossier sécurisé, ainsi que le coût de création du script d’installation. Notez que l’espace disque total utilisé pendant l’installation peut être supérieur à l’espace utilisé après l’installation du composant.

[in] dwIndex

Index de base 0 pour les lecteurs. Ce paramètre doit être égal à zéro pour le premier appel à la fonction MsiEnumComponentCosts , puis incrémenté pour les appels suivants.

[in] iState

État du composant demandé à énumérer. Si szComponent est passé en tant que Null ou une chaîne vide, le programme d’installation ignore le paramètre iState .

[out] szDriveBuf

Mémoire tampon contenant le nom du lecteur, y compris la marque de fin Null. Il s’agit d’une chaîne vide en cas d’erreur.

[in, out] pcchDriveBuf

Pointeur vers une variable qui spécifie la taille, en TCHAR, de la mémoire tampon pointée par le paramètre lpDriveBuf . Cette taille doit inclure le caractère null de fin. Si la mémoire tampon fournie est trop petite, la variable pointée par pcchDriveBuf contient le nombre de caractères qui n’inclut pas la marque de fin Null.

[out] piCost

Coût du composant par lecteur exprimé en multiples de 512 octets. Cette valeur est 0 si une erreur s’est produite. La valeur retournée dans piCost est l’espace disque final utilisé par le composant après l’installation. Si szComponent est passé en tant que Null ou une chaîne vide, le programme d’installation définit la valeur sur piCost sur 0.

[out] piTempCost

Coût du composant par lecteur pendant la durée de l’installation, ou 0 si une erreur s’est produite. La valeur dans *piTempCost représente l’espace temporaire requis pour la durée de l’installation. Cet espace temporaire est nécessaire uniquement pour la durée de l’installation. Cela n’affecte pas l’espace disque final requis.

Valeur retournée

Valeur renvoyée Signification
ERROR_INVALID_HANDLE_STATE
Les données de configuration sont endommagées.
ERROR_INVALID_PARAMETER
Un paramètre non valide a été transmis à la fonction.
ERROR_NO_MORE_ITEMS
Il n’y a plus de lecteurs à retourner.
ERROR_SUCCESS
Une valeur a été énumérée.
ERROR_UNKNOWN_COMPONENT
Le composant est manquant.
ERROR_FUNCTION_NOT_CALLED
L’estimation des coûts n’est pas terminée.
ERROR_MORE_DATA
La mémoire tampon n’est pas suffisamment grande pour le nom du lecteur.
ERROR_INVALID_HANDLE
Le handle fourni n’est pas valide ou inactif.
 
 

Remarques

La méthode recommandée pour énumérer les coûts d’espace disque par lecteur est la suivante. Commencez par le paramètre dwIndex défini sur 0 et incrémentez-le d’un après chaque appel. Continuez l’énumération tant que MsiEnumComponentCosts retourne ERROR_SUCCESS.

MsiEnumComponentCosts peut être appelé à partir d’actions personnalisées.

Le coût total du disque final pour l’installation est la somme des coûts de tous les composants, plus le coût de Windows Installer (szComponent = null).

Notes

L’en-tête msiquery.h définit MsiEnumComponentCosts comme un alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. La combinaison de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Installer 5.0 sur Windows Server 2012, Windows 8, Windows Server 2008 R2 ou Windows 7. Windows Installer 4.0 ou Windows Installer 4.5 sur Windows Server 2008 ou Windows Vista. Windows Installer sur Windows Server 2003 ou Windows XP
Plateforme cible Windows
En-tête msiquery.h
Bibliothèque Msi.lib
DLL Msi.dll