ISimilarityFileIdTable
COM公式ドキュメント
類似性ファイル ID 情報を格納および取得するためのメソッドを定義します。
メソッド 7
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
類似性ファイル ID テーブルを作成または開きます。
| path | LPWSTR | in | 類似性ファイル ID テーブルを格納するファイルの名前を指定する、null で終わる文字列へのポインター。このファイル名の末尾には、代替ストリーム名 ":FileId" が付加されます。詳細については、Naming a File を参照してください。 |
| truncate | BOOL | in | 新しい類似性ファイル ID テーブルを常に作成または切り詰める場合は TRUE。FALSE を指定した場合、テーブルが存在して有効であれば使用されることがあります。それ以外の場合、テーブルが有効でないか存在しないときは、既存のテーブルが上書きされます。 |
| securityDescriptor | BYTE* | in | ファイルを開くときに使用するセキュリティ記述子へのポインター。このパラメーターが NULL の場合、ファイルには既定のセキュリティ記述子が割り当てられます。ファイルの既定のセキュリティ記述子内のアクセス制御リスト (ACL) は、ファイルの親ディレクトリから継承されます。詳細については、CreateFile 関数の lpSecurityAttributes パラメーターを参照してください。 |
| recordSize | DWORD | in | 類似性ファイル ID テーブルに格納されるファイル ID のサイズ (バイト単位)。すべてのファイル ID は同じサイズでなければなりません。有効な範囲は SimilarityFileIdMinSize から SimilarityFileIdMaxSize までです。既存の類似性ファイル ID テーブルを開く場合、このパラメーターの値は既存テーブルのファイル ID サイズと一致しなければなりません。一致しない場合、既存テーブルは有効でないと見なされ、上書きされます。 |
| isNew | RdcCreatedTables* | out | 類似性ファイル ID テーブルの状態を表す RdcCreatedTables 列挙値を受け取る変数へのポインター。新しいテーブルが作成された場合、この変数は RDCTABLE_New を受け取ります。既存のテーブルが使用された場合、この変数は RDCTABLE_Existing を受け取ります。このメソッドが失敗した場合、この変数は RDCTABLE_InvalidOrUnknown を受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
既存のテーブルを開く場合、テーブルは有効でなければならず、recordSize パラメーターの値は既存テーブルのレコードサイズと一致しなければなりません。そうでない場合、truncate パラメーターに FALSE を指定していても、既存テーブルは上書きされます。
RDC アプリケーションによる IRdcFileWriter インターフェースの実装を使用して、類似性ファイル ID テーブルを作成または開きます。
| fileIdFile | IRdcFileWriter* | in | ファイル ID テーブルをファイルに書き込むように初期化された IRdcFileWriter インターフェースポインター。 |
| truncate | BOOL | in | 新しい類似性ファイル ID テーブルを常に作成または切り詰める場合は TRUE。FALSE を指定した場合、テーブルが存在して有効であれば使用されることがあります。それ以外の場合、テーブルが有効でないか存在しないときは、既存のテーブルが上書きされます。 |
| recordSize | DWORD | in | 類似性ファイル ID テーブルに格納されるファイル ID のサイズ (バイト単位)。すべてのファイル ID は同じサイズでなければなりません。有効な範囲は SimilarityFileIdMinSize から SimilarityFileIdMaxSize までです。既存の類似性ファイル ID テーブルを開く場合、このパラメーターの値は既存テーブルのファイル ID サイズと一致しなければなりません。一致しない場合、既存テーブルは有効でないと見なされ、上書きされます。 |
| isNew | RdcCreatedTables* | out | 類似性ファイル ID テーブルの状態を表す RdcCreatedTables 列挙値を受け取る変数へのポインター。新しいテーブルが作成された場合、この変数は RDCTABLE_New を受け取ります。既存のテーブルが使用された場合、この変数は RDCTABLE_Existing を受け取ります。このメソッドが失敗した場合、この変数は RDCTABLE_InvalidOrUnknown を受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
既存のテーブルを開く場合、テーブルは有効でなければならず、recordSize パラメーターの値は既存テーブルのレコードサイズと一致しなければなりません。そうでない場合、truncate パラメーターに FALSE を指定していても、既存テーブルは上書きされます。
類似性ファイル ID テーブルを閉じます。
| isValid | BOOL | in | 類似性ファイル ID テーブルを閉じるときに削除する場合は FALSE。それ以外の場合は TRUE。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
isValid パラメーターに FALSE を指定した場合、削除されるのはテーブルのみで、類似性ファイルは削除されません。類似性ファイルの削除は呼び出し元の責任です。
CloseTable メソッドが戻るとき、このメソッドがエラーコードを返した場合でも、テーブルは常に閉じられます。
ファイル ID を類似性ファイル ID テーブルに追加します。
| similarityFileId | SimilarityFileId* | in | 類似性ファイル ID テーブルに追加するファイル ID。 |
| similarityFileIndex | DWORD* | out | 類似性ファイル ID テーブル内のファイル ID のエントリのファイルインデックスを受け取る変数へのポインター。 |
戻り値
成功した場合は S_OK を、失敗した場合はエラーを示す HRESULT を返します。
このメソッドは、次のエラーコードを返すこともあります。
解説(Remarks)
Append メソッドが失敗した場合、類似性ファイル ID テーブルは破損としてマークされ、再構築する必要があります。
類似性ファイル ID テーブル内の指定されたファイルインデックスに対応するファイル ID を取得します。
| similarityFileIndex | DWORD | in | ISimilarityFileIdTable::Append メソッドによってファイル ID に対して以前に返されたファイルインデックス。 |
| similarityFileId | SimilarityFileId* | out | ファイル ID を受け取る変数へのポインター。ファイルが無効としてマークされている場合、ファイル ID にはゼロが格納されます。 |
戻り値
成功した場合は S_OK を、失敗した場合はエラーを示す HRESULT を返します。
このメソッドは、次のエラーコードを返すこともあります。
類似性ファイル ID テーブル内のファイル ID を無効としてマークします。
| similarityFileIndex | DWORD | in | 類似性ファイル ID テーブル内のファイル ID のエントリのインデックス。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
ファイル ID は、対応する SimilarityFileId 構造体の内容をすべてゼロに設定することで、無効としてマークされます。無効としてマークされたファイル ID は、ISimilarity::FindSimilarFileId メソッドによって返される結果には含まれません。
類似性ファイル ID テーブルに格納されているレコードの数を取得します。
| recordCount | 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_ISimilarityFileIdTable "{96236A7F-9DBC-11DA-9E3F-0011114AE311}" #usecom global ISimilarityFileIdTable IID_ISimilarityFileIdTable "{}" #comfunc global ISimilarityFileIdTable_CreateTable 3 wstr,int,var,int,var #comfunc global ISimilarityFileIdTable_CreateTableIndirect 4 sptr,int,int,var #comfunc global ISimilarityFileIdTable_CloseTable 5 int #comfunc global ISimilarityFileIdTable_Append 6 var,var #comfunc global ISimilarityFileIdTable_Lookup 7 int,var #comfunc global ISimilarityFileIdTable_Invalidate 8 int #comfunc global ISimilarityFileIdTable_GetRecordCount 9 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ISimilarityFileIdTable "{96236A7F-9DBC-11DA-9E3F-0011114AE311}" #usecom global ISimilarityFileIdTable IID_ISimilarityFileIdTable "{}" #comfunc global ISimilarityFileIdTable_CreateTable 3 wstr,int,sptr,int,sptr #comfunc global ISimilarityFileIdTable_CreateTableIndirect 4 sptr,int,int,sptr #comfunc global ISimilarityFileIdTable_CloseTable 5 int #comfunc global ISimilarityFileIdTable_Append 6 sptr,sptr #comfunc global ISimilarityFileIdTable_Lookup 7 int,sptr #comfunc global ISimilarityFileIdTable_Invalidate 8 int #comfunc global ISimilarityFileIdTable_GetRecordCount 9 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。