次の方法で共有


SCOPEDATAITEM 構造体 (mmc.h)

SCOPEDATAITEM 構造体は、スコープ ウィンドウに挿入する項目を指定します。

構文

typedef struct _SCOPEDATAITEM {
  DWORD      mask;
  LPOLESTR   displayname;
  int        nImage;
  int        nOpenImage;
  UINT       nState;
  int        cChildren;
  LPARAM     lParam;
  HSCOPEITEM relativeID;
  HSCOPEITEM ID;
} SCOPEDATAITEM;

メンバー

mask

構造体のどのメンバーに有効なデータが含まれているかを示すフラグの配列を指定する 値。 この構造体を IConsoleNameSpace2::GetItem メソッドで使用すると、取得する項目属性が示されます。 このメンバーには、次のいずれかの値を指定できます。

SDI_STR (0x00002)

構造体の displayname メンバーが有効です。 SDI_STR は、 displayname メンバーの値を指定する場合にのみサポートされます。 MMC は displayname メンバーの値を格納せず、 IConsoleNamespace2::GetItem メソッドを呼び出して取得することはできません。

SDI_IMAGE (0x00004)

構造体の nImage メンバーが有効であるか、入力する必要があります。

SDI_OPENIMAGE (0x00008)

構造体の nOpenImage メンバーが有効であるか、入力する必要があります。

SDI_STATE (0x00010)

構造体の nState メンバーが有効であるか、入力する必要があります。

SDI_PARAM (0x00020)

構造体の lParam メンバーが有効であるか、入力する必要があります。

SDI_CHILDREN (0x00040)

構造体の cChildren メンバーが有効であるか、入力する必要があります。

SDI_PARENT (0x00000000)

スコープ ウィンドウに項目を挿入する場合にのみ使用します。 構造体の relativeID メンバーは、親の HSCOPEITEM です 。 項目は、 relativeID によって参照される項目の最後の子として挿入されます。

SDI_PREVIOUS (0x10000000)

スコープ ウィンドウに項目を挿入する場合にのみ使用します。 構造体の relativeID メンバーは、前の兄弟の HSCOPEITEM です。

SDI_NEXT (0x20000000)

スコープ ウィンドウに項目を挿入する場合にのみ使用します。 構造体の relativeID メンバーは、次の兄弟の HSCOPEITEM です。

SDI_FIRST (0x08000000)

スコープ ウィンドウに項目を挿入する場合にのみ使用します。 構造体の relativeID メンバーは、親の HSCOPEITEM です 。 項目は、 relativeID によって参照される項目の最初の子として挿入されます。

displayname

値または null で終わる文字列へのポインターをMMC_CALLBACKします。これは、構造体の使用方法によって異なります。

  • IConsoleNameSpace2::InsertItem を使用して項目を挿入する場合、このメンバーはMMC_CALLBACKに設定する必要があります。
  • IConsoleNameSpace2::SetItem を使用してスナップインによって挿入されたアイテムの名前を変更する場合は、このメンバーを MMC_CALLBACK に設定する必要があります。
  • 静的ノード (コンソールが挿入する項目) の名前を変更すると、このメンバーを MMC_CALLBACKに設定することも、項目テキストを含む null で終わる文字列へのポインターにすることもできます。
スナップインでは、 MMC_CALLBACKではなくMMC_TEXTCALLBACK を使用できることに注意 してくださいMMC_TEXTCALLBACK値は、MMC_CALLBACKの型が正しい (キャストする必要がない) バージョンです。

MMC_TEXTCALLBACK は MMC バージョン 1.2 で導入されています。

nImage

項目が選択されていない状態にある場合のイメージ リスト内の仮想イメージ インデックス。 仮想イメージ インデックスは、内部的に実際のインデックスにマップされていることに注意してください。 このメンバーは、コールバック項目として指定することもできます: MMC_CALLBACK または MMC_IMAGECALLBACKMMC_IMAGECALLBACKは、MMC_CALLBACKの型が正しい (キャストする必要がない) バージョンです。

MMC_IMAGECALLBACK は MMC バージョン 1.2 で導入されています。

nOpenImage

項目が選択された状態にある場合のイメージ リスト内の仮想イメージ インデックス。 仮想イメージ インデックスは、内部的に実際のインデックスにマップされていることに注意してください。 アイテムは、Microsoft Windows エクスプローラーのフォルダーのようなものです。 アイコンは開いているフォルダー用です。

nState

