Win32 API 日本語リファレンス
ホームStorage.FileServerResourceManager › IFsrmPropertyBag

IFsrmPropertyBag

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IID774589d1-d300-4f7a-9a24-f7b766800250継承元IDispatch呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl7

公式ドキュメント

ファイルの分類プロパティを保持します。

解説(Remarks)

プロパティバッグには、ファイルのすべてのプロパティのインメモリコピーが格納されます。プロパティバッグ内のプロパティの一覧には、FSRM で定義されていない追加のプロパティが含まれる場合があります。これらのプロパティは、ファイル内の他のメタデータに由来することがあります。

このインターフェースは、分類モジュールを実装している場合は IFsrmClassifierModuleImplementation::DoesPropertyValueApplyIFsrmClassifierModuleImplementation::GetPropertyValueToApply に、ストレージモジュールを実装している場合は IFsrmStorageModuleImplementation::LoadPropertiesIFsrmStorageModuleImplementation::SaveProperties に渡すことができます。

メソッド 21

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 7 HRESULT get_Name(LPWSTR* name)

バッグ内のプロパティを保持しているファイルの名前です。

nameLPWSTR*out対象ファイルの名前を受け取る文字列ポインタである。
vtbl 8 HRESULT get_RelativePath(LPWSTR* path)

ファイルへの相対パスです。

pathLPWSTR*out名前空間ルートからの相対パスを受け取る文字列ポインタである。

解説(Remarks)

相対パスとは、ボリュームのルートからの相対的なファイルのパスです。たとえば、ファイルのパスが "P:\folder1\subfolderA\test.txt" の場合、相対パスは "\folder1\subfolderA" になります。

呼び出し元は、返される相対パスの先頭や末尾に常にバックスラッシュが付いていると想定しないでください。

vtbl 9 HRESULT get_VolumeName(LPWSTR* volumeName)

ファイルが存在するボリュームの名前です。

volumeNameLPWSTR*outファイルが格納されているボリュームの名前を受け取る文字列ポインタである。

解説(Remarks)

このプロパティには、スキャン対象のファイルが存在する場所のボリューム名が格納されます。たとえば、ファイルのパスが "P:\folder1\subfolderA\test.txt" の場合、ボリューム名は "P:\" になります。

呼び出し元は、返されるボリューム名の末尾に常にバックスラッシュが付いていると想定しないでください。

返されるボリューム名は、常にライブボリュームの名前です。分類対象のファイルがスナップショット上にある場合は、そのスナップショットに対応するライブボリュームの名前が返されます。

vtbl 10 HRESULT get_RelativeNamespaceRoot(LPWSTR* relativeNamespaceRoot)

ファイルが評価される対象となる名前空間ルートの相対パスです。

relativeNamespaceRootLPWSTR*outファイルが属する名前空間ルートの相対パスを受け取る文字列ポインタである。

解説(Remarks)

このプロパティは評価コンテキストの下でのみ有効です。分類モジュールがこのプロパティを取得すると、ファイルの評価に使用されているルールの名前空間ルートが返されます。ストレージモジュールには評価コンテキストがないため、このプロパティを取得してはいけません。

相対名前空間ルートとは、ボリュームのルートからの相対的な名前空間ルートのパスです。たとえば、ファイルのパスが "P:\folder1\subfolderA\test.txt" で、名前空間ルートが "P:\folder1" であるルールによってファイルが評価されている場合、相対名前空間ルートは "\folder1" になります。相対名前空間ルートはルールの名前空間ルートによって決まる点に注意してください。

呼び出し元は、返される相対名前空間ルートの先頭や末尾に常にバックスラッシュが付いていると想定しないでください。

vtbl 11 HRESULT get_VolumeIndex(DWORD* volumeId)

ファイルが存在するボリュームを参照するためにスキャナーが使用するインデックスです。

volumeIdDWORD*outボリュームを識別するインデックス値を受け取る DWORD ポインタである。
vtbl 12 HRESULT get_FileId(VARIANT* fileId)

