IPersist_GetClassID

オブジェクトのクラス識別子 (CLSID) を取得する。

IPersist_GetClassID this, pClassID

this : [comobj] IPersist インターフェースの COM オブジェクト変数
pClassID : [var] 戻り時に CLSID を受け取る場所へのポインター。CLSID はグローバル一意識別子 (GUID) であり、オブジェクトデータを操作するコードを定義するオブジェクトクラスを一意に表す。

(プラグイン / モジュール : com_misc.dll)

解説

オブジェクトのクラス識別子 (CLSID) を取得する。

[戻り値]
メソッドが成功した場合、戻り値は S_OK。そうでなければ E_FAIL。

[備考]
GetClassID メソッドはオブジェクトのクラス識別子 (CLSID)
を取得する。これは後の操作でオブジェクト固有のコードを呼び出し側のコンテキストにロードするために使われる。呼び出し側へのメモ
コンテナーアプリケーションは、あるクラスを別のクラスとして扱っているオブジェクトの元の CLSID
を取得するためにこのメソッドを呼び出すことがある。このような呼び出しは、ユーザーがオブジェクトの保存を必要とする編集操作を行ったときに必要になる。コンテナーが
treat-as CLSID
で保存した場合、元のアプリケーションはオブジェクトを編集できなくなる。通常このような場合、コンテナーは必要なステップをすべて実行する
OleSave
ヘルパー関数を呼び出す。そのため、このメソッドを直接呼び出す必要のあるコンテナーアプリケーションはほとんどない。例外は特定のオブジェクトに対してオブジェクトハンドラーを提供するコンテナーである。特に、コンテナーアプリケーションはオブジェクトの
CLSID を取得してそれを使ってレジストリからクラス固有の情報を取得するべきではない。代わりに IOleObject および
IDataObject インターフェースを使用して、オブジェクトから直接クラス固有の情報を取得すべきである。実装者へのメモ
通常このメソッドの実装はオブジェクトに対する定数 CLSID を単に提供する。ただしオブジェクトの TreatAs
レジストリキーがエミュレーションをサポートするアプリケーションによって設定されている(つまりオブジェクトを別クラスのものとして扱っている)場合、GetClassID
の呼び出しは TreatAs キーで指定された CLSID を提供しなければならない。エミュレーションの詳細については
CoTreatAsClass を参照。オブジェクトが実行状態にあるとき、既定ハンドラーは GetClassID
の実装を呼び出し、それをオブジェクト内の実装に委譲する。オブジェクトが実行中でないとき、既定ハンドラーは代わりに ReadClassStg
関数を呼び出してオブジェクトのストレージに保存された CLSID
を読み取る。オブジェクト用のカスタムハンドラーを書く場合、このメソッドを既定ハンドラーの実装に単純に委譲したいこともあるだろう(OleCreateDefaultHandler
を参照)。
URL モニカに関する注意 このメソッドは CLSID_StdURLMoniker を返す。

情報

プラグイン / モジュールcom_misc.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の com_misc.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_com_misc_gen2.hs