ISimilarityTraitsMappedView
COM公式ドキュメント
RDC アプリケーションが similarity traits テーブル ファイルのマップド ビューを操作するために実装できるメソッドを提供します。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
similarity traits テーブル ファイルのマップド ビュー内にあるダーティ ページをディスクに書き込みます。
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
similarity traits テーブル ファイルのマップド ビューをアンマップします。
戻り値
このメソッドは常に S_OK を返します。
similarity traits テーブル ファイルのマップド ビューに関する情報を返します。
| index | ULONGLONG | in | マップド ビューにマップされる、基になるファイル データの開始ファイル オフセット(バイト単位)。 |
| dirty | BOOL | in | TRUE が指定された場合、現在マップされているビュー内のデータが変更されたことを示します。それ以外の場合、データは変更されていません。このパラメーターは、データをディスクに書き込む必要があるかどうかを判断するために使用できます。 |
| numElements | DWORD | in | マップド ビューにマップされるデータの最小バイト数。 |
| viewInfo | SimilarityMappedViewInfo* | out | マップド ビューに関する情報を格納する SimilarityMappedViewInfo 構造体を受け取る場所へのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラー コードを返します。
解説(Remarks)
マップド ビューには少なくとも numElements バイトが利用可能である必要がありますが、アプリケーションによっては実際にはそれ以上のバイトがマップされる場合があります。データはファイル オフセットに対して 8 バイト境界に整列している必要があります。たとえば、ファイル オフセット 0x8001 のデータは、アドレスを 8 で割った余りが 1 になるメモリ位置にマップされる必要があります。
similarity traits テーブル ファイルのマップド ビューの開始アドレスと終了アドレスを返します。
| mappedPageBegin | BYTE** | out | このビュー用にマップされたデータの開始位置を受け取る場所へのポインター。 |
| mappedPageEnd | BYTE** | out | このビュー用にマップされたデータの終了位置に 1 を加えた値を受け取る場所へのポインター。 |
解説(Remarks)
マップド ビューが存在しない場合、*mappedPageBegin はゼロに設定される必要があります。それ以外の場合、*mappedPageBegin は有効なポインターに設定され、*mappedPageBegin - *mappedPageEnd はマップされた領域のサイズ(バイト単位)に等しくなります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ISimilarityTraitsMappedView "{96236A7C-9DBC-11DA-9E3F-0011114AE311}" #usecom global ISimilarityTraitsMappedView IID_ISimilarityTraitsMappedView "{96236A95-9DBC-11DA-9E3F-0011114AE311}" #comfunc global ISimilarityTraitsMappedView_Flush 3 #comfunc global ISimilarityTraitsMappedView_Unmap 4 #comfunc global ISimilarityTraitsMappedView_Get 5 int64,int,int,var #comfunc global ISimilarityTraitsMappedView_GetView 6 var,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_ISimilarityTraitsMappedView "{96236A7C-9DBC-11DA-9E3F-0011114AE311}" #usecom global ISimilarityTraitsMappedView IID_ISimilarityTraitsMappedView "{96236A95-9DBC-11DA-9E3F-0011114AE311}" #comfunc global ISimilarityTraitsMappedView_Flush 3 #comfunc global ISimilarityTraitsMappedView_Unmap 4 #comfunc global ISimilarityTraitsMappedView_Get 5 int64,int,int,sptr #comfunc global ISimilarityTraitsMappedView_GetView 6 sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。