IRdcLibrary
COM公式ドキュメント
RDC を使用するための主要なインターフェイスです。
メソッド 7
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
指定されたファイルサイズに対する再帰の最大レベルを計算します。
| fileSize | ULONGLONG | in | ファイルのおおよそのサイズ。 |
| depth | DWORD* | out | 推奨される最大再帰深度を受け取る ULONG へのポインター。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
シグネチャジェネレーターに必要なパラメーターで初期化された IRdcGeneratorParameters インターフェイスポインターを返します。
| parametersType | GeneratorParametersType | in | 作成されるパラメーターに対するシグネチャジェネレーターの種類を指定します。GeneratorParametersType 列挙体で列挙されます。RDC の初回リリースでは、RDCGENTYPE_FilterMax という 1 種類のみをサポートします。 |
| level | DWORD | in | このパラメーターブロックの再帰レベル。生成されるシグネチャのレベルごとにパラメーターブロックが必要です。有効な範囲は MSRDC_MINIMUM_DEPTH から MSRDC_MAXIMUM_DEPTH までです。 |
| iGeneratorParameters | IRdcGeneratorParameters** | out | IRdcGeneratorParameters インターフェイスポインターを受け取る場所へのポインター。正常に返された場合、インターフェイスは初期化された状態で返されます。呼び出し側はインターフェイスを解放する必要があります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
既存のシリアル化されたパラメーターブロックを開き、そのデータで初期化された IRdcGeneratorParameters インターフェイスポインターを返します。
| size | DWORD | in | シリアル化されたパラメーターブロックのサイズ(バイト単位)。 |
| parametersBlob | BYTE* | in | シリアル化されたパラメーターブロックへのポインター。 |
| iGeneratorParameters | IRdcGeneratorParameters** | out | 返される IRdcGeneratorParameters インターフェイスポインターを受け取る場所へのポインター。呼び出し側はインターフェイスを解放する必要があります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
シリアル化されたパラメーターブロックを作成するには、IRdcGeneratorParameters::Serialize メソッドを使用します。
指定されたレベルのシグネチャを生成するシグネチャジェネレーターを作成します。
| depth | DWORD | in | 生成するシグネチャのレベル数。有効な範囲は MSRDC_MINIMUM_DEPTH から MSRDC_MAXIMUM_DEPTH までです。 |
| iGeneratorParametersArray | IRdcGeneratorParameters** | in | 初期化された IRdcGeneratorParameters インターフェイスポインターの配列へのポインター。各 IRdcGeneratorParameters インターフェイスポインターは、IRdcLibrary::CreateGeneratorParameters または IRdcGenerator::GetGeneratorParameters によって初期化されている必要があります。 |
| iGenerator | IRdcGenerator** | out | 返される IRdcGenerator インターフェイスポインターを受け取る場所へのポインター。呼び出し側はインターフェイスを解放する必要があります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
シグネチャコンパレーターを作成します。
| iSeedSignaturesFile | IRdcFileReader* | in | シード シグネチャを読み取るために初期化された IRdcFileReader インターフェイスポインター。 |
| comparatorBufferSize | DWORD | in | コンパレーターバッファーのサイズを指定します。範囲は MSRDC_MINIMUM_COMPAREBUFFER から MSRDC_MAXIMUM_COMPAREBUFFER までです。 MSRDC_MINIMUM_COMPAREBUFFER (100000)コンパレーターバッファーの最小サイズ。 MSRDC_DEFAULT_COMPAREBUFFER (3200000)コンパレーターバッファーの既定サイズ。comparatorBufferSize に 0(ゼロ)が渡された場合に使用されます。 MSRDC_MAXIMUM_COMPAREBUFFER (1073741824)コンパレーターバッファーの最大サイズ。(1<<30) |
| iComparator | IRdcComparator** | out | IRdcComparator インターフェイスポインターを受け取る場所へのポインター。正常に返された場合、インターフェイスは初期化された状態で返されます。呼び出し側はインターフェイスを解放する必要があります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
呼び出し側は、再帰のレベルごとに個別のシグネチャコンパレーターを作成する必要があります。
アプリケーションがシグネチャファイルの内容をデコードできるようにするシグネチャリーダーを作成します。
| iFileReader | IRdcFileReader* | in | シグネチャを読み取るために初期化された IRdcFileReader インターフェイスポインター。 |
| iSignatureReader | IRdcSignatureReader** | out | IRdcSignatureReader インターフェイスポインターを受け取る場所へのポインター。正常に返された場合、インターフェイスは初期化された状態で返されます。呼び出し側はインターフェイスを解放する必要があります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
インストールされている RDC ランタイムのバージョンと、そのランタイムがサポートする RDC インターフェイスの最も古いバージョンを取得します。
| currentVersion | DWORD* | out | インストールされている RDC のバージョンを受け取る ULONG のアドレス。これは MSRDC_VERSION の値に対応します。 |
| minimumCompatibleAppVersion | DWORD* | out | インストールされている RDC がサポートする最も古い RDC のバージョンを受け取る ULONG のアドレス。これは MSRDC_MINIMUM_COMPATIBLE_APP_VERSION の値に対応します。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IRdcLibrary "{96236A78-9DBC-11DA-9E3F-0011114AE311}" #usecom global IRdcLibrary IID_IRdcLibrary "{96236A85-9DBC-11DA-9E3F-0011114AE311}" #comfunc global IRdcLibrary_ComputeDefaultRecursionDepth 3 int64,var #comfunc global IRdcLibrary_CreateGeneratorParameters 4 int,int,sptr #comfunc global IRdcLibrary_OpenGeneratorParameters 5 int,var,sptr #comfunc global IRdcLibrary_CreateGenerator 6 int,sptr,sptr #comfunc global IRdcLibrary_CreateComparator 7 sptr,int,sptr #comfunc global IRdcLibrary_CreateSignatureReader 8 sptr,sptr #comfunc global IRdcLibrary_GetRDCVersion 9 var,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IRdcLibrary "{96236A78-9DBC-11DA-9E3F-0011114AE311}" #usecom global IRdcLibrary IID_IRdcLibrary "{96236A85-9DBC-11DA-9E3F-0011114AE311}" #comfunc global IRdcLibrary_ComputeDefaultRecursionDepth 3 int64,sptr #comfunc global IRdcLibrary_CreateGeneratorParameters 4 int,int,sptr #comfunc global IRdcLibrary_OpenGeneratorParameters 5 int,sptr,sptr #comfunc global IRdcLibrary_CreateGenerator 6 int,sptr,sptr #comfunc global IRdcLibrary_CreateComparator 7 sptr,int,sptr #comfunc global IRdcLibrary_CreateSignatureReader 8 sptr,sptr #comfunc global IRdcLibrary_GetRDCVersion 9 sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。