Win32 API 日本語リファレンス
ホームUI.Shell › IFileSystemBindData

IFileSystemBindData

COM
IID01e18d10-4d8b-11d2-855d-006008059367継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IShellFolder::ParseDisplayName の呼び出しを最適化するために、ファイルシステム情報を格納するメソッドを公開します。

解説(Remarks)

IFileSystemBindData は、ファイルシステム情報を WIN32_FIND_DATA 構造体に格納します。IFileSystemBindData を実装するオブジェクトは、その後 IShellFolder::ParseDisplayName に渡されるバインドコンテキストに格納されます。

IShellFolder::ParseDisplayName の呼び出しを最適化したい場合で、WIN32_FIND_DATA 構造体のファイル情報がすでに利用可能な場合に、IFileSystemBindData を実装します。

IShellFolder::ParseDisplayName を呼び出す前に WIN32_FIND_DATA の情報を格納するには、クライアントは次の手順を使用します。

  1. IFileSystemBindData インターフェイスを公開するオブジェクトのインスタンスを作成します。
  2. IFileSystemBindData::SetFindData を使用して、データをオブジェクトに格納します。
  3. IBindCtx::RegisterObjectParam メソッドを使用して、オブジェクトをバインドコンテキストに格納します。pszKey パラメーターには文字列 L"File System Bind Data" を、punk パラメーターには IFileSystemBindData インターフェイスのアドレスを設定します。
その後、このバインドコンテキストは IShellFolder::ParseDisplayName の呼び出しとともに渡されます。
注意 Windows Vista より前では、このインターフェイスは Shlobj.h で宣言されていました。

メソッド 2

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT SetFindData(WIN32_FIND_DATAW* pfd)

ファイルシステム情報を WIN32_FIND_DATA 構造体に格納します。この情報は ParseDisplayName によって使用されます。

pfdWIN32_FIND_DATAW*in格納したいデータを指定する WIN32_FIND_DATA 構造体へのポインター。

戻り値

型: HRESULT

常に S_OK を返します。

解説(Remarks)

クライアントがファイル情報を格納した後、オブジェクト自体のインスタンスを、pszKey パラメーターに L"File System Bind Data" を設定した IBindCtx::RegisterObjectParam メソッドを使用してバインドコンテキストに格納する必要があります。

vtbl 4 HRESULT GetFindData(WIN32_FIND_DATAW* pfd)

WIN32_FIND_DATA 構造体に格納されているファイルシステム情報を取得します。

pfdWIN32_FIND_DATAW*outデータを受け取る WIN32_FIND_DATA 構造体へのポインター。

戻り値

型: HRESULT

S_OK を返します。

解説(Remarks)

このメソッドは、バインドコンテキスト情報を IShellFolder::ParseDisplayName に提供します。クライアントは、pszKey パラメーターに文字列 "File System Bind Data" を設定して IBindCtx::GetObjectParam を呼び出すことで、オブジェクトにアクセスします。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IFileSystemBindData "{01E18D10-4D8B-11D2-855D-006008059367}"
#usecom global IFileSystemBindData IID_IFileSystemBindData "{}"
#comfunc global IFileSystemBindData_SetFindData  3 var
#comfunc global IFileSystemBindData_GetFindData  4 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。