Win32 API 日本語リファレンス
ホームNetworking.RemoteDifferentialCompression › ISimilarity

ISimilarity

COM
IID96236a83-9dbc-11da-9e3f-0011114ae311継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

類似度ファイル内にファイルごとの類似度データとファイルIDを格納および取得するためのメソッドを定義します。

メソッド 7

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT CreateTable(LPWSTR path, BOOL truncate, BYTE* securityDescriptor, DWORD recordSize, RdcCreatedTables* isNew)

類似度特性テーブルと類似度ファイルIDテーブルを作成またはオープンします。

pathLPWSTRinテーブルを格納するファイルの名前を指定する、null終端文字列へのポインター。類似度特性テーブルと類似度ファイルIDテーブルは、このファイルの2つの代替ファイルストリームに作成されます。詳細については、ISimilarityFileIdTable::CreateTable および ISimilarityTraitsTable::CreateTable メソッドの path パラメーターを参照してください。
truncateBOOLin新しい類似度特性テーブルと新しい類似度ファイルIDテーブルを常に作成または切り詰める必要がある場合は TRUEFALSE を指定し、これらのテーブルが存在して有効な場合は、それらが使用されることがあります。それ以外の場合、いずれかのテーブルが有効でないか存在しないときは、既存のテーブルはすべて上書きされます。
securityDescriptorBYTE*inファイルをオープンするときに使用するセキュリティ記述子へのポインター。このパラメーターが NULL の場合、ファイルには既定のセキュリティ記述子が割り当てられます。ファイルの既定のセキュリティ記述子内のアクセス制御リスト(ACL)は、ファイルの親ディレクトリから継承されます。詳細については、CreateFile 関数の lpSecurityAttributes パラメーターを参照してください。
recordSizeDWORDin類似度ファイルIDテーブルに格納する各ファイルIDのサイズ(バイト単位)。すべての類似度ファイルIDは同じサイズでなければなりません。有効な範囲は SimilarityFileIdMinSize から SimilarityFileIdMaxSize までです。既存のテーブルをオープンする場合、このパラメーターの値は既存の類似度ファイルIDテーブルのファイルIDサイズと一致している必要があります。一致しない場合、既存のテーブルは有効でないと見なされ、上書きされます。
isNewRdcCreatedTables*outテーブルの状態を表す RdcCreatedTables 列挙値を受け取る変数へのポインター。新しいテーブルが作成された場合、この変数は RDCTABLE_New を受け取ります。既存のテーブルが使用された場合、この変数は RDCTABLE_Existing を受け取ります。このメソッドが失敗した場合、この変数は RDCTABLE_InvalidOrUnknown を受け取ります。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

一方のテーブルは正常に作成またはオープンできても、もう一方が作成またはオープンできない場合、両方のテーブルが有効でないとマークされ、isNew パラメーターが指す変数は RDCTABLE_InvalidOrUnknown を受け取ります。

vtbl 4 HRESULT CreateTableIndirect(ISimilarityTraitsMapping* mapping, IRdcFileWriter* fileIdFile, BOOL truncate, DWORD recordSize, RdcCreatedTables* isNew)

RDCアプリケーションによる ISimilarityTraitsMapping インターフェイスと IRdcFileWriter インターフェイスの実装を使用して、類似度特性テーブルと類似度ファイルIDテーブルを作成またはオープンします。

mappingISimilarityTraitsMapping*in類似度特性テーブルをファイルに書き込むように初期化された ISimilarityTraitsMapping インターフェイスポインター。
fileIdFileIRdcFileWriter*inファイルIDテーブルをファイルに書き込むように初期化された IRdcFileWriter インターフェイスポインター。
truncateBOOLin新しい類似度特性テーブルと新しい類似度ファイルIDテーブルを常に作成または切り詰める必要がある場合は TRUEFALSE を指定し、これらのテーブルが存在して有効な場合は、それらが使用されることがあります。それ以外の場合、いずれかのテーブルが有効でないか存在しないときは、既存のテーブルはすべて上書きされます。
recordSizeDWORDin類似度ファイルIDテーブルに格納する各ファイルIDのサイズ(バイト単位)。すべての類似度ファイルIDは同じサイズでなければなりません。有効な範囲は SimilarityFileIdMinSize から SimilarityFileIdMaxSize までです。既存のテーブルをオープンする場合、このパラメーターの値は既存の類似度ファイルIDテーブルのファイルIDサイズと一致している必要があります。一致しない場合、既存のテーブルは有効でないと見なされ、上書きされます。
isNewRdcCreatedTables*outテーブルの状態を表す RdcCreatedTables 列挙値を受け取る変数へのポインター。新しいテーブルが作成された場合、この変数は RDCTABLE_New を受け取ります。既存のテーブルが使用された場合、この変数は RDCTABLE_Existing を受け取ります。このメソッドが失敗した場合、この変数は RDCTABLE_InvalidOrUnknown を受け取ります。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

