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 の値は、インストール期間中の一時的な領域の要件を表します。 この一時的な領域の要件は、インストールの期間中にのみ必要な領域です。 これは、最終的なディスク領域の要件には影響しません。
戻り値
戻り値 | 説明 |
---|---|
|
構成データが破損しています。 |
|
無効なパラメーターが関数に渡されました。 |
|
これ以上戻るドライブはありません。 |
|
値が列挙されました。 |
|
コンポーネントがありません。 |
|
原価計算が完了していません。 |
|
バッファーがドライブ名に対して十分な大きさではありません。 |
|
指定されたハンドルが無効または非アクティブです。 |
注釈
ドライブあたりのディスク領域のコストを列挙するための推奨される方法は次のとおりです。 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 |
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示