MsiSourceListEnumMediaDisksA 関数 (msi.h)

MsiSourceListEnumMediaDisks 関数は、パッチまたは製品のメディア ソースに登録されているディスクの一覧を列挙します。

構文

UINT MsiSourceListEnumMediaDisksA(
  [in]                LPCSTR            szProductCodeOrPatchCode,
  [in, optional]      LPCSTR            szUserSid,
  [in]                MSIINSTALLCONTEXT dwContext,
  [in]                DWORD             dwOptions,
  [in]                DWORD             dwIndex,
  [out, optional]     LPDWORD           pdwDiskId,
  [out, optional]     LPSTR             szVolumeLabel,
  [in, out, optional] LPDWORD           pcchVolumeLabel,
  [out, optional]     LPSTR             szDiskPrompt,
  [in, out, optional] LPDWORD           pcchDiskPrompt
);

パラメーター

[in] szProductCodeOrPatchCode

製品またはパッチの ProductCode またはパッチ GUID。 null で終わる文字列を使用します。 文字列が 39 文字を超える場合、関数は失敗し、ERROR_INVALID_PARAMETERを返します。 このパラメーターを NULL にすることはできません。

[in, optional] szUserSid

製品またはパッチを含むユーザー アカウントを指定する文字列 SID。 SID は検証も解決もされません。 SID が正しくないと、ERROR_UNKNOWN_PRODUCTまたはERROR_UNKNOWN_PATCHが返される可能性があります。 マシン コンテキストを参照する場合、 szUserSIDNULL で、 dwContext はMSIINSTALLCONTEXT_MACHINEする必要があります。

SID の種類 意味
NULL
NULL は、現在ログオンしているユーザーを表します。 現在のユーザー アカウントを参照する場合、 szUserSIDNULLdwContext はMSIINSTALLCONTEXT_USERMANAGEDまたはMSIINSTALLCONTEXT_USERUNMANAGEDできます。
ユーザー SID
システム内の特定のユーザーの列挙。 ユーザー SID の例として、"S-1-3-64-2415071341-1358098788-3127455600-2561" があります。
s-1-1-0
特殊な SID 文字列 s-1-1-0 (すべてのユーザー) は、システム内のすべてのユーザーの列挙を指定します。
 
メモ 特殊な SID 文字列 s-1-5-18 (システム) を使用して、コンピューターごとにインストールされている製品またはパッチを列挙することはできません。 SID 値を s-1-5-18 に設定すると、ERROR_INVALID_PARAMETERが返されます。
 

[in] dwContext

このパラメーターは、製品またはパッチ インスタンスのコンテキストを指定します。 このパラメーターには、次のいずれかの値を含めることができます。

コンテキストの種類 意味
MSIINSTALLCONTEXT_USERMANAGED
製品またはパッチ インスタンスは、ユーザーごとのマネージド コンテキストに存在します。
MSIINSTALLCONTEXT_USERUNMANAGED
製品またはパッチ インスタンスは、ユーザーごとのアンマネージド コンテキストに存在します。
MSIINSTALLCONTEXT_MACHINE
製品またはパッチ インスタンスは、マシンごとのコンテキストに存在します。

[in] dwOptions

szProductCodeOrPatchCode の意味を指定する dwOptions 値。

フラグ 説明
MSICODE_PRODUCT
szProductCodeOrPatchCode は製品コード GUID です。
MSICODE_PATCH
szProductCodeOrPatchCode はパッチ コード GUID です。

[in] dwIndex

取得するソースのインデックス。 このパラメーターは、 MsiSourceListEnumMediaDisks 関数の最初の呼び出しでは 0 (ゼロ) にする必要があり、その後の呼び出しでは関数がERROR_NO_MORE_ITEMSを返すまでインクリメントする必要があります。

[out, optional] pdwDiskId

MsiSourceListEnumMediaDisks へのエントリでは、このパラメーターは、列挙されているディスクの ID を受け取る DWORD へのポインターを提供します。 このパラメーターは省略可能です。

[out, optional] szVolumeLabel

列挙されているディスクのボリューム ラベルを受け取る出力バッファー。 このバッファーは、情報を格納するのに十分な大きさにする必要があります。 バッファーが小さすぎる場合、関数は ERROR_MORE_DATAを返し、終了する NULL 文字を含まない値の TCHAR の数に *pcchVolumeLabel を設定します。

