IFsrmQuotaManager
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
クォータを管理するために使用します。
解説(Remarks)
ディレクトリクォータは、特定のディレクトリのサイズを構成可能なクォータ制限値までに制限します。制限値に加えて、 ディレクトリクォータには 1 つ以上のディレクトリクォータのしきい値を構成できます。しきい値は、クォータ使用量が そのしきい値に達したときに開始される一連のアクションを定義します。
クォータ、自動クォータ、またはクォータテンプレートを作成できます。クォータは特定のディレクトリに適用されます。 自動クォータは指定したディレクトリに適用され、そのディレクトリの新規および既存のサブディレクトリに対して クォータを自動的に作成します。クォータテンプレートは、テンプレートから派生したクォータに変更を適用することで、 プロパティを一括して変更するために使用します。
ディレクトリの名前が変更された場合、クォータは名前変更後のディレクトリに適用されます。ディレクトリが削除された 場合、クォータも削除されます。
スクリプトからこのオブジェクトを作成するには、プログラム識別子 "Fsrm.FsrmQuotaManager" を使用します。
メソッド 12
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
アクションのプロパティ値に指定できるマクロの一覧を取得します。(IFsrmQuotaManagerEx.get_ActionVariables)
| variables | SAFEARRAY** | out | アクションで使用可能な置換変数の一覧を表す SAFEARRAY を受け取るポインタである。 |
解説(Remarks)
FSRM はアクションのプロパティを解析してマクロを検出し、マクロ文字列を、アクションが発生したイベントおよび コンピューターに固有の値に置き換えます。たとえば、次の例は電子メールのメッセージ本文を書式設定する方法を 示しています。 "User [Source Io Owner] has reached the quota limit for quota on [Quota Path] on server [Server]. The quota limit is [Quota Limit MB] MB and the current usage is [Quota Used MB] MB ([Quota Used Percent]% of limit)."
IFsrmQuotaManager::ActionVariables プロパティに含まれるマクロの説明を取得します。
| descriptions | SAFEARRAY** | out | 各アクション変数の説明の一覧を表す SAFEARRAY を受け取るポインタである。 |
指定したディレクトリのクォータを作成します。
| path | LPWSTR | in | クォータを適用するローカルディレクトリのパス。文字列は 260 文字までに制限されます。 |
| quota | IFsrmQuota** | out | 新しく作成されたクォータオブジェクトへの IFsrmQuota インターフェース。このインターフェースを使用してクォータを定義します。クォータを FSRM に追加するには、 IFsrmQuota::Commit メソッドを呼び出します。 |
戻り値
このメソッドは次の戻り値を返します。
解説(Remarks)
クォータは、そのディレクトリとすべてのサブディレクトリに (再帰的に) 適用されます。ディレクトリツリーの上位の ディレクトリに指定されたクォータは、このディレクトリに指定されたクォータをさらに制限します。
クォータで FsrmQuotaFlags_Enforce クォータフラグを指定している場合、クォータを超過すると ファイル I/O はブロックされますが、コマンドの実行やレポートの生成といったアクションは実行されません。 クォータの超過時にアクションを実行するには、しきい値を作成して 実行するアクションを指定します。クォータを超過した時点でアクションを実行するには、しきい値を 100 (パーセント) に設定します。
例
例については、クォータの定義を参照してください。
指定したディレクトリの自動クォータを作成します。
| quotaTemplateName | LPWSTR | in | クォータの派生元となるテンプレートの名前。自動クォータは必ずテンプレートから派生させる必要があります。 文字列は 4,000 文字までに制限されます。 |
| path | LPWSTR | in | クォータを適用するローカルディレクトリのパス。文字列は 260 文字までに制限されます。 |
| quota | IFsrmAutoApplyQuota** | out | 新しく作成されたクォータオブジェクトへの IFsrmAutoApplyQuota インターフェース。指定したテンプレートを使用してクォータが初期化されます。このインターフェースを使用して、 クォータを変更したり、特定のサブディレクトリをクォータの対象から除外したりします。クォータを FSRM に追加するには、 IFsrmAutoApplyQuota::Commit メソッドを呼び出します。 |
戻り値
このメソッドは次の戻り値を返します。
解説(Remarks)
自動クォータを保存すると、FSRM は指定したディレクトリ配下の既存のサブディレクトリのうち、まだクォータが 設定されていないすべてのサブディレクトリに対してクォータを作成します。指定したディレクトリの下に新しい サブディレクトリが作成されると、FSRM は自動クォータのプロパティを使用して、その新しいサブディレクトリの クォータを作成します。
自動クォータとサブディレクトリを同時に作成する場合は、パフォーマンスの観点から、先にサブディレクトリを 作成してから自動クォータを作成してください。
例
例については、クォータの定義を参照してください。
指定したディレクトリのクォータを取得します。
| path | LPWSTR | in | 取得するクォータが設定されているローカルディレクトリのパス。文字列は 260 文字までに 制限されます。 |
| quota | IFsrmQuota** | out | クォータオブジェクトへの IFsrmQuota インターフェース。 |
戻り値
このメソッドは次の戻り値を返します。
指定したディレクトリの自動クォータを取得します。
| path | LPWSTR | in | 取得するクォータが設定されているローカルディレクトリのパス。文字列は 260 文字までに 制限されます。 |
| quota | IFsrmAutoApplyQuota** | out | クォータオブジェクトへの IFsrmAutoApplyQuota インターフェース。 |
戻り値
このメソッドは次の戻り値を返します。
指定したパスに対して最も制限の厳しいクォータを取得します。
| path | LPWSTR | in | ローカルディレクトリのパス。文字列は 260 文字までに制限されます。 |
| quota | IFsrmQuota** | out | クォータオブジェクトへの IFsrmQuota インターフェース。 |
戻り値
このメソッドは次の戻り値を返します。
解説(Remarks)
最も制限の厳しいクォータとは、クォータ制限値が最も小さいクォータです。ディレクトリツリーの上位にある クォータの制限値が、指定したパスに関連付けられたクォータの制限値よりも小さい場合は、上位のクォータが 返されます。2 つのクォータの制限値が同じ場合は、ディレクトリツリーの上位にあるクォータが返されます。
指定したディレクトリのクォータと、そのサブディレクトリに関連付けられたクォータを (再帰的に) 列挙します。
| path | LPWSTR | in | 列挙するクォータに関連付けられたローカルディレクトリのパス。文字列は 260 文字までに 制限されます。 パスが "*" で終わる場合は、そのパスの直下のサブディレクトリに関連付けられたすべてのクォータを 取得します (パス自体に関連付けられたクォータは含まれません)。 パスが "..." で終わる場合は、そのパスのクォータと、そのパスの直下のサブディレクトリに 関連付けられたすべてのクォータを (再帰的に) 取得します。 パスが "*" または "..." で終わらない場合は、そのパスのクォータのみを 取得します。 path が null または空の場合、このメソッドはすべてのクォータを返します。 |
| options | FsrmEnumOptions | in | クォータを列挙するときに使用するオプション。指定できる値については、 FsrmEnumOptions 列挙型を参照してください。 |
| quotas | IFsrmCommittableCollection** | out | クォータのコレクションを格納する IFsrmCommittableCollection インターフェース。 コレクションの各項目は VT_DISPATCH 型の VARIANT です。バリアントの pdispVal メンバーに対して IFsrmQuota インターフェースをクエリしてください。 パスにクォータが含まれていない場合、コレクションは空になります。 |
戻り値
このメソッドは次の戻り値を返します。
解説(Remarks)
パスのサブディレクトリに自動的に適用されるクォータを列挙するには、 IFsrmQuotaManager::EnumAutoApplyQuotas メソッドを呼び出します。
指定したディレクトリに関連付けられた自動クォータを列挙します。
| path | LPWSTR | in | 列挙する自動クォータに関連付けられたローカルディレクトリのパス。文字列は 260 文字までに 制限されます。 パスが "*" で終わる場合は、そのパスの直下のサブディレクトリに関連付けられたすべての 自動クォータを取得します (パス自体に関連付けられたクォータは含まれません)。 パスが "..." で終わる場合は、そのパスの自動クォータと、そのパスの直下のサブディレクトリに 関連付けられたすべての自動クォータを (再帰的に) 取得します。 パスが "*" または "..." で終わらない場合は、そのパスの自動クォータのみを 取得します。 path が null または空の場合、このメソッドはすべてのクォータを返します。 |
| options | FsrmEnumOptions | in | クォータを列挙するときに使用するオプション。指定できる値については、 FsrmEnumOptions 列挙型を参照してください。 |
| quotas | IFsrmCommittableCollection** | out | 自動クォータのコレクションを格納する IFsrmCommittableCollection インターフェース。 コレクションの各項目は VT_DISPATCH 型の VARIANT です。バリアントの pdispVal メンバーに対して IFsrmAutoApplyQuota インターフェースをクエリしてください。 パスにクォータが含まれていない場合、コレクションは空になります。 |
戻り値
このメソッドは次の戻り値を返します。
解説(Remarks)
パスのサブディレクトリに自動的には適用されないクォータを列挙するには、 IFsrmQuotaManager::EnumQuotas メソッドを呼び出します。
指定したパスに影響するすべてのクォータを列挙します。
| path | LPWSTR | in | ローカルディレクトリのパス。文字列は 260 文字までに制限されます。 |
| options | FsrmEnumOptions | in | クォータを列挙するときに使用するオプション。指定できる値については、 FsrmEnumOptions 列挙型を参照してください。 |
| quotas | IFsrmCommittableCollection** | out | 指定したパスまたはその上位に構成されたクォータのコレクションを格納する IFsrmCommittableCollection インターフェース。 コレクションの各項目は VT_DISPATCH 型の VARIANT です。バリアントの pdispVal メンバーに対して IFsrmQuota インターフェースをクエリしてください。 パスにクォータが含まれていない場合、コレクションは空になります。 |
戻り値
このメソッドは次の戻り値を返します。
解説(Remarks)
自動クォータは列挙されません。自動クォータを列挙するには、 IFsrmQuotaManager::EnumAutoApplyQuotas メソッドを呼び出します。
すべてのクォータを列挙するには、 IFsrmQuotaManager::EnumQuotas メソッドを呼び出します。
指定したパスでクォータのスキャンを開始します。
| strPath | LPWSTR | in | スキャンするローカルディレクトリのパス。 |
戻り値
このメソッドは次の戻り値を返します。
解説(Remarks)
クォータの使用量は継続的に監視されていますが、クォータの使用量が実際の使用量と同期していない場合が あります。その場合は、このメソッドを呼び出してクォータの使用量を更新できます。たとえば、管理者が (問題の調査やトラブルシューティングのために) クォータを無効にし、後で再び有効にした場合は、 このメソッドを呼び出して手動スキャンを実行してください。
クォータを追加できる空のコレクションを作成します。
| collection | IFsrmCommittableCollection** | out | 新しく作成されたコレクションへの IFsrmCommittableCollection インターフェース。コレクションにオブジェクトを追加するには、 IFsrmMutableCollection::Add メソッドを呼び出します。 |
戻り値
このメソッドは次の戻り値を返します。
解説(Remarks)
複数のクォータを追加する場合は、コレクションを使用する方が個別にクォータを追加するよりもパフォーマンスが 向上します。コレクションにクォータを追加した後、 IFsrmCommittableCollection::Commit メソッドを呼び出します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IFsrmQuotaManager "{8BB68C7D-19D8-4FFB-809E-BE4FC1734014}" #usecom global IFsrmQuotaManager IID_IFsrmQuotaManager "{90DCAB7F-347C-4BFC-B543-540326305FBE}" #comfunc global IFsrmQuotaManager_get_ActionVariables 7 var #comfunc global IFsrmQuotaManager_get_ActionVariableDescriptions 8 var #comfunc global IFsrmQuotaManager_CreateQuota 9 wstr,sptr #comfunc global IFsrmQuotaManager_CreateAutoApplyQuota 10 wstr,wstr,sptr #comfunc global IFsrmQuotaManager_GetQuota 11 wstr,sptr #comfunc global IFsrmQuotaManager_GetAutoApplyQuota 12 wstr,sptr #comfunc global IFsrmQuotaManager_GetRestrictiveQuota 13 wstr,sptr #comfunc global IFsrmQuotaManager_EnumQuotas 14 wstr,int,sptr #comfunc global IFsrmQuotaManager_EnumAutoApplyQuotas 15 wstr,int,sptr #comfunc global IFsrmQuotaManager_EnumEffectiveQuotas 16 wstr,int,sptr #comfunc global IFsrmQuotaManager_Scan 17 wstr #comfunc global IFsrmQuotaManager_CreateQuotaCollection 18 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IFsrmQuotaManager "{8BB68C7D-19D8-4FFB-809E-BE4FC1734014}" #usecom global IFsrmQuotaManager IID_IFsrmQuotaManager "{90DCAB7F-347C-4BFC-B543-540326305FBE}" #comfunc global IFsrmQuotaManager_get_ActionVariables 7 sptr #comfunc global IFsrmQuotaManager_get_ActionVariableDescriptions 8 sptr #comfunc global IFsrmQuotaManager_CreateQuota 9 wstr,sptr #comfunc global IFsrmQuotaManager_CreateAutoApplyQuota 10 wstr,wstr,sptr #comfunc global IFsrmQuotaManager_GetQuota 11 wstr,sptr #comfunc global IFsrmQuotaManager_GetAutoApplyQuota 12 wstr,sptr #comfunc global IFsrmQuotaManager_GetRestrictiveQuota 13 wstr,sptr #comfunc global IFsrmQuotaManager_EnumQuotas 14 wstr,int,sptr #comfunc global IFsrmQuotaManager_EnumAutoApplyQuotas 15 wstr,int,sptr #comfunc global IFsrmQuotaManager_EnumEffectiveQuotas 16 wstr,int,sptr #comfunc global IFsrmQuotaManager_Scan 17 wstr #comfunc global IFsrmQuotaManager_CreateQuotaCollection 18 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。