MsiOpenDatabaseA 関数 (msiquery.h)
MsiOpenDatabase 関数は、データ アクセス用のデータベース ファイルを開きます。 この関数は、 MsiCloseHandle を使用して閉じる必要があるハンドルを返します。
構文
UINT MsiOpenDatabaseA(
[in] LPCSTR szDatabasePath,
[in] LPCSTR szPersist,
[out] MSIHANDLE *phDatabase
);
パラメーター
[in] szDatabasePath
データベース ファイルへの完全パスまたは相対パスを指定します。
[in] szPersist
ファイルまたは永続化モードへの完全パスを受け取ります。 szPersist パラメーターを使用すると、永続的な出力を新しいファイルに転送したり、次の定義済みの永続化モードのいずれかを指定したりできます。
[out] phDatabase
返されるデータベース ハンドルの場所へのポインター。
戻り値
MsiOpenDatabase 関数は、次の値を返します。
注釈
データベースに変更を加えて保存するには、まずトランザクション (MSIDBOPEN_TRANSACT)、作成 (MSIDBOPEN_CREATEまたはMSIDBOPEN_CREATEDIRECT)、または直接 (MSIDBOPEN_DIRECT) モードでデータベースを開きます。 変更を行った後、データベース ハンドルを閉じる前に、常に MsiDatabaseCommit を呼び出します。 MsiDatabaseCommit は、すべてのバッファーをフラッシュします。
データベースのハンドルを閉じる前に、ダイレクト モード (MSIDBOPEN_DIRECTまたはMSIDBOPEN_CREATEDIRECT) で開かれているデータベースで MsiDatabaseCommit を常に呼び出します。 これを行わないと、データベースが破損する可能性があります。
MsiOpenDatabase はデータベース アクセスを開始するため、実行中のインストールでは使用できません。
PMSIHANDLE 型の変数は、インストーラーがスコープ外に出ると PMSIHANDLE オブジェクトを閉じるのに対し、 MsiCloseHandle を呼び出して MSIHANDLE オブジェクトを閉じる必要があるため、PMSIHANDLE 型の変数を使用することをお勧めします。 詳細については、「Windows インストーラーのベスト プラクティス」の「HANDLE の代わりに PMSIHANDLE を使用する」セクションを参照してください。
注意
msiquery.h ヘッダーは、MSIOpenDatabase をエイリアスとして定義し、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 |