szVolumeLabelpcchVolumeLabel の両方が NULL に設定されている場合、値が存在する場合、関数は値を取得せずにERROR_SUCCESSを返します。

[in, out, optional] pcchVolumeLabel

szVolumeLabel バッファー内の TCHAR の数を指定する変数へのポインター。 関数から戻るときに、このパラメーターは、受信した値の TCHAR の数であり、終端の null 文字は含まれません。

このパラメーターは、szVolumeLabelNULL の場合にのみ NULL に設定できます。それ以外の場合、関数はERROR_INVALID_PARAMETERを返します。

[out, optional] szDiskPrompt

列挙されているディスクのディスク プロンプトを受信する出力バッファー。 このバッファーは、情報を格納するのに十分な大きさにする必要があります。 バッファーが小さすぎる場合、関数は ERROR_MORE_DATAを返し、終了する NULL 文字を含まない値の TCHAR の数に *pcchDiskPrompt を設定します。

szDiskPromptNULL に設定され、pcchDiskPrompt が有効なポインターに設定されている場合、関数は ERROR_SUCCESSを返し、*pcchDiskPrompt を終端の NULL 文字を含まない値の TCHAR の数に設定します。 関数を再度呼び出して値を取得し、 *pcchDiskPrompt + 1 文字を格納するのに十分な大きさの szDiskPrompt バッファーを使用できます。

szDiskPromptpcchDiskPrompt の両方が NULL に設定されている場合、値が存在する場合は、値を取得せずにERROR_SUCCESSを返します。

[in, out, optional] pcchDiskPrompt

szDiskPrompt バッファー内の TCHAR の数を指定する変数へのポインター。 関数が戻るときに、関数が指定したバッファーに値をコピーするかどうかに関係なく、このパラメーターは要求された値のサイズに設定されます。 サイズは、要求された値の TCHAR の数として返されます。終端の null 文字は含まれません。

このパラメーターは、szDiskPromptNULL の場合にのみ NULL に設定できます。それ以外の場合、関数はERROR_INVALID_PARAMETERを返します。

戻り値

MsiSourceListEnumMediaDisks 関数は、次の値を返します。

意味
ERROR_ACCESS_DENIED
ユーザーは、指定されたメディア ソースまたは指定された製品またはパッチを読み取る機能を持っていません。 これは、メディア ソース、製品、またはパッチが見つかったかどうかを示すものではありません。
ERROR_BAD_CONFIGURATION
構成データが破損しています。
ERROR_INVALID_PARAMETER
無効なパラメーターが関数に渡されます。
ERROR_NO_MORE_ITEMS
この製品またはパッチに登録されているディスクはこれ以上ありません。
ERROR_SUCCESS
値が正常に列挙されました。
ERROR_UNKNOWN_PATCH
パッチが見つかりません。
ERROR_UNKNOWN_PRODUCT
製品が見つかりません。
ERROR_MORE_DATA
指定されたバッファーが小さすぎて、要求された情報を格納できません。
ERROR_FUNCTION_FAILED
予期しない内部エラー。

注釈

1 つの製品インスタンスのすべてのソースを列挙するために MsiSourceListEnumMediaDisks に対して複数の呼び出しを行う場合、各呼び出しは同じスレッドから行う必要があります。

管理者は、すべてのユーザーのユーザーごとのアンマネージド インストールとマネージド インストール、マシンごとのインストール、およびユーザーごとのマネージド インストールを列挙できます。 管理者は、他のユーザーのユーザーごとのアンマネージド インストールを列挙できません。 管理者以外は、ユーザーごとのアンマネージド インストールとマネージド インストールとマシンごとのインストールのみを列挙できます。

注意

msi.h ヘッダーは、MSISourceListEnumMediaDisks をエイリアスとして定義し、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 インストーラー 3.0 以降。 Windows インストーラーのバージョンに必要な最小の Windows Service Pack については、Windows インストーラーの実行時の要件に関する記事を参照してください。
対象プラットフォーム Windows
ヘッダー msi.h
Library Msi.lib
[DLL] Msi.dll

こちらもご覧ください

インストール コンテキスト

Windows インストーラー 2.0 以前ではサポートされていません

ProductCode