IROTData::GetComparisonData メソッド (objidl.h)
モニカーから、別のモニカーに対して等しいかどうかをモニカーをテストするために使用できるデータを取得します。
構文
HRESULT GetComparisonData(
[out] byte *pbData,
[in] ULONG cbMax,
[out] ULONG *pcbData
);
パラメーター
[out] pbData
比較データを受け取るバッファーへのポインター。
[in] cbMax
pbData で指定されたバッファーの長さ。
[out] pcbData
比較データの長さを受け取る変数へのポインター。
戻り値
このメソッドは、E_OUTOFMEMORYおよびS_OK標準の戻り値を返すことができます。
注釈
GetComparisonData メソッドは、主に実行中のオブジェクト テーブル (ROT) によって呼び出されます。 メソッドによって返される比較データは、別のモニカーによって返される比較データに対してバイナリの等価性をテストします。 pcbData パラメーターを使用すると、ROT は取得したデータの末尾を見つけることができます。
実装者へのメモ
返される比較データは、モニカーを一意に識別する必要があり、できるだけ短いままである必要があります。 比較データには、モニカーの内部状態に関する情報とモニカーの CLSID が含まれている必要があります。 たとえば、ファイル モニカーの比較データには、モニカー内に格納されているパス名と、ファイル モニカー実装の CLSID が含まれます。 これにより、類似した状態情報を格納するが、異なるモニカー クラスのインスタンスである 2 つのモニカーを区別できます。モニカーの比較データの長さは 2048 バイトを超えることはできません。 複合モニカーの場合、すべてのコンポーネントの比較データの合計長は 2048 バイトを超えることはできません。そのため、モニカーを複合モニカー内のコンポーネントにできる場合、返される比較データは 2048 バイト未満である必要があります。
比較データが cbMax パラメーターで指定された値より長い場合は、エラーを返す必要があります。 複合モニカーのコンポーネントで GetComparisonData が呼び出されると、 cbMax の値が順番にモニカーごとに小さくなります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | objidl.h |