MsiEnumComponentCostsA-Funktion (msiquery.h)

Die MsiEnumComponentCosts-Funktion listet den Speicherplatz pro Laufwerk auf, der für die Installation einer Komponente erforderlich ist. Diese Informationen werden benötigt, um die für alle Laufwerke erforderlichen Speicherplatzkosten auf der Benutzeroberfläche anzuzeigen. Die zurückgegebenen Speicherplatzkosten werden in Vielfachen von 512 Bytes ausgedrückt.

MsiEnumComponentCosts sollte nur ausgeführt werden, nachdem das Installationsprogramm die Dateikalkulation abgeschlossen hat und nach der CostFinalize-Aktion. Weitere Informationen finden Sie unter Dateikostenberechnung.

Syntax

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

Parameter

[in] hInstall

Behandeln Sie die Installation, die für eine benutzerdefinierte DLL-Aktion bereitgestellt oder über MsiOpenPackage, MsiOpenPackageEx oder MsiOpenProduct abgerufen wird.

[in] szComponent

Eine NULL-beendete Zeichenfolge, die den Namen der Komponente angibt, wie er in der Spalte Komponente der Tabelle Component aufgeführt ist. Dieser Parameter kann NULL sein. Wenn szComponent NULL oder eine leere Zeichenfolge ist, zählt MsiEnumComponentCosts den gesamten Speicherplatz pro Laufwerk auf, das während der Installation verwendet wird. In diesem Fall wird iState ignoriert. Die Kosten für das Installationsprogramm umfassen die Kosten für das Zwischenspeichern der Datenbank im sicheren Ordner sowie die Kosten für die Erstellung des Installationsskripts. Beachten Sie, dass der während der Installation verwendete Speicherplatz insgesamt größer sein kann als der nach der Installation der Komponente belegte Speicherplatz.

[in] dwIndex

0-basierter Index für Laufwerke. Dieser Parameter sollte für den ersten Aufruf der MsiEnumComponentCosts-Funktion 0 sein und für nachfolgende Aufrufe inkrementiert werden.

[in] iState

Angeforderter Komponentenstatus, der aufgezählt werden soll. Wenn szComponent als NULL oder eine leere Zeichenfolge übergeben wird, ignoriert das Installationsprogramm den iState-Parameter .

[out] szDriveBuf

Puffer, der den Laufwerksnamen enthält, einschließlich des NULL-Abschlusszeichens. Dies ist eine leere Zeichenfolge im Falle eines Fehlers.

[in, out] pcchDriveBuf

Zeiger auf eine Variable, die in TCHARs die Größe des Puffers angibt, auf den der lpDriveBuf-Parameter verweist. Diese Größe sollte das beendende NULL-Zeichen enthalten. Wenn der bereitgestellte Puffer zu klein ist, enthält die Variable, auf die von pcchDriveBuf verwiesen wird, die Anzahl der Zeichen ohne null-Abschlussator.

[out] piCost

Kosten für die Komponente pro Laufwerk, ausgedrückt in Vielfachen von 512 Bytes. Dieser Wert ist 0, wenn ein Fehler aufgetreten ist. Der in piCost zurückgegebene Wert ist der endgültige Speicherplatz, der von der Komponente nach der Installation verwendet wird. Wenn szComponent als NULL oder eine leere Zeichenfolge übergeben wird, legt das Installationsprogramm den Wert bei piCost auf 0 fest.

[out] piTempCost

Die Komponentenkosten pro Laufwerk für die Dauer der Installation oder 0, wenn ein Fehler aufgetreten ist. Der Wert in *piTempCost stellt die temporären Speicherplatzanforderungen für die Dauer der Installation dar. Dieser temporäre Platzbedarf ist nur für die Dauer der Installation erforderlich. Dies wirkt sich nicht auf den endgültigen Speicherplatzbedarf aus.

Rückgabewert

Rückgabewert Bedeutung
ERROR_INVALID_HANDLE_STATE
Die Konfigurationsdaten sind beschädigt.
ERROR_INVALID_PARAMETER
Es wurde ein ungültiger Parameter an die Funktion übergeben.
ERROR_NO_MORE_ITEMS
Es gibt keine weiteren Laufwerke, die zurückgegeben werden können.
ERROR_SUCCESS
Ein Wert wurde aufgelistet.
ERROR_UNKNOWN_COMPONENT
Die Komponente fehlt.
ERROR_FUNCTION_NOT_CALLED
Die Kostenkalkulation ist nicht abgeschlossen.
ERROR_MORE_DATA
Puffer nicht groß genug für den Laufwerksnamen.
ERROR_INVALID_HANDLE
Das angegebene Handle ist ungültig oder inaktiv.
 
 

Hinweise

Die empfohlene Methode zum Auflisten der Speicherplatzkosten pro Laufwerk lautet wie folgt. Beginnen Sie damit, dass dwIndex auf 0 festgelegt ist, und erhöhen Sie ihn nach jedem Aufruf um eins. Setzen Sie die Enumeration fort, solange MsiEnumComponentCosts ERROR_SUCCESS zurückgibt.

MsiEnumComponentCosts kann aus benutzerdefinierten Aktionen aufgerufen werden.

Die Gesamtkosten der endgültigen Datenträgerkosten für die Installation sind die Summe der Kosten aller Komponenten zuzüglich der Kosten für den Windows Installer (szComponent = null).

Hinweis

Der msiquery.h-Header definiert MsiEnumComponentCosts als Alias, der automatisch die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit nicht codierungsneutralem Code kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Installer 5.0 unter Windows Server 2012, Windows 8, Windows Server 2008 R2 oder Windows 7. Windows Installer 4.0 oder Windows Installer 4.5 unter Windows Server 2008 oder Windows Vista. Windows Installer unter Windows Server 2003 oder Windows XP
Zielplattform Windows
Kopfzeile msiquery.h
Bibliothek Msi.lib
DLL Msi.dll