項目の状態マスクを指定する 値。 IConsoleNameSpace2::GetItem の場合、このメンバーはアイテムが少なくとも 1 回展開されている場合は MMC_SCOPE_ITEM_STATE_EXPANDEDONCE、展開されていない場合は 0 (ゼロ) を返します。

このメンバーは、 IConsoleNameSpace2::InsertItem および IConsoleNameSpace2::SetItem では無視されます。

cChildren

列挙された項目の数を示す 値です。

スナップインは、スコープ項目を挿入するときに、 cChildren フィールドを 0 (ゼロ) に設定し、次の両方の条件が満たされた場合は SDI_CHILDREN フラグを設定する必要があります。

  • スナップインには、挿入された項目の下に追加する子項目がありません。
  • スナップインでは、このアイテムの名前空間拡張スナップインは動的に有効になりません。
それ以外の場合は、スコープ項目を挿入するときに、 cChildren フィールドを 1 (1) に設定するか、まったく設定しない必要があります。

後で条件が変更された場合、スナップインは IConsoleNameSpace2::SetItem を使用して cChildren フィールドを変更できます。

子の数を決定するのにかなりの時間がかかる場合、スナップインは挿入時に最適な推測を使用し、MMC ユーザー インターフェイスがロックアウトされないように別のスレッドで実際の判断を行う必要があります。 IConsoleNameSpace2::SetItem を使用して、必要に応じて設定を修正できます。

MMC は 、cChildren カウントが 0 (ゼロ) のスコープアイテムを検出すると、ユーザーまたは IRequiredExtensions インターフェイスによってアイテムに対して静的に有効になっている名前空間拡張機能を確認します。 何も有効になっていない場合、プラス記号 (+) は項目から削除されます。

項目が展開されると、プラス記号の状態は、存在する子項目の実際の数によって決まります。

lParam

項目に関連付けるユーザー指定の 32 ビット値を指定する 値。 この項目は Cookie とも呼ばれ、 IComponentData::QueryDataObject に最初のパラメーターとして渡される値です。

relativeID

コンソールで提供される一意の項目識別子。 項目は、このメンバーが指定する項目に対する相対位置に挿入されます。 マスク設定によって相対位置が決まります。

relativeID の解釈方法を決定するには、マスク メンバーとして次のいずれかの定数を指定します。

SDI_PARENT

relativeID は親の HSCOPEITEM です 。 アイテムは、親アイテムの最後の子として挿入されます。 SDI_PARENTの値は、既定では親アイテム ID が relativeID であるため、操作がないことを示します。

SDI_PREVIOUS

relativeID は、前の兄弟の HSCOPEITEM です。

SDI_NEXT

relativeID は、次の兄弟の HSCOPEITEM です。

SDI_FIRST

項目が最初の子として挿入される点を除き、SDI_PARENTと同じです。

ID

スコープ項目のコンソール指定の一意識別子を指定する 値。 この値は、一部の IConsole2 および IConsoleNameSpace2 インターフェイス メソッドの呼び出しのスコープ ペイン内の項目 識別するために使用されます。

スナップインが (IConsoleNameSpace2::InsertItem を使用して) スコープ ウィンドウに項目を正常に挿入すると、SCOPEDATAITEM 構造体の ID メンバーには、新しく挿入された項目の HSCOPEITEM ハンドルが含まれます。 このハンドルは、スコープ 項目の一意の識別子です。

静的ノードの場合、MMC はスナップインのスコープ ウィンドウに項目を挿入します。 次に、MMC は静的ノードの HSCOPEITEM を、MMCN_EXPAND通知の param パラメーターとしてスナップインに渡します。

スナップインでは、挿入された各項目の HSCOPEITEM を 格納し、後で IConsole2 インターフェイスと IConsoleNameSpace2 インターフェイスのメソッドを使用してアイテムを操作するために使用 する 必要があることに注意してください。

解説

項目を静的ノードの兄弟として挿入することはできません。 スナップインで relativeID メンバーを静的ノードの HSCOPEITEM に設定し、 SDI_PREVIOUS フラグまたは SDI_NEXT フラグを 設定し、 IConsoleNameSpace2::InsertItem を呼び出すと、MMC は E_INVALIDARGを返します。

要件

   
サポートされている最小のクライアント Windows Vista
サポートされている最小のサーバー Windows Server 2008
Header mmc.h

関連項目

IComponentData

IComponentData::GetDisplayInfo

IConsoleNameSpace2::GetItem

IConsoleNameSpace2::InsertItem

IConsoleNameSpace2::SetItem