Freigeben über


MsiEnumComponentCostsW-Funktion (msiquery.h)

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

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

Syntax

UINT MsiEnumComponentCostsW(
  [in]      MSIHANDLE    hInstall,
  [in]      LPCWSTR      szComponent,
  [in]      DWORD        dwIndex,
  [in]      INSTALLSTATE iState,
  [out]     LPWSTR       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 wird, oder erhalten Sie über MsiOpenPackage, MsiOpenPackageEx-oder MsiOpenProduct-.

[in] szComponent

Eine mit Null beendete Zeichenfolge, die den Namen der Komponente angibt, wie sie in der Spalte "Komponente" der Component-Tabelleaufgeführt ist. Dieser Parameter kann null sein. Wenn szComponent null oder eine leere Zeichenfolge ist, MsiEnumComponentCosts den gesamten Speicherplatz pro Laufwerk aufzählt, der 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 zum Erstellen des Installationsskripts. Beachten Sie, dass der gesamte speicherplatz, der während der Installation verwendet wird, möglicherweise größer als der speicherplatz, der nach der Installation der Komponente verwendet wird.

[in] dwIndex

0-basierter Index für Laufwerke. Dieser Parameter sollte für den ersten Aufruf der MsiEnumComponentCosts Funktion null sein und dann für nachfolgende Aufrufe erhöht 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 Laufwerknamen einschließlich des Null-Endators enthält. Dies ist eine leere Zeichenfolge im Falle eines Fehlers.

[in, out] pcchDriveBuf

Zeiger auf eine Variable, die die Größe des Puffers in TCHARs angibt, auf den der lpDriveBuf-Parameter verweist. Diese Größe sollte das endende Nullzeichen enthalten. Wenn der bereitgestellte Puffer zu klein ist, enthält die Variable, auf die pcchDriveBuf verweist, die Anzahl der Zeichen, die nicht den Null-Endator enthalten.

[out] piCost

Kosten der Komponente pro Laufwerk, ausgedrückt in Vielfachen von 512 Byte. 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 auf piCost- auf 0 fest.

[out] piTempCost

Die Komponente kostet 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 Speicherplatzbedarf ist nur für die Dauer der Installation erforderlich. Dies wirkt sich nicht auf die endgültige Speicherplatzanforderung aus.

Rückgabewert

Rückgabewert Bedeutung
ERROR_INVALID_HANDLE_STATE
Die Konfigurationsdaten sind beschädigt.
ERROR_INVALID_PARAMETER
An die Funktion wurde ein ungültiger Parameter übergeben.
ERROR_NO_MORE_ITEMS
Es gibt keine weiteren Laufwerke, die zurückgegeben werden sollen.
ERROR_SUCCESS
Ein Wert wurde aufgezählt.
ERROR_UNKNOWN_COMPONENT
Die Komponente fehlt.
ERROR_FUNCTION_NOT_CALLED
Die Kosten sind nicht abgeschlossen.
ERROR_MORE_DATA
Puffer nicht groß genug für den Laufwerknamen.
ERROR_INVALID_HANDLE
Der angegebene Handle ist ungültig oder inaktiv.
 
 

Bemerkungen

Die empfohlene Methode zum Aufzählen der Festplattenspeicherkosten pro Laufwerk lautet wie folgt. Beginnen Sie mit dem dwIndex-Wert, der auf "0" festgelegt ist, und erhöhen Sie ihn nach jedem Aufruf um einen Wert. Fahren Sie mit der Enumeration fort, solange MsiEnumComponentCosts ERROR_SUCCESS zurückgibt.

MsiEnumComponentCosts- kann aus benutzerdefinierten Aktionen aufgerufen werden.

Die gesamten Enddatenträgerkosten für die Installation sind die Summe der Kosten aller Komponenten sowie die Kosten des Windows Installer (szComponent = null).

Anmerkung

Der msiquery.h-Header definiert MsiEnumComponentCosts als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, 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
mindestens unterstützte 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- Fenster
Header- msiquery.h
Library Msi.lib
DLL- Msi.dll