一方のテーブルは正常に作成またはオープンできても、もう一方が作成またはオープンできない場合、両方のテーブルが有効でないとマークされ、isNew パラメーターが指す変数は RDCTABLE_InvalidOrUnknown を受け取ります。

vtbl 5 HRESULT CloseTable(BOOL isValid)

類似度ファイル内のテーブルを閉じます。

isValidBOOLin類似度特性テーブルと類似度ファイルIDテーブルを閉じるときに削除する必要がある場合は FALSE。それ以外の場合は TRUE

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

isValid パラメーターに FALSE を指定した場合、削除されるのはテーブルのみで、類似度ファイル自体は削除されません。類似度ファイルの削除は呼び出し元の責任です。

CloseTable メソッドが戻るとき、このメソッドがエラーコードを返した場合でも、テーブルは必ず閉じられます。

vtbl 6 HRESULT Append(SimilarityFileId* similarityFileId, SimilarityData* similarityData)

類似度ファイル内のテーブルにファイルIDと類似度データ情報を追加します。

similarityFileIdSimilarityFileId*in類似度ファイルIDテーブルに追加する SimilarityFileId 構造体へのポインター。
similarityDataSimilarityData*in類似度特性テーブルに追加する SimilarityData 構造体へのポインター。

戻り値

成功した場合は S_OK を、失敗した場合はエラーを表す HRESULT を返します。

このメソッドは次のエラーコードを返すこともあります。

解説(Remarks)

このメソッドが失敗した場合、類似度ファイルIDテーブルと類似度特性テーブルは破損しているとマークされ、アプリケーションによって再構築する必要があります。アプリケーションは破損したテーブルを閉じ、新しいテーブルを作成しなければなりません。

vtbl 7 HRESULT FindSimilarFileId(SimilarityData* similarityData, WORD numberOfMatchesRequired, DWORD resultsSize, IFindSimilarResults** findSimilarResults)

指定したファイルに類似するファイルの一覧を返します。

similarityDataSimilarityData*inファイルの類似度情報を含む SimilarityData 構造体へのポインター。
numberOfMatchesRequiredWORDinTBD
resultsSizeDWORDinfindSimilarResults パラメーターが指す IFindSimilarResults オブジェクトに格納できるファイルIDの数。
findSimilarResultsIFindSimilarResults**out返される IFindSimilarResults インターフェイスポインターを受け取る場所へのポインター。呼び出し元は、このインターフェイスが不要になったら解放する必要があります。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

findSimilarResults パラメーターで返されるファイルIDには、既に削除されたファイルのIDが含まれる場合があります。

vtbl 8 HRESULT CopyAndSwap(ISimilarity* newSimilarityTables, ISimilarityReportProgress* reportProgress)

既存の類似度特性テーブルと既存の類似度ファイルIDテーブルのコピーを作成し、内部ポインターを入れ替えて、既存のテーブルを削除します。

newSimilarityTablesISimilarity*inテーブルの一時的なコピーの作成に使用される、一時的な ISimilarity オブジェクトへの省略可能なポインター。CopyAndSwap メソッドを呼び出す前に、呼び出し元は CreateTable メソッドを呼び出して一時テーブルを作成する必要があります。戻った後、呼び出し元は CloseTable メソッドを呼び出して一時テーブルを閉じる必要があります。
reportProgressISimilarityReportProgress*inコピーと入れ替え操作の進行状況に関する情報を受け取り、アプリケーションがコピー操作を停止できるようにする、ISimilarityReportProgress オブジェクトへの省略可能なポインター。呼び出し元は、このインターフェイスが不要になったら解放する必要があります。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 9 HRESULT GetRecordCount(DWORD* recordCount)

類似度ファイル内の類似度ファイルIDテーブルに格納されているレコード数を取得します。

recordCountDWORD*outレコード数を受け取る変数へのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_ISimilarity "{96236A83-9DBC-11DA-9E3F-0011114AE311}"
#usecom global ISimilarity IID_ISimilarity "{}"
#comfunc global ISimilarity_CreateTable          3 wstr,int,var,int,var
#comfunc global ISimilarity_CreateTableIndirect  4 sptr,sptr,int,int,var
#comfunc global ISimilarity_CloseTable           5 int
#comfunc global ISimilarity_Append               6 var,var
#comfunc global ISimilarity_FindSimilarFileId    7 var,int,int,sptr
#comfunc global ISimilarity_CopyAndSwap          8 sptr,sptr
#comfunc global ISimilarity_GetRecordCount       9 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。