MsiEnumComponentCostsA 関数 (msiquery.h)

MsiEnumComponentCosts 関数は、コンポーネントのインストールに必要なドライブごとのディスク領域を列挙します。 この情報は、ユーザー インターフェイス内のすべてのドライブに必要なディスク領域のコストを表示するために必要です。 返されるディスク領域のコストは、512 バイトの倍数で表されます。

MsiEnumComponentCosts は、インストーラーがファイルのコスト計算を完了した後、および CostFinalize アクションの後にのみ実行する必要があります。 詳細については、「ファイルのコスト計算」を参照してください。

構文

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

パラメーター

[in] hInstall

DLL カスタム アクションに対して提供されるインストール、または MsiOpenPackage、MsiOpenPackageEx、または MsiOpenProduct を使用して取得されたインストールを処理します。

[in] szComponent

コンポーネントテーブルの Component 列に表示されているコンポーネントの名前を指定する null で終わる文字列。 このパラメーターには、null を指定できます。 szComponent が null または空の文字列の場合、MsiEnumComponentCosts はインストール時に使用されたドライブあたりのディスク領域の合計を列挙します。 この場合、 iState は無視されます。 インストーラーのコストには、セキュリティで保護されたフォルダーにデータベースをキャッシュするためのコストと、インストール スクリプトを作成するためのコストが含まれます。 インストール時に使用されるディスク領域の合計は、コンポーネントのインストール後に使用される領域よりも大きくなる可能性があることに注意してください。

[in] dwIndex

ドライブの 0 から始まるインデックス。 このパラメーターは、 MsiEnumComponentCosts 関数の最初の呼び出しでは 0 にし、後続の呼び出しではインクリメントする必要があります。

[in] iState

列挙するコンポーネントの状態を要求しました。 szComponent が Null または空の文字列として渡された場合、インストーラーは iState パラメーターを無視します。

[out] szDriveBuf

null 終端記号を含むドライブ名を保持するバッファー。 これは、エラーが発生した場合の空の文字列です。

[in, out] pcchDriveBuf

lpDriveBuf パラメーターが指すバッファーのサイズを TCHAR で指定する変数へのポインター。 このサイズには、終端の null 文字を含める必要があります。 指定されたバッファーが小さすぎる場合、 pcchDriveBuf が指す変数には、null 終端記号を含まない文字数が含まれます。

[out] piCost

512 バイトの倍数で表されるドライブあたりのコンポーネントのコスト。 エラーが発生した場合、この値は 0 です。 piCost で返される値は、インストール後にコンポーネントによって使用される最終的なディスク領域です。 szComponent が Null または空の文字列として渡された場合、インストーラーは piCost の値を 0 に設定します。

[out] piTempCost

インストール期間中のドライブあたりのコンポーネント コスト。エラーが発生した場合は 0。 *piTempCost の値は、インストール期間中の一時的な領域の要件を表します。 この一時的な領域の要件は、インストールの期間中にのみ必要な領域です。 これは、最終的なディスク領域の要件には影響しません。

戻り値

戻り値 説明
ERROR_INVALID_HANDLE_STATE
構成データが破損しています。
ERROR_INVALID_PARAMETER
無効なパラメーターが関数に渡されました。
ERROR_NO_MORE_ITEMS
これ以上戻るドライブはありません。
ERROR_SUCCESS
値が列挙されました。
ERROR_UNKNOWN_COMPONENT
コンポーネントがありません。
ERROR_FUNCTION_NOT_CALLED
原価計算が完了していません。
ERROR_MORE_DATA
バッファーがドライブ名に対して十分な大きさではありません。
ERROR_INVALID_HANDLE
指定されたハンドルが無効または非アクティブです。
 
 

注釈

ドライブあたりのディスク領域のコストを列挙するための推奨される方法は次のとおりです。 dwIndex を 0 に設定して開始し、呼び出しのたびに 1 ずつインクリメントします。 MsiEnumComponentCosts がERROR_SUCCESSを返す限り、列挙を続行します。

MsiEnumComponentCosts は、カスタム アクションから呼び出される場合があります。

インストールの最終的なディスク コストの合計は、すべてのコンポーネントのコストと Windows インストーラーのコスト (szComponent = null) の合計です。

注意

msiquery.h ヘッダーは、MSIEnumComponentCosts をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 エンコードに依存しないエイリアスをエンコードニュートラルでないコードと組み合わせて使用すると、コンパイルまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

要件
サポートされている最小のクライアント Windows Server 2012、Windows 8、Windows Server 2008 R2、または Windows 7 の Windows インストーラー 5.0。 Windows Server 2008 または Windows Vista の Windows インストーラー 4.0 または Windows インストーラー 4.5。 Windows Server 2003 または Windows XP の Windows インストーラー
対象プラットフォーム Windows
ヘッダー msiquery.h
Library Msi.lib
[DLL] Msi.dll