IBDAComparable
COM公式ドキュメント
このトピックは、Update Rollup 2 for Microsoft Windows XP Media Center Edition 2005 以降に適用されます。
解説(Remarks)
このインターフェイスのインターフェイス識別子 (IID) を宣言するには、__uuidof 演算子を使用します: __uuidof(IBDAComparable)。
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
このトピックは、Update Rollup 2 for Microsoft Windows XP Media Center Edition 2005 以降に適用されます。
| CompareTo | IDispatch* | in | IBDAComparable インターフェイスを実装するオブジェクトと比較する対象オブジェクトの IDispatch インターフェイスへのポインター。 |
| Result | INT* | out | 比較結果を受け取る変数へのポインター。結果が 0 の場合、2 つのオブジェクトは同一です。結果が 0 以外の場合、2 つのオブジェクトは同一ではありません。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
解説(Remarks)
このメソッドは、2 つのオブジェクトが同じチューニングプロパティを含むかどうかを判定するために比較します。比較における 1 つ目のオブジェクトは、メソッドが呼び出された IBDAComparable インターフェイスを実装するオブジェクトです。CompareTo パラメーターが 2 つ目のオブジェクトを指定します。
このメソッドは、2 つのオブジェクトおよびそれらに関連付けられたオブジェクトのすべてのチューニングプロパティを比較します。これに対し、CompareEquivalent メソッドはこれらのプロパティの一部のみを比較します。
たとえば DirectShow は、tune request オブジェクトに対する IBDAComparable::CompareExact メソッドを、チューニングスペースとロケーターの両方を比較に含めるように実装しています。したがって、2 つの DVB のチューン要求は、両方が同じ DVB URL(同じ original network ID、transport stream ID、service ID を持つ)にチューニングし、かつ同じ変調方式を持つ場合にのみ同一となります。
CompareEquivalent メソッドは、2 つのオブジェクトが同等のチューニング情報を含むかどうかを判定するために比較します。
| CompareTo | IDispatch* | in | IBDAComparable インターフェイスを実装するオブジェクトと比較する対象オブジェクトの IDispatch インターフェイスへのポインター。 |
| dwFlags | DWORD | in | 既定の同等性比較を変更するかどうかを指定します。このパラメーターを 0 に設定すると既定の動作が呼び出されます。このパラメーターを 1 つ以上の BDA_Comp_Flags 列挙値のビットごとの OR に設定すると、既定の動作が上書きされます。 |
| Result | INT* | out | 比較結果を受け取ります。結果が 0 の場合、2 つのオブジェクトは同等です。結果が 0 以外の場合、2 つのオブジェクトは同等ではありません。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
解説(Remarks)
このメソッドは、2 つのオブジェクトが同等のチューニングプロパティを持つかどうかを判定するために比較します。比較における 1 つ目のオブジェクトは、メソッドが呼び出された IBDAComparable インターフェイスを実装するオブジェクトです。CompareTo パラメーターが 2 つ目のオブジェクトを指定します。
2 つのオブジェクトが同等のチューニング情報を含むかどうかを判定するために、このメソッドは 2 つのオブジェクトおよびそれらに関連付けられたオブジェクトのチューニングプロパティの一部を比較します。これに対し、CompareExact メソッドはこれらのプロパティすべてを比較します。
いずれかのオブジェクトの情報が同じコンテンツにチューニングする場合、そのチューニング情報は同等です。同等性比較の実装はオブジェクトの種類によって異なります。
たとえば DirectShow は、tune request オブジェクトに対する IBDAComparable::CompareEquivalent メソッドを、既定の比較にチューニングスペースを含める一方でロケーターは含めないように実装しています。したがって、2 つの DVB のチューン要求は、両方が同じ DVB URL(同じ original network ID、transport stream ID、service ID を持つ)にチューニングする場合、同じ変調方式を持つかどうかにかかわらず同等となります。
このトピックは、Update Rollup 2 for Microsoft Windows XP Media Center Edition 2005 以降に適用されます。
| Result | LONGLONG* | out | ハッシュ操作の結果を受け取ります。この結果は、他のオブジェクトとの比較に含める、オブジェクトおよびそれに関連付けられたオブジェクトのチューニングプロパティに対するハッシュコードです。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
解説(Remarks)
このメソッドは、IBDAComparable インターフェイスを実装するオブジェクトおよびそれに関連付けられたオブジェクトのチューニングプロパティの値からハッシュコードを生成します。
呼び出し元は、得られたハッシュコードを同じ種類の別のオブジェクトのハッシュコードと比較することで、2 つのオブジェクトが同じチューニング情報を含むかどうかを判定できます。ハッシュコードには、オブジェクトおよびそれに関連付けられたオブジェクトのチューニングプロパティが取り込まれます。2 つのオブジェクトのハッシュコードが同一であれば、2 つのオブジェクトは同じチューニング情報を含みます。
このトピックは、Update Rollup 2 for Microsoft Windows XP Media Center Edition 2005 以降に適用されます。
| PartialResult | LONGLONG | in | メソッドが生成するハッシュコードと組み合わせる中間ハッシュコードを指定します。通常、この値は HashExactIncremental または HashExact のいずれかへの以前の呼び出しによって生成されたものです。 |
| Result | LONGLONG* | out | ハッシュ操作の結果を受け取ります。この結果は、他のオブジェクトとの比較に含める、オブジェクトおよびそれに関連付けられたオブジェクトのチューニングプロパティに対するハッシュコードです。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
解説(Remarks)
このメソッドは、IBDAComparable インターフェイスを実装するオブジェクトおよびそれに関連付けられたオブジェクトのチューニングプロパティの値からハッシュコードを生成します。
このメソッドを PartialResult の値 0 で呼び出すと、HashExact を呼び出した場合と同じ結果が得られます。
このトピックは、Update Rollup 2 for Microsoft Windows XP Media Center Edition 2005 以降に適用されます。
| dwFlags | DWORD | in | 既定でハッシュコードに取り込むプロパティの一部を変更するかどうかを指定します。このパラメーターを 0 に設定すると既定の動作が呼び出されます。このパラメーターを 1 つ以上の BDA_Comp_Flags 列挙値のビットごとの OR に設定すると、既定の動作が上書きされます。 |
| Result | LONGLONG* | out | ハッシュ操作の結果を受け取る変数へのポインター。この結果は、他のオブジェクトとの比較に含める、オブジェクトおよびそれに関連付けられたオブジェクトのチューニングプロパティの一部に対するハッシュコードです。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
解説(Remarks)
このメソッドは、IBDAComparable インターフェイスを実装するオブジェクトおよびそれに関連付けられたオブジェクトのチューニングプロパティの一部からハッシュコードを生成します。
呼び出し元は、得られたハッシュコードを同じ種類の別のオブジェクトのハッシュコードと比較することで、2 つのオブジェクトが同等のチューニング情報を含むかどうかを判定できます。ハッシュコードには、プロパティが別のオブジェクトのプロパティと同等かどうかを判定するために必要な、オブジェクトおよびそれに関連付けられたオブジェクトのプロパティの一部のみが取り込まれます。2 つのオブジェクトのハッシュコードが同一であれば、2 つのオブジェクトは同等のチューニング情報を含みます。
このトピックは、Update Rollup 2 for Microsoft Windows XP Media Center Edition 2005 以降に適用されます。
| PartialResult | LONGLONG | in | メソッドが生成するハッシュコードと組み合わせる中間ハッシュコードを指定します。通常、この値は HashEquivalentIncremental または HashEquivalent のいずれかへの以前の呼び出しによって生成されたものです。 |
| dwFlags | DWORD | in | 既定でハッシュコードに取り込むプロパティの一部を変更するかどうかを指定します。このパラメーターを 0 に設定すると既定の動作が呼び出されます。このパラメーターを 1 つ以上の BDA_Comp_Flags 列挙値のビットごとの OR に設定すると、既定の動作が上書きされます。 |
| Result | LONGLONG* | out | ハッシュ操作の結果を受け取る変数へのポインター。この結果は、他のオブジェクトとの比較に含める、オブジェクトおよびそれに関連付けられたオブジェクトのチューニングプロパティの一部に対するハッシュコードです。 |
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合はエラーコードを返します。
解説(Remarks)
このメソッドは、IBDAComparable インターフェイスを実装するオブジェクトおよびそれに関連付けられたオブジェクトのチューニングプロパティの一部からハッシュコードを生成します。
このメソッドを PartialResult の値 0 で呼び出すと、HashEquivalent を呼び出した場合と同じ結果が得られます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IBDAComparable "{B34505E0-2F0E-497B-80BC-D43F3B24ED7F}" #usecom global IBDAComparable IID_IBDAComparable "{}" #comfunc global IBDAComparable_CompareExact 3 sptr,var #comfunc global IBDAComparable_CompareEquivalent 4 sptr,int,var #comfunc global IBDAComparable_HashExact 5 var #comfunc global IBDAComparable_HashExactIncremental 6 int64,var #comfunc global IBDAComparable_HashEquivalent 7 int,var #comfunc global IBDAComparable_HashEquivalentIncremental 8 int64,int,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IBDAComparable "{B34505E0-2F0E-497B-80BC-D43F3B24ED7F}" #usecom global IBDAComparable IID_IBDAComparable "{}" #comfunc global IBDAComparable_CompareExact 3 sptr,sptr #comfunc global IBDAComparable_CompareEquivalent 4 sptr,int,sptr #comfunc global IBDAComparable_HashExact 5 sptr #comfunc global IBDAComparable_HashExactIncremental 6 int64,sptr #comfunc global IBDAComparable_HashEquivalent 7 int,sptr #comfunc global IBDAComparable_HashEquivalentIncremental 8 int64,int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。