MsiViewGetErrorA 関数 (msiquery.h)
MsiViewGetError 関数は、MsiViewModify 関数で発生したエラーを返します。
構文
MSIDBERROR MsiViewGetErrorA(
[in] MSIHANDLE hView,
[out] LPSTR szColumnNameBuffer,
[in, out] LPDWORD pcchBuf
);
パラメーター
[in] hView
ビューへのハンドル。
[out] szColumnNameBuffer
null で終わる列名を受け取るバッファーへのポインター。 szColumnNameに null (値 =0) を渡してバッファーのサイズを決定しないでください。 空の文字列 (""など) を渡すことで、バッファーのサイズを取得できます。 次に、この関数はMSIDBERROR_MOREDATAを返し、pcchBuf は、終端の null 文字を含まない、TCHAR で必要なバッファー サイズを含みます。 MSIDBERROR_NOERRORが戻った場合、pcchBuf には、終端の null 文字を含まない、バッファーに書き込まれた TCHAR の数が含まれます。 エラーがない場合、このパラメーターは空の文字列です。
[in, out] pcchBuf
szColumnNameBuffer
戻り値
この関数は、次のいずれかの値を返します。
エラー コード | 意味 |
---|---|
|
引数が無効です。 |
|
バッファーが小さすぎてデータを受信できませんでした。 |
|
関数が失敗しました。 |
|
関数はエラーなしで正常に完了しました。 |
|
新しいレコードは、テーブル内の既存のレコードの主キーを複製します。 |
|
null 値は使用できません。または列が削除されようとしていますが、別の行によって参照されます。 |
|
外部テーブル内の対応するレコードが見つかりませんでした。 |
|
データが許容される最大値を超えています。 |
|
データが許容される最小値より小さい。 |
|
データは、セットで許可されている値のメンバーではありません。 |
|
無効なバージョン文字列が指定されました。 |
|
このケースは無効でした。 大文字または小文字を区別する必要があります。 |
|
無効な GUID が指定されました。 |
|
無効なワイルドカード ファイル名が指定されたか、ワイルドカードの使用が無効でした。 |
|
無効な識別子が指定されました。 |
|
無効な言語 ID が指定されました。 |
|
無効なファイル名が指定されました。 |
|
無効なパスが指定されました。 |
|
無効な条件付きステートメントが指定されました。 |
|
無効な書式指定文字列が指定されました。 |
|
無効なテンプレート文字列が指定されました。 |
|
Directory テーブルの 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
MSIDBERROR_NOERRORが返されると、検証エラーは残らなくなります。 MSIDBERROR 戻り値は、szColumnNameBufferによって識別される列にある値に対して発生した検証エラーの種類を示します。
手記
msiquery.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして MsiViewGetError を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | 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 インストーラー |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | msiquery.h |
ライブラリ | Msi.lib |
DLL | Msi.dll |