ファイルの NTFS ファイル識別子です。

fileIdVARIANT*outファイルを一意に識別するファイル ID を格納した VARIANT を受け取るポインタである。
vtbl 13 HRESULT get_ParentDirectoryId(VARIANT* parentDirectoryId)

ファイルの親ディレクトリの NTFS 識別子です。

parentDirectoryIdVARIANT*out親ディレクトリを一意に識別する ID を格納した VARIANT を受け取るポインタである。
vtbl 14 HRESULT get_Size(VARIANT* size)

ファイルのサイズです。

sizeVARIANT*outファイルのサイズ (バイト数) を格納した VARIANT を受け取るポインタである。
vtbl 15 HRESULT get_SizeAllocated(VARIANT* sizeAllocated)

ファイルの割り当てサイズです。

sizeAllocatedVARIANT*outファイルに割り当てられたサイズ (バイト数) を格納した VARIANT を受け取るポインタである。
vtbl 16 HRESULT get_CreationTime(VARIANT* creationTime)

ファイルが作成された日時です。

creationTimeVARIANT*outファイルの作成日時を格納した VARIANT を受け取るポインタである。
vtbl 17 HRESULT get_LastAccessTime(VARIANT* lastAccessTime)

ファイルに最後にアクセスした日時です。

lastAccessTimeVARIANT*outファイルの最終アクセス日時を格納した VARIANT を受け取るポインタである。
vtbl 18 HRESULT get_LastModificationTime(VARIANT* lastModificationTime)

ファイルが最後に変更された日時です。

lastModificationTimeVARIANT*outファイルの最終更新日時を格納した VARIANT を受け取るポインタである。
vtbl 19 HRESULT get_Attributes(DWORD* attributes)

ファイルの属性です。

attributesDWORD*outファイルの属性を示すフラグの組み合わせを受け取る DWORD ポインタである。
vtbl 20 HRESULT get_OwnerSid(LPWSTR* ownerSid)

ファイルの所有者の SID です。

ownerSidLPWSTR*outファイルの所有者のセキュリティ識別子 (SID) を文字列で受け取るポインタである。
vtbl 21 HRESULT get_FilePropertyNames(SAFEARRAY** filePropertyNames)

バッグに格納されているプロパティの名前の一覧です。

filePropertyNamesSAFEARRAY**outファイルに設定されているプロパティ名の一覧を格納した SAFEARRAY を受け取るポインタである。
vtbl 22 HRESULT get_Messages(SAFEARRAY** messages)

バッグに追加されたエラーメッセージの一覧です。

messagesSAFEARRAY**outプロパティバッグに記録されたメッセージの一覧を格納した SAFEARRAY を受け取るポインタである。

解説(Remarks)

メッセージの形式は module_name,rule_name|message です (IFsrmPropertyBag::AddMessage メソッドの呼び出し時に指定したメッセージに、FSRM が module_name,rule_name| の部分を追加します)。

vtbl 23 HRESULT get_PropertyBagFlags(DWORD* flags)

プロパティバッグに関する追加情報を示すフラグのセットです。

flagsDWORD*outプロパティバッグの状態を示すフラグの組み合わせを受け取る DWORD ポインタである。
vtbl 24 HRESULT GetFileProperty(LPWSTR name, IFsrmProperty** fileProperty)

指定されたプロパティをプロパティバッグから取得します。

nameLPWSTRin取得するプロパティの名前です。
filePropertyIFsrmProperty**out取得したプロパティへの IFsrmProperty インターフェースです。

戻り値

このメソッドは次の値を返します。

解説(Remarks)

ルールの PropertyAffected プロパティに指定されているプロパティ名を使用してください。

vtbl 25 HRESULT SetFileProperty(LPWSTR name, LPWSTR value)

指定されたプロパティをプロパティバッグに設定します。

nameLPWSTRin設定するプロパティの名前です。
valueLPWSTRinプロパティに設定する値です。

戻り値

このメソッドは次の値を返します。

解説(Remarks)

このプロパティにアクセスするには、呼び出し元がストレージモジュールである必要があります。

