MsiViewGetErrorW 関数 (msiquery.h)
MsiViewGetError 関数は、MsiViewModify 関数で発生したエラーを返します。
構文
MSIDBERROR MsiViewGetErrorW(
[in] MSIHANDLE hView,
[out] LPWSTR szColumnNameBuffer,
[in, out] LPDWORD pcchBuf
);
パラメーター
[in] hView
ビューへのハンドル。
[out] szColumnNameBuffer
null で終わる列名を受け取るバッファーへのポインター。 szColumnName に null (value=0) を渡してバッファーのサイズを決定しないでください。 空の文字列 (""など) を渡すことで、バッファーのサイズを取得できます。 その後、関数は MSIDBERROR_MOREDATAを返し、 pcchBuf には TCHAR に必要なバッファー サイズが含まれており、終端の null 文字は含まれません。 MSIDBERROR_NOERROR返された pcchBuf には、バッファーに書き込まれた TCHAR の数が含まれ、終端の null 文字は含まれません。 エラーがない場合、このパラメーターは空の文字列です。
[in, out] pcchBuf
変数 szColumnNameBuffer によって指されるバッファーのサイズを TCHAR で指定する変数へのポインター。 関数がMSIDBERROR_NOERRORを返すとき、この変数には 、szColumnNameBuffer にコピーされたデータのサイズが含まれ、終端の null 文字は含まれません。 szColumnNameBuffer が十分な大きさでない場合、関数は MSIDBERROR_MOREDATAを返し、pcchBuf が指す変数に、終端の null 文字を含まない必要なサイズを格納します。
戻り値
この関数は、次のいずれかの値を返します。
エラー コード | 意味 |
---|---|
|
引数が無効です。 |
|
バッファーが小さすぎてデータを受信できませんでした。 |
|
関数が失敗しました。 |
|
関数はエラーなしで正常に完了しました。 |
|
新しいレコードは、テーブル内の既存のレコードの主キーを複製します。 |
|
null 値は使用できません。または列が削除されようとしていますが、別の行によって参照されます。 |
|
外部テーブル内の対応するレコードが見つかりませんでした。 |
|
データが許容される最大値を超えています。 |
|
データが許容される最小値より小さい。 |
|
データは、セットで許可されている値のメンバーではありません。 |
|
無効なバージョン文字列が指定されました。 |
|
このケースは無効でした。 大文字または小文字をすべて大文字にする必要があります。 |
|
無効な GUID が指定されました。 |
|
無効なワイルドカード ファイル名が指定されたか、ワイルドカードの使用が無効でした。 |
|
無効な識別子が指定されました。 |
|
無効な言語 ID が指定されました。 |
|
無効なファイル名が指定されました。 |
|
無効なパスが指定されました。 |
|
無効な条件ステートメントが指定されました。 |
|
無効な書式指定文字列が指定されました。 |
|
無効なテンプレート文字列が指定されました。 |
|
ディレクトリ テーブルの DefaultDir 列に無効な文字列が指定されました。 |
|
無効なレジストリ パス文字列が指定されました。 |
|
CustomAction テーブルの CustomSource 列に無効な文字列が指定されました。 |
|
無効なプロパティ文字列が指定されました。 |
|
_Validation テーブルに列への参照がありません。 |
|
列の _Validation テーブルのカテゴリ列が無効です。 |
|
無効なキャビネット名が指定されました。 |
|
_Validation テーブルの Keytable 列のテーブルが見つからないか、読み込まれていません。 |
|
_Validation テーブルの MaxValue 列の値が MinValue 列の値より小さい。 |
|
無効なショートカット ターゲット名が指定されました。 |
|
列定義で指定された長さに対して文字列が長すぎます。 |
|
無効なローカライズ属性が指定されました。 (主キーはローカライズできません)。 |
メモリ不足の状況では、この関数によってSTATUS_NO_MEMORY例外が発生する可能性があることに注意してください。
注釈
MsiViewModify がERROR_INVALID_DATAを返し、データが無効であることを示す場合にのみ、MsiViewGetError 関数を呼び出す必要があります。 エラーは、MSIMODIFY_VALIDATE、MSIMODIFY_VALIDATE_NEW、およびMSIMODIFY_VALIDATEFIELDに対してのみ記録されます。
ERROR_MORE_DATAが返された場合、ポインターである パラメーターは、文字列を保持するために必要なバッファーのサイズを示します。 成功すると、文字列バッファーに書き込まれた文字数が与えられます。 したがって、小さなバッファー (最小 1 文字) を渡し、関数がMSIDBERROR_MOREDATAを返すときに pcchPathBuf で値を調べることで、バッファーの必要なサイズを取得できます。 null を szColumnNameBuffer として渡すか、pcchBuf によって参照される DWORD のバッファー サイズ 0 を渡して、バッファーのサイズを特定しないでください。
MSIDBERROR_NOERRORが返されると、検証エラーは残らなくなります。 MSIDBERROR 戻り値は、 szColumnNameBuffer によって識別される列にある値に対して発生した検証エラーの種類を示します。
注意
msiquery.h ヘッダーは、MSIViewGetError をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | 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 |