Win32 API 日本語リファレンス
ホームSystem.Mmc › IComponentData

IComponentData

COM
IID955ab28a-5218-11d0-a985-00c04fd8d565継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IComponentData インターフェイスは、MMC がスナップインと通信できるようにします。IComponent インターフェイスと同様に、IComponentData は通常ドキュメントレベルで実装され、スコープペインに表示される項目(フォルダー)と密接に関連付けられます。

メソッド 7

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

vtbl 3 HRESULT Initialize(IUnknown* pUnknown)

IComponentData::Initialize メソッドは、コンソールへのエントリポイントを提供します。

pUnknownIUnknown*inコンソールの IUnknown インターフェイスへのポインター。このインターフェイスポインターを使用して、 IConsole2IConsoleNameSpace2 に対する QueryInterface を呼び出すことができます。

戻り値

このメソッドは、次のいずれかの値を返すことができます。

解説(Remarks)

IComponentData::Initialize は、スナップインが作成され、スコープペインに列挙する項目がある場合に呼び出されます。渡された IUnknown へのポインターは、 IConsole2IConsoleNamespace2 などのインターフェイスをコンソールに対して取得するための QueryInterface 呼び出しに使用されます。スナップインは、 IConsole2::QueryScopeImageList も呼び出してスコープペインのイメージリストを取得し、スコープペイン側に表示するイメージを追加する必要があります。

vtbl 4 HRESULT CreateComponent(IComponent** ppComponent)

IComponentData::CreateComponent メソッドは、この IComponentData インターフェイスに関連付けられる IComponent のインスタンスを作成します。

ppComponentIComponent**out新しく作成された IComponent へのポインターを格納する場所へのポインター。

戻り値

このメソッドは、次のいずれかの値を返すことができます。

vtbl 5 HRESULT Notify(IDataObject* lpDataObject, MMC_NOTIFY_TYPE event, LPARAM arg, LPARAM param3)

IComponentData::Notify メソッドは、ユーザーが実行したアクションをスナップインに通知します。

lpDataObjectIDataObject*in現在選択されている項目のデータオブジェクトへのポインター。
eventMMC_NOTIFY_TYPEin

ユーザーが実行したアクションを識別します。IComponentData::Notify は次の通知を受け取ることができます。

MMCN_BTN_CLICK

MMCN_DELETE

MMCN_EXPAND

MMCN_EXPANDSYNC

MMCN_PRELOAD

MMCN_PROPERTY_CHANGE

MMCN_REMOVE_CHILDREN

MMCN_RENAME

argLPARAMin通知の種類によって異なります。
param3LPARAMinイベントに付随する追加パラメータで、その意味はイベントの種類により異なる。

戻り値

このメソッドは、次のいずれかの値を返すことができます。

解説(Remarks)

詳細については、個々の通知を参照してください。スナップインは、処理しない通知に対しては S_FALSE を返す必要があります。

vtbl 6 HRESULT Destroy()

IComponentData::Destroy メソッドは、コンソールへのすべての参照を解放します。

戻り値

このメソッドは、次のいずれかの値を返すことができます。

解説(Remarks)

スナップインはアンロードの処理中です。コンソールへのすべての参照を解放してください。

呼び出し元へのメモ

このメソッドを呼び出すのはコンソールのみです。
vtbl 7 HRESULT QueryDataObject(INT_PTR cookie, DATA_OBJECT_TYPES type, IDataObject** ppDataObject)

IComponentData::QueryDataObject メソッドは、指定された cookie のコンテキスト情報を取得するために使用できるデータオブジェクトを返します。

cookieINT_PTRinデータオブジェクトを必要とする一意の識別子を指定する値。
typeDATA_OBJECT_TYPESin

データオブジェクトを次のいずれかとして指定する値。

CCT_SCOPE = 0x8000

スコープペインのデータオブジェクト。

CCT_RESULT = 0x8001

結果ペインのデータオブジェクト。

CCT_SNAPIN_MANAGER = 0x8002

スナップインマネージャーコンテキストのデータオブジェクト。

CCT_UNINITIALIZED = 0xFFFF

データオブジェクトの型が無効です。

これらの定数は、 DATA_OBJECT_TYPES 列挙体のメンバーです。

ppDataObjectIDataObject**out返されるデータオブジェクトのアドレスへのポインター。

戻り値

このメソッドは、次のいずれかの値を返すことができます。

解説(Remarks)

これらのデータオブジェクトは、同じスナップインや、それらを必要とする拡張スナップインに渡すことができます。このデータオブジェクトを使用できる MMC インターフェイスには、 IComponentIComponentDataIContextMenuProviderIExtendContextMenuIExtendPropertySheet2、および IPropertySheetProvider があります。

vtbl 8 HRESULT GetDisplayInfo(SCOPEDATAITEM* pScopeDataItem)

IComponentData::GetDisplayInfo メソッドは、スコープ項目の表示情報を取得します。

pScopeDataItemSCOPEDATAITEM*inoutSCOPEDATAITEM 構造体へのポインター。入力時、構造体の mask メンバーは必要な情報の種類を指定し、lParam メンバーは対象の項目を識別します。

戻り値

このメソッドは、次のいずれかの値を返すことができます。

解説(Remarks)

pScopeDataItem パラメーターのメンバーに割り当てられたメモリを再割り当てしても安全なのは、次の場合のみです。

vtbl 9 HRESULT CompareObjects(IDataObject* lpDataObjectA, IDataObject* lpDataObjectB)

IComponentData::CompareObjects メソッドは、QueryDataObject を通じて取得した 2 つのデータオブジェクトをスナップインが比較できるようにします。データオブジェクトは、2 つの異なる IComponentData インスタンスから取得される場合があることに注意してください。

lpDataObjectAIDataObject*in比較対象となる、 IDataObject インターフェイスを公開する 1 つ目のデータオブジェクトへのポインター。
lpDataObjectBIDataObject*in比較対象となる、IDataObject インターフェイスを公開する 2 つ目のデータオブジェクトへのポインター。

戻り値

このメソッドは、次のいずれかの値を返すことができます。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IComponentData "{955AB28A-5218-11D0-A985-00C04FD8D565}"
#usecom global IComponentData IID_IComponentData "{}"
#comfunc global IComponentData_Initialize       3 sptr
#comfunc global IComponentData_CreateComponent  4 sptr
#comfunc global IComponentData_Notify           5 sptr,int,sptr,sptr
#comfunc global IComponentData_Destroy          6
#comfunc global IComponentData_QueryDataObject  7 sptr,int,sptr
#comfunc global IComponentData_GetDisplayInfo   8 var
#comfunc global IComponentData_CompareObjects   9 sptr,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。