IPersist::GetClassID メソッド (objidl.h)
オブジェクトのクラス識別子 (CLSID) を取得します。
構文
HRESULT GetClassID(
[out] CLSID *pClassID
);
パラメーター
[out] pClassID
戻り時に CLSID を受け取る場所へのポインター。 CLSID は、オブジェクトのデータを操作できるコードを定義するオブジェクト クラスを一意に表すグローバル一意識別子 (GUID) です。
戻り値
メソッドが成功した場合、戻り値はS_OK。 それ以外の場合は、E_FAIL。
注釈
GetClassID メソッドは、オブジェクトのクラス識別子 (CLSID) を取得します。これは、オブジェクト固有のコードを呼び出し元のコンテキストに読み込むための後の操作で使用されます。
呼び出し元へのメモ
コンテナー アプリケーションでは、このメソッドを呼び出して、別のクラスとして扱うオブジェクトの元の CLSID を取得できます。 このような呼び出しは、ユーザーがオブジェクトの保存を必要とする編集操作を実行した場合に必要になります。 コンテナーが CLSID として扱いを使用して保存する場合、元のアプリケーションはオブジェクトを編集できなくなります。 通常、この場合、コンテナーは OleSave ヘルパー関数を呼び出し、必要なすべての手順を実行します。 このため、ほとんどのコンテナー アプリケーションでは、このメソッドを直接呼び出す必要はありません。例外は、特定のオブジェクトのオブジェクト ハンドラーを提供するコンテナーです。 特に、コンテナー アプリケーションはオブジェクトの CLSID を取得し、それを使用してレジストリからクラス固有の情報を取得しないでください。 代わりに、コンテナーは IOleObject インターフェイスと IDataObject インターフェイスを使用して、このようなクラス固有の情報を オブジェクトから直接取得する必要があります。
実装者へのメモ
通常、このメソッドの実装では、オブジェクトに定数 CLSID を指定するだけです。 ただし、オブジェクトの TreatAs レジストリ キーがエミュレーションをサポートするアプリケーションによって設定されている場合 (オブジェクトを別のクラスの 1 つとして扱う場合)、 GetClassID の呼び出しで TreatAs キーで指定された CLSID を指定する必要があります。 エミュレーションの詳細については、「 CoTreatAsClass」を参照してください。オブジェクトが実行中の状態の場合、既定のハンドラーは GetClassID の実装を呼び出し、その呼び出しを オブジェクトの実装に委任します。 オブジェクトが実行されていない場合、既定のハンドラーは代わりに ReadClassStg 関数を呼び出して、オブジェクトのストレージに保存されている CLSID を読み取ります。
オブジェクトのカスタム オブジェクト ハンドラーを作成する場合は、このメソッドを既定のハンドラー実装に単に委任できます ( 「OleCreateDefaultHandler」を参照)。
URL モニカーに関するメモ
このメソッドは、CLSID_StdURLMonikerを返します。要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | objidl.h |