IFsrmClassifierModuleImplementation
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
分類子モジュールはこのインターフェイスを実装します。FSRM は分類を実行する際に、モジュールの実装を呼び出します。
メソッド 6
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
分類子の内部ルールが最後に変更された日時を、64 ビットの FILETIME 値で表します。
| lastModified | VARIANT* | out | 分類器が最後に変更された日時を格納した VARIANT を受け取るポインタである。 |
解説(Remarks)
最終変更日時は、この分類子を使用するルールを実行する必要があるかどうかを FSRM が判断するために使用されます。いずれかの分類子がファイルの最終更新日時より新しい日時を返した場合、FSRM はそのファイルに適用可能なルールを再評価します。
分類子が更新されることのない内部ポリシーしか持たない場合は、FsrmNeverModified に相当する値を返すことができます。このような分類子の例としては、ファイルの属性 (パスや所有者など) や内容に基づいて分類を判断するものが挙げられます。
分類の実行ごとに常に再評価が必要なルールに影響する内部ポリシーを分類子が持つ場合は、FsrmAlwaysModified に相当する値を返すことができます。この場合、各ファイルに適用可能なルールは常に評価されます。このような分類子の例としては、FSRM の管理外にある頻繁に変化するポリシー群に基づいて分類を判断するものが挙げられます。FsrmAlwaysModified を返す分類子は、ファイル分類のパフォーマンスに影響します。通常であれば不要なルールの再評価を回避できる最適化を、FSRM がスキップするためです。
分類子が処理する対象となるルールのコレクションと、関連するプロパティ定義を指定します。
| rules | IFsrmCollection* | in | 現在の分類セッション中に使用されるルールのコレクションを表す IFsrmCollection インスタンスです。 |
| propertyDefinitions | IFsrmCollection* | in | 指定されたルールのコレクションから参照されるプロパティ定義のコレクションを表す IFsrmCollection インスタンスです。 |
戻り値
型: HRESULT
このメソッドは次の戻り値を返します。
これら以外の値を返した場合、クライアントアプリケーションは FSRM_E_MODULE_SESSION_INITIALIZATION エラーを受け取ります。
Windows Server 2008 R2: クライアントアプリケーションは FSRM_E_UNEXPECTED エラーを受け取ります。
指定されたプロパティバッグを持つファイルの処理に備えるよう、分類子に指示します。
| propertyBag | IFsrmPropertyBag* | in | 処理対象のファイルに対応するプロパティバッグです。 |
| arrayRuleIds | SAFEARRAY* | in | 処理されるルールの識別子を列挙した 1 つ以上の文字列を格納した、バリアントの SAFEARRAY です。各識別子は、事前の IFsrmClassifierModuleImplementation::UseRulesAndDefinitions メソッドの呼び出しで渡されたルールコレクション内のルールオブジェクトに対応します。ルールオブジェクトは、このコレクションに対する IFsrmCollection::GetById メソッドの呼び出しでこの識別子を使用して取得することもできます。 |
戻り値
このメソッドは次の戻り値を返します。それ以外のエラーについては、実装者は HRESULT エラーコードを返してください。
解説(Remarks)
分類子は、渡されたプロパティバッグに対して IFsrmPropertyBag::SetFileProperty を直接呼び出すことはできません。分類子は代わりに、FSRM によって IFsrmClassifierModuleImplementation::DoesPropertyValueApply メソッドまたは IFsrmClassifierModuleImplementation::GetPropertyValueToApply メソッドが呼び出されたときにプロパティ値を提供します。
IFsrmClassifierModuleImplementation::DoesPropertyValueApply メソッドおよび IFsrmClassifierModuleImplementation::GetPropertyValueToApply メソッドの各呼び出しはルールに関連付けられており、そのルールの識別子は arrayRuleIds パラメーターを通じて渡されます。最適化として、分類子は arrayRuleIds パラメーターで渡されたルール識別子を使用し、OnBeginFile メソッドの呼び出し中に IFsrmClassifierModuleImplementation::DoesPropertyValueApply メソッドまたは IFsrmClassifierModuleImplementation::GetPropertyValueToApply メソッドの応答をあらかじめ計算しておくこともできます。
FSRM_E_INCOMPATIBLE_FORMAT または FSRM_E_FILE_ENCRYPTED が返された場合、FSRM はそのファイルの分類が失敗したとは示しません。それ以外のエラー値が返された場合、FSRM はそのファイルの分類が失敗したことを示します。
IFsrmClassifierModuleImplementation::OnBeginFile メソッドで直近に指定されたファイルに、指定されたプロパティ値が適用されるかどうかを分類子に問い合わせます。
| property | LPWSTR | in | 問い合わせるプロパティの名前です。 |
| value | LPWSTR | in | 問い合わせで確認するプロパティの値です。 |
| applyValue | VARIANT_BOOL* | out | プロパティが適用される場合は VARIANT_TRUE、それ以外の場合は VARIANT_FALSE になります。 |
| idRule | GUID | in | 問い合わせ対象のプロパティ値に関連付けられたルールオブジェクトの識別子です。このルールオブジェクトは、事前の IFsrmClassifierModuleImplementation::UseRulesAndDefinitions メソッドの呼び出しで渡されたルールコレクション内にあります。ルールオブジェクトは、このコレクションに対する IFsrmCollection::GetById メソッドの呼び出しでこの識別子を使用して取得することもできます。 |
| idPropDef | GUID | in | 問い合わせ対象のプロパティに対応するプロパティ定義オブジェクトの識別子です。このプロパティ定義オブジェクトは、事前の IFsrmClassifierModuleImplementation::UseRulesAndDefinitions メソッドの呼び出しで渡されたプロパティ定義コレクション内にあります。プロパティ定義オブジェクトは、このコレクションに対する IFsrmCollection::GetById メソッドの呼び出しでこの識別子を使用して取得することもできます。 |
戻り値
このメソッドは次の戻り値を返します。それ以外のエラーについては、実装者は HRESULT エラーコードを返してください。
解説(Remarks)
このメソッドは、分類子のモジュール定義の IFsrmClassifierModuleDefinition::NeedsExplicitValue プロパティが VARIANT_FALSE の場合に呼び出されます。
分類子の実装では、idRule および idPropDef パラメーターで渡された識別子を使用して、プロパティ値がそのファイルに適用されるかどうかを判断できます。判断に関連するルールやプロパティ定義を必要とする分類子では、IFsrmClassifierModuleImplementation::UseRulesAndDefinitions の呼び出し時に渡された該当のコレクションを実装側でキャッシュしておくことをお勧めします。
FSRM_E_INCOMPATIBLE_FORMAT または FSRM_E_FILE_ENCRYPTED が返された場合、FSRM はそのファイルの分類が失敗したとは示しません。それ以外のエラー値が返された場合、FSRM はそのファイルの分類が失敗したことを示します。
IFsrmClassifierModuleImplementation::OnBeginFile メソッドで直近に指定されたファイルについて、指定されたプロパティに適用すべき値を分類子から取得します。
| property | LPWSTR | in | プロパティの名前です。 |
| value | LPWSTR* | out | プロパティの値です。 |
| idRule | GUID | in | 問い合わせ対象のプロパティ値に関連付けられたルールオブジェクトの識別子です。このルールオブジェクトは、事前の IFsrmClassifierModuleImplementation::UseRulesAndDefinitions メソッドの呼び出しで渡されたルールコレクション内にある必要があります。ルールオブジェクトは、このコレクションに対する IFsrmCollection::GetById メソッドの呼び出しでこの識別子を使用して取得することもできます。 |
| idPropDef | GUID | in | 問い合わせ対象のプロパティに対応するプロパティ定義オブジェクトの識別子です。このプロパティ定義オブジェクトは、事前の IFsrmClassifierModuleImplementation::UseRulesAndDefinitions メソッドの呼び出しで渡されたプロパティ定義コレクション内にあります。プロパティ定義オブジェクトは、このコレクションに対する IFsrmCollection::GetById メソッドの呼び出しでこの識別子を使用して取得することもできます。 |
戻り値
このメソッドは次の戻り値を返します。それ以外のエラーについては、実装者は HRESULT エラーコードを返してください。
解説(Remarks)
このメソッドは、分類子のモジュール定義の IFsrmClassifierModuleDefinition::NeedsExplicitValue プロパティが VARIANT_TRUE の場合に呼び出されます。
分類子の実装では、idRule および idPropDef パラメーターで渡された識別子を使用して、プロパティ値がそのファイルに適用されるかどうかを判断できます。判断に関連するルールやプロパティ定義を必要とする分類子では、IFsrmClassifierModuleImplementation::UseRulesAndDefinitions の呼び出し時に渡された該当のコレクションを実装側でキャッシュしておくことをお勧めします。
FSRM_E_FILE_ENCRYPTED、FSRM_E_INCOMPATIBLE_FORMAT、または FSRM_E_NO_PROPERTY_VALUE が返された場合、FSRM はそのファイルの分類が失敗したとは示しません。それ以外のエラー値が返された場合、FSRM はそのファイルの分類が失敗したことを示します。
ファイルの処理後に必要なクリーンアップを実行するよう、分類子に指示します。
戻り値
このメソッドは次の戻り値を返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IFsrmClassifierModuleImplementation "{4C968FC6-6EDB-4051-9C18-73B7291AE106}" #usecom global IFsrmClassifierModuleImplementation IID_IFsrmClassifierModuleImplementation "{}" #comfunc global IFsrmClassifierModuleImplementation_get_LastModified 9 var #comfunc global IFsrmClassifierModuleImplementation_UseRulesAndDefinitions 10 sptr,sptr #comfunc global IFsrmClassifierModuleImplementation_OnBeginFile 11 sptr,var #comfunc global IFsrmClassifierModuleImplementation_DoesPropertyValueApply 12 wstr,wstr,var,int,int #comfunc global IFsrmClassifierModuleImplementation_GetPropertyValueToApply 13 wstr,var,int,int #comfunc global IFsrmClassifierModuleImplementation_OnEndFile 14 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IFsrmClassifierModuleImplementation "{4C968FC6-6EDB-4051-9C18-73B7291AE106}" #usecom global IFsrmClassifierModuleImplementation IID_IFsrmClassifierModuleImplementation "{}" #comfunc global IFsrmClassifierModuleImplementation_get_LastModified 9 sptr #comfunc global IFsrmClassifierModuleImplementation_UseRulesAndDefinitions 10 sptr,sptr #comfunc global IFsrmClassifierModuleImplementation_OnBeginFile 11 sptr,sptr #comfunc global IFsrmClassifierModuleImplementation_DoesPropertyValueApply 12 wstr,wstr,sptr,int,int #comfunc global IFsrmClassifierModuleImplementation_GetPropertyValueToApply 13 wstr,sptr,int,int #comfunc global IFsrmClassifierModuleImplementation_OnEndFile 14 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。