ISimilarityTraitsTable
COM公式ドキュメント
ファイルごとの類似性データを格納し、類似性の検索を実行するためのメソッドを定義します。
メソッド 7
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
類似性トレイトテーブルを作成または開きます。
| path | LPWSTR | in | 類似性トレイトテーブルを格納するファイルの名前を指定する、null で終わる文字列へのポインター。代替ストリーム名 ":Traits" がこのファイル名の末尾に付加されます。詳細については、Naming a File を参照してください。 |
| truncate | BOOL | in | 新しい類似性トレイトテーブルを常に作成または切り詰める場合は TRUE。FALSE を指定し、テーブルが存在して有効な場合は、それが使用されることがあります。それ以外の場合、テーブルが有効でないか存在しないときは、既存のテーブルが上書きされます。 |
| securityDescriptor | BYTE* | in | ファイルを開くときに使用するセキュリティ記述子へのポインター。このパラメーターが NULL の場合、ファイルには既定のセキュリティ記述子が割り当てられます。ファイルの既定のセキュリティ記述子内のアクセス制御リスト (ACL) は、ファイルの親ディレクトリから継承されます。詳細については、CreateFile 関数の lpSecurityAttributes パラメーターを参照してください。 |
| isNew | RdcCreatedTables* | out | 類似性トレイトテーブルの状態を示す RdcCreatedTables 列挙値を受け取る変数へのポインター。新しいテーブルが作成された場合、この変数は RDCTABLE_New を受け取ります。既存のテーブルが使用された場合、この変数は RDCTABLE_Existing を受け取ります。このメソッドが失敗した場合、この変数は RDCTABLE_InvalidOrUnknown を受け取ります。 |
戻り値
このメソッドが成功した場合、S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
既存の類似性トレイトテーブルを開く場合、テーブルは有効でなければなりません。そうでない場合、truncate パラメーターに FALSE を指定していても、既存のテーブルは上書きされます。
RDC アプリケーションによる ISimilarityTraitsMapping インターフェイスの実装を使用して、類似性トレイトテーブルを作成または開きます。
| mapping | ISimilarityTraitsMapping* | in | 類似性トレイトテーブルをファイルに書き込むために初期化された ISimilarityTraitsMapping インターフェイスポインター。 |
| truncate | BOOL | in | 新しい類似性トレイトテーブルを常に作成または切り詰める場合は TRUE。FALSE を指定し、テーブルが存在して有効な場合は、それが使用されることがあります。それ以外の場合、テーブルが有効でないか存在しないときは、既存のテーブルが上書きされます。 |
| isNew | RdcCreatedTables* | out | 類似性トレイトテーブルの状態を示す RdcCreatedTables 列挙値を受け取る変数へのポインター。新しいテーブルが作成された場合、この変数は RDCTABLE_New を受け取ります。既存のテーブルが使用された場合、この変数は RDCTABLE_Existing を受け取ります。このメソッドが失敗した場合、この変数は RDCTABLE_InvalidOrUnknown を受け取ります。 |
戻り値
このメソッドが成功した場合、S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
既存の類似性トレイトテーブルを開く場合、テーブルは有効でなければなりません。そうでない場合、truncate パラメーターに FALSE を指定していても、既存のテーブルは上書きされます。
類似性トレイトテーブルを閉じます。
| isValid | BOOL | in | 類似性トレイトテーブルを閉じるときに削除する場合は FALSE。それ以外の場合は TRUE。 |
戻り値
このメソッドが成功した場合、S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
isValid パラメーターに FALSE を指定した場合、削除されるのはテーブルのみで、類似性ファイルは削除されません。類似性ファイルの削除は呼び出し元の責任です。
CloseTable メソッドが戻るとき、このメソッドがエラーコードを返す場合でも、テーブルは常に閉じられます。
SimilarityData 構造体を類似性トレイトテーブルに追加します。
| data | SimilarityData* | in | 類似性トレイトテーブルに追加する SimilarityData 構造体。 |
| fileIndex | DWORD | in | SimilarityData 構造体を挿入する、類似性トレイトテーブル内のインデックス。 |
戻り値
このメソッドが成功した場合、S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
アプリケーションは、ゼロより大きく、常に増加する fileIndex 値を指定する必要があります。そうでない場合、このメソッドは E_INVALIDARG エラーコードを返します。
指定したファイルに類似するファイルの一覧を返します。一覧内の結果は、最も類似するファイルを先頭として、類似性の順に並べ替えられます。
| similarityData | SimilarityData* | in | ファイルの類似性情報を格納する SimilarityData 構造体へのポインター。 |
| numberOfMatchesRequired | WORD | in | 未定。 |
| findSimilarFileIndexResults | FindSimilarFileIndexResults* | out | 要求された情報を格納する FindSimilarFileIndexResults 構造体の配列を受け取るバッファーへのポインター。 |
| resultsSize | DWORD | in | findSimilarFileIndexResults パラメーターが指すバッファーに格納できる FindSimilarFileIndexResults 構造体の数。 |
| resultsUsed | DWORD* | out | findSimilarFileIndexResults パラメーターが指すバッファーに返された FindSimilarFileIndexResults 構造体の数。 |
戻り値
このメソッドが成功した場合、S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
findSimilarFileIndexResults パラメーターで返されるファイルの一覧には、削除済みのファイルが含まれることがあります。
類似性トレイトテーブルから類似性データを取得します。
| similarityTableDumpState | ISimilarityTableDumpState** | out | 返される ISimilarityTableDumpState インターフェイスポインターを受け取る場所への省略可能なポインター。呼び出し元は、このインターフェイスが不要になったら解放する必要があります。 |
戻り値
このメソッドが成功した場合、S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
BeginDump メソッドは、デバッグとガベージコレクションに使用されます。これは、アプリケーションが類似性トレイトテーブル内のすべてのエントリを効率的にダンプできるようにするイテレーターオブジェクトへのインターフェイスポインターを返します。
類似性トレイトテーブルに格納された最後のエントリのインデックスを取得します。
| fileIndex | DWORD* | out | 最後のエントリのインデックスを受け取る変数へのポインター。 |
戻り値
このメソッドが成功した場合、S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ISimilarityTraitsTable "{96236A7E-9DBC-11DA-9E3F-0011114AE311}" #usecom global ISimilarityTraitsTable IID_ISimilarityTraitsTable "{}" #comfunc global ISimilarityTraitsTable_CreateTable 3 wstr,int,var,var #comfunc global ISimilarityTraitsTable_CreateTableIndirect 4 sptr,int,var #comfunc global ISimilarityTraitsTable_CloseTable 5 int #comfunc global ISimilarityTraitsTable_Append 6 var,int #comfunc global ISimilarityTraitsTable_FindSimilarFileIndex 7 var,int,var,int,var #comfunc global ISimilarityTraitsTable_BeginDump 8 sptr #comfunc global ISimilarityTraitsTable_GetLastIndex 9 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ISimilarityTraitsTable "{96236A7E-9DBC-11DA-9E3F-0011114AE311}" #usecom global ISimilarityTraitsTable IID_ISimilarityTraitsTable "{}" #comfunc global ISimilarityTraitsTable_CreateTable 3 wstr,int,sptr,sptr #comfunc global ISimilarityTraitsTable_CreateTableIndirect 4 sptr,int,sptr #comfunc global ISimilarityTraitsTable_CloseTable 5 int #comfunc global ISimilarityTraitsTable_Append 6 sptr,int #comfunc global ISimilarityTraitsTable_FindSimilarFileIndex 7 sptr,int,sptr,int,sptr #comfunc global ISimilarityTraitsTable_BeginDump 8 sptr #comfunc global ISimilarityTraitsTable_GetLastIndex 9 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。