vtbl 26 HRESULT AddMessage(LPWSTR message)

バッグにエラーメッセージを追加します。

messageLPWSTRinバッグに追加するエラーメッセージです。メッセージは 4096 文字までに制限されます (4096 文字を超える場合は切り捨てられます)。

戻り値

このメソッドは次の値を返します。

解説(Remarks)

バッグに追加できるメッセージは 1 つだけです。エラーログが有効になっている場合、メッセージはエラーログに書き込まれます。

次のいずれかの実装がエラーコードを返した場合、FSRM はエラーコードと関連するメッセージ文字列を含むメッセージを自動的に追加します (このメッセージは 1 件までという上限には数えられません)。

vtbl 27 HRESULT GetFileStreamInterface(FsrmFileStreamingMode accessMode, FsrmFileStreamingInterfaceType interfaceType, VARIANT* pStreamInterface)

ファイルの内容へアクセスするために使用できるファイルストリームインターフェースを取得します。

accessModeFsrmFileStreamingModein1 つ以上のアクセスモードです。指定できる値については、FsrmFileStreamingMode 列挙型を参照してください。
interfaceTypeFsrmFileStreamingInterfaceTypein使用するストリーミングインターフェースの種類です。指定できるインターフェースの種類については、FsrmFileStreamingInterfaceType 列挙型を参照してください。
pStreamInterfaceVARIANT*outファイルの内容へアクセスするために使用できるストリーミングインターフェースを格納した VARIANT です。この VARIANT の型は VT_DISPATCH です。指定したストリーミングインターフェースを取得するには、VARIANT の dispval メンバーを参照してください。

戻り値

このメソッドは次の値を返します。

解説(Remarks)

呼び出し元がアクセスを許可されるためには、IFsrmPipelineModuleDefinition::NeedsFileContent プロパティが TRUE に設定されたモジュールである必要があります。accessMode パラメーターに FsrmFileStreamingMode_Write を指定する場合、呼び出し元はさらにストレージモジュールであり、かつ IFsrmStorageModuleDefinition::UpdatesFileContent プロパティが TRUE に設定されている必要があります。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IFsrmPropertyBag "{774589D1-D300-4F7A-9A24-F7B766800250}"
#usecom global IFsrmPropertyBag IID_IFsrmPropertyBag "{}"
#comfunc global IFsrmPropertyBag_get_Name                   7 var
#comfunc global IFsrmPropertyBag_get_RelativePath           8 var
#comfunc global IFsrmPropertyBag_get_VolumeName             9 var
#comfunc global IFsrmPropertyBag_get_RelativeNamespaceRoot  10 var
#comfunc global IFsrmPropertyBag_get_VolumeIndex            11 var
#comfunc global IFsrmPropertyBag_get_FileId                 12 var
#comfunc global IFsrmPropertyBag_get_ParentDirectoryId      13 var
#comfunc global IFsrmPropertyBag_get_Size                   14 var
#comfunc global IFsrmPropertyBag_get_SizeAllocated          15 var
#comfunc global IFsrmPropertyBag_get_CreationTime           16 var
#comfunc global IFsrmPropertyBag_get_LastAccessTime         17 var
#comfunc global IFsrmPropertyBag_get_LastModificationTime   18 var
#comfunc global IFsrmPropertyBag_get_Attributes             19 var
#comfunc global IFsrmPropertyBag_get_OwnerSid               20 var
#comfunc global IFsrmPropertyBag_get_FilePropertyNames      21 var
#comfunc global IFsrmPropertyBag_get_Messages               22 var
#comfunc global IFsrmPropertyBag_get_PropertyBagFlags       23 var
#comfunc global IFsrmPropertyBag_GetFileProperty            24 wstr,sptr
#comfunc global IFsrmPropertyBag_SetFileProperty            25 wstr,wstr
#comfunc global IFsrmPropertyBag_AddMessage                 26 wstr
#comfunc global IFsrmPropertyBag_GetFileStreamInterface     27 int,int,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。