IFsrmRule
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
ルールを定義します。
解説(Remarks)
名前とルールの種類 (rule type) のプロパティによって、一意のルールが定義されます。
メソッド 12
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
ルールの名前です。(Get)
| name | LPWSTR* | out | ルールの名前を受け取る文字列ポインタである。 |
解説(Remarks)
名前は、その種類の中で一意である必要があります (IFsrmRule.RuleType プロパティを参照してください)。
ルールの名前です。(Put)
| name | LPWSTR | in | ルールに設定する名前を指定する文字列である。 |
解説(Remarks)
名前は、その種類の中で一意である必要があります (IFsrmRule.RuleType プロパティを参照してください)。
ルールの種類です。
| ruleType | FsrmRuleType* | out | ルールの種類を示す FsrmRuleType 列挙値を受け取るポインタである。 |
解説(Remarks)
ルールの種類は、ルールを作成するために IFsrmClassificationManager::CreateRule メソッドを呼び出すときに指定します。
名前とルールの種類のプロパティによって、一意のルールが定義されます。
このルールを実行させるモジュール定義の名前です。(Get)
| moduleDefinitionName | LPWSTR* | out | ルールが使用するパイプラインモジュール定義の名前を受け取る文字列ポインタである。 |
解説(Remarks)
FSRM には、Folder Classifier という名前の組み込みの分類子モジュールが用意されています。Folder Classifier は、ファイルの場所 (どのフォルダーに格納されているか) に基づいてファイルを分類します。この分類子はファイルの現在のパスを調べ、分類ルールの名前空間ルートに指定されたパスと照合します。パスがルールの名前空間ルートのスコープ内にある場合、FSRM はそのファイルにルールを適用します。
FSRM に登録されているモジュールの一覧を取得するには、IFsrmClassificationManager::EnumModuleDefinitions メソッドを呼び出します。モジュールの名前を取得するには、IFsrmPipelineModuleDefinition.Name プロパティを使用します。
このルールを実行させるモジュール定義の名前です。(Put)
| moduleDefinitionName | LPWSTR | in | ルールが使用するパイプラインモジュール定義の名前を指定する文字列である。 |
解説(Remarks)
FSRM には、Folder Classifier という名前の組み込みの分類子モジュールが用意されています。Folder Classifier は、ファイルの場所 (どのフォルダーに格納されているか) に基づいてファイルを分類します。この分類子はファイルの現在のパスを調べ、分類ルールの名前空間ルートに指定されたパスと照合します。パスがルールの名前空間ルートのスコープ内にある場合、FSRM はそのファイルにルールを適用します。
FSRM に登録されているモジュールの一覧を取得するには、IFsrmClassificationManager::EnumModuleDefinitions メソッドを呼び出します。モジュールの名前を取得するには、IFsrmPipelineModuleDefinition.Name プロパティを使用します。
分類の実行時にルールが適用されるディレクトリパスの配列です。(Get)
| namespaceRoots | SAFEARRAY** | out | ルールの対象とする名前空間ルート (ディレクトリパス) の一覧を格納した SAFEARRAY を受け取るポインタである。 |
解説(Remarks)
指定したパスの下にあるすべてのサブディレクトリも (再帰的に) スキャンされます。
FSRM は NTFS ファイルシステムのみをサポートしている点に注意してください。ReFS、FAT、FAT32、UDF、その他の NTFS 以外のファイルシステム上のパスを指定することはできません。
分類の実行時にルールが適用されるディレクトリパスの配列です。(Put)
| namespaceRoots | SAFEARRAY* | in | ルールの対象として設定する名前空間ルート (ディレクトリパス) の一覧を格納した SAFEARRAY を指定する。 |
解説(Remarks)
指定したパスの下にあるすべてのサブディレクトリも (再帰的に) スキャンされます。
FSRM は NTFS ファイルシステムのみをサポートしている点に注意してください。ReFS、FAT、FAT32、UDF、その他の NTFS 以外のファイルシステム上のパスを指定することはできません。
ルールの状態を定義するフラグです。(Get)
| ruleFlags | INT* | out | ルールの動作を制御するフラグの組み合わせを受け取るポインタである。 |
ルールの状態を定義するフラグです。(Put)
| ruleFlags | INT | in | ルールの動作を制御するフラグの組み合わせを指定する。 |
分類子に渡されるパラメーターです。(Get)
| parameters | SAFEARRAY** | out | ルールに渡されるパラメータ (名前=値 の文字列) の一覧を格納した SAFEARRAY を受け取るポインタである。 |
解説(Remarks)
パラメーターは、分類子がルールからパラメーターが渡されることを想定している場合にのみ指定してください。
パラメーターは分類子に直接渡されるわけではありません。代わりに、パラメーターを保持するルールが分類子に渡されます (IFsrmPipelineModuleImplementation::OnLoad メソッドを参照してください)。
FSRM は、パラメーター名や値の長さを制限せず、指定できるパラメーターの数も制限しません。値を指定せずにパラメーターを指定することも有効です (例: "parameter=")。
分類子に渡されるパラメーターです。(Put)
| parameters | SAFEARRAY* | in | ルールに設定するパラメータ (名前=値 の文字列) の一覧を格納した SAFEARRAY を指定する。 |
解説(Remarks)
パラメーターは、分類子がルールからパラメーターが渡されることを想定している場合にのみ指定してください。
パラメーターは分類子に直接渡されるわけではありません。代わりに、パラメーターを保持するルールが分類子に渡されます (IFsrmPipelineModuleImplementation::OnLoad メソッドを参照してください)。
FSRM は、パラメーター名や値の長さを制限せず、指定できるパラメーターの数も制限しません。値を指定せずにパラメーターを指定することも有効です (例: "parameter=")。
ルールが最後に変更された日付です。
| lastModified | VARIANT* | out | ルールが最後に変更された日時を格納した VARIANT を受け取るポインタである。 |
解説(Remarks)
最終更新日時は、ルールをコミットするたびに設定されます。
最終更新日時は、そのルールを実行する必要があるかどうかを判断するために FSRM によって使用されます。いずれかのルールがファイルの最終更新時刻よりも新しい時刻を返した場合、FSRM はそのファイルに適用されるルールを再評価します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IFsrmRule "{CB0DF960-16F5-4495-9079-3F9360D831DF}" #usecom global IFsrmRule IID_IFsrmRule "{}" #comfunc global IFsrmRule_get_Name 12 var #comfunc global IFsrmRule_put_Name 13 wstr #comfunc global IFsrmRule_get_RuleType 14 var #comfunc global IFsrmRule_get_ModuleDefinitionName 15 var #comfunc global IFsrmRule_put_ModuleDefinitionName 16 wstr #comfunc global IFsrmRule_get_NamespaceRoots 17 var #comfunc global IFsrmRule_put_NamespaceRoots 18 var #comfunc global IFsrmRule_get_RuleFlags 19 var #comfunc global IFsrmRule_put_RuleFlags 20 int #comfunc global IFsrmRule_get_Parameters 21 var #comfunc global IFsrmRule_put_Parameters 22 var #comfunc global IFsrmRule_get_LastModified 23 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IFsrmRule "{CB0DF960-16F5-4495-9079-3F9360D831DF}" #usecom global IFsrmRule IID_IFsrmRule "{}" #comfunc global IFsrmRule_get_Name 12 sptr #comfunc global IFsrmRule_put_Name 13 wstr #comfunc global IFsrmRule_get_RuleType 14 sptr #comfunc global IFsrmRule_get_ModuleDefinitionName 15 sptr #comfunc global IFsrmRule_put_ModuleDefinitionName 16 wstr #comfunc global IFsrmRule_get_NamespaceRoots 17 sptr #comfunc global IFsrmRule_put_NamespaceRoots 18 sptr #comfunc global IFsrmRule_get_RuleFlags 19 sptr #comfunc global IFsrmRule_put_RuleFlags 20 int #comfunc global IFsrmRule_get_Parameters 21 sptr #comfunc global IFsrmRule_put_Parameters 22 sptr #comfunc global IFsrmRule_get_LastModified 23 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。