SCOPEDATAITEM, structure (mmc.h)

La structure SCOPEDATAITEM spécifie les éléments à insérer dans le volet d’étendue.

Syntaxe

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

Membres

mask

Valeur qui spécifie un tableau d’indicateurs qui indiquent quels membres de la structure contiennent des données valides. Lorsque cette structure est utilisée dans la méthode IConsoleNameSpace2::GetItem , elle indique les attributs d’élément à récupérer. Ce membre peut être l’une des valeurs suivantes.

SDI_STR (0x00002)

Le membre displayname de la structure est valide. SDI_STR est pris en charge uniquement lorsque vous spécifiez une valeur pour le membre displayname . MMC ne stocke pas la valeur du membre displayname et elle ne peut pas être récupérée en appelant la méthode IConsoleNamespace2::GetItem .

SDI_IMAGE (0x00004)

Le membre nImage de la structure est valide ou doit être renseigné.

SDI_OPENIMAGE (0x00008)

Le membre nOpenImage de la structure est valide ou doit être renseigné.

SDI_STATE (0x00010)

Le membre nState de la structure est valide ou doit être renseigné.

SDI_PARAM (0x00020)

Le membre lParam de la structure est valide ou doit être renseigné.

SDI_CHILDREN (0x00040)

Le membre cChildren de la structure est valide ou doit être renseigné.

SDI_PARENT (0x00000000)

Utilisez uniquement lors de l’insertion d’éléments dans le volet d’étendue. Le membre relativeID de la structure est le HSCOPEITEM du parent. L’élément est inséré en tant que dernier enfant de l’élément référencé par relativeID.

SDI_PREVIOUS (0x10000000)

Utilisez uniquement lors de l’insertion d’éléments dans le volet d’étendue. Le membre relativeID de la structure est le HSCOPEITEM du frère précédent.

SDI_NEXT (0x20000000)

Utilisez uniquement lors de l’insertion d’éléments dans le volet d’étendue. Le membre relativeID de la structure est le HSCOPEITEM du frère suivant.

SDI_FIRST (0x08000000)

Utilisez uniquement lors de l’insertion d’éléments dans le volet d’étendue. Le membre relativeID de la structure est le HSCOPEITEM du parent. L’élément est inséré en tant que premier enfant de l’élément référencé par relativeID.

displayname

MMC_CALLBACK valeur ou un pointeur vers une chaîne terminée par null, qui dépend de la façon dont la structure est utilisée.

  • Lorsqu’un élément est inséré à l’aide de IConsoleNameSpace2::InsertItem, ce membre doit être défini sur MMC_CALLBACK.
  • Lorsque le nom d’un élément inséré par le composant logiciel enfichable est modifié à l’aide de IConsoleNameSpace2::SetItem, ce membre doit être défini sur MMC_CALLBACK.
  • Lorsque le nom du nœud statique (élément inséré par la console) est modifié, ce membre peut être défini sur MMC_CALLBACK ou être un pointeur vers la chaîne terminée par null qui contient le texte de l’élément.
N’oubliez pas que le composant logiciel enfichable peut utiliser MMC_TEXTCALLBACK au lieu de MMC_CALLBACK. La valeur MMC_TEXTCALLBACK est une version correcte de type (aucun cast nécessaire) de MMC_CALLBACK.

MMC_TEXTCALLBACK est introduit dans MMC version 1.2.

nImage

Index d’image virtuelle dans la liste d’images lorsque l’élément est dans l’état non sélectionné. N’oubliez pas que l’index d’image virtuelle est mappé en interne à l’index réel. Ce membre peut également être spécifié en tant qu’élément de rappel : MMC_CALLBACK ou MMC_IMAGECALLBACK. Le MMC_IMAGECALLBACK est une version correcte de type (aucune conversion nécessaire) de MMC_CALLBACK.

MMC_IMAGECALLBACK est introduit dans MMC version 1.2.

nOpenImage

Index d’image virtuelle dans la liste d’images lorsque l’élément est dans l’état sélectionné. N’oubliez pas que l’index d’image virtuelle est mappé en interne à l’index réel. L’élément est semblable à un dossier dans Microsoft Windows Explorer. L’icône est destinée à un dossier ouvert.

nState

Valeur qui spécifie le masque d’état pour l’élément. Pour IConsoleNameSpace2::GetItem, ce membre retourne MMC_SCOPE_ITEM_STATE_EXPANDEDONCE si l’élément a été développé au moins une fois, ou 0 (zéro) si l’élément n’a pas été développé.

Ce membre est ignoré pour IConsoleNameSpace2::InsertItem et IConsoleNameSpace2::SetItem.

cChildren

Valeur qui spécifie le nombre d’éléments énumérés.

Lorsqu’un composant logiciel enfichable insère un élément d’étendue, il doit définir le champ cChildren sur 0 (zéro) et définir l’indicateur SDI_CHILDREN si les deux conditions suivantes sont remplies :

  • Le composant logiciel enfichable n’a pas d’éléments enfants à ajouter sous l’élément inséré.
  • Le composant logiciel enfichable n’active dynamiquement aucun composant logiciel enfichable d’extension d’espace de noms pour cet élément.
Sinon, lors de l’insertion d’un élément d’étendue, le champ cChildren doit être défini sur 1 (un), ou pas du tout.

Si les conditions changent ultérieurement, le composant logiciel enfichable peut modifier le champ cChildren à l’aide de IConsoleNameSpace2::SetItem.

S’il faut beaucoup de temps pour déterminer le nombre d’enfants, le composant logiciel enfichable doit utiliser une estimation optimale au moment de l’insertion et effectuer la détermination réelle sur un autre thread afin que l’interface utilisateur MMC ne soit pas verrouillée. IConsoleNameSpace2::SetItem peut être utilisé pour corriger le paramètre si nécessaire.

Lorsque MMC détecte un élément d’étendue avec un nombre cChildren égal à 0 (zéro), il recherche les extensions d’espace de noms qui ont été activées statiquement pour l’élément par l’utilisateur ou l’interface IRequiredExtensions . Si aucun n’est activé, le signe plus (+) est supprimé de l’élément.

Une fois qu’un élément est développé, l’état du signe plus est déterminé par le nombre réel d’éléments enfants présents.

lParam

Valeur qui spécifie une valeur 32 bits fournie par l’utilisateur à associer à l’élément. Cet élément, également appelé cookie, est la valeur qui est passée comme premier paramètre à IComponentData::QueryDataObject.

relativeID

Identificateur d’élément unique fourni par la console. Un élément est inséré à une position par rapport à l’élément spécifié par ce membre. Les paramètres du masque déterminent la position relative.

Pour déterminer comment relativeID est interprété, spécifiez l’une des constantes suivantes comme membre du masque .

SDI_PARENT

relativeID est le HSCOPEITEM du parent. L’élément est inséré en tant que dernier enfant de l’élément parent. La valeur de SDI_PARENT indique qu’il s’agit d’un no-op, car par défaut, l’ID d’élément parent est relatifID.

SDI_PREVIOUS

relativeID est le HSCOPEITEM du frère précédent.

SDI_NEXT

relativeID est le HSCOPEITEM du frère suivant.

SDI_FIRST

Identique à SDI_PARENT, sauf que l’élément est inséré en tant que premier enfant.

ID

Valeur qui spécifie un identificateur unique fourni par la console pour l’élément d’étendue. Cette valeur est utilisée pour identifier un élément dans le volet d’étendue des appels à certaines méthodes d’interface IConsole2 et IConsoleNameSpace2 .

Une fois que le composant logiciel enfichable a correctement inséré un élément dans le volet d’étendue (à l’aide de IConsoleNameSpace2::InsertItem), le membre ID de la structure SCOPEDATAITEM contient le handle HSCOPEITEM de l’élément nouvellement inséré. Ce handle est l’identificateur unique de l’élément d’étendue.

Pour un nœud statique, MMC insère un élément dans le volet d’étendue du composant logiciel enfichable. Ensuite, MMC transmet le HSCOPEITEM du nœud statique au composant logiciel enfichable en tant que paramètre param dans la notification MMCN_EXPAND .

N’oubliez pas que les composants logiciels enfichables doivent stocker l’élément HSCOPEITEM de chaque élément inséré et l’utiliser ultérieurement pour manipuler l’élément à l’aide des méthodes des interfaces IConsole2 et IConsoleNameSpace2 .

Notes

Il n’est pas valide d’insérer un élément en tant que frère du nœud statique. Si un composant logiciel enfichable définit le membre relativeID sur le HSCOPEITEM du nœud statique, définit les indicateurs SDI_PREVIOUS ou SDI_NEXT , puis appelle IConsoleNameSpace2::InsertItem, la console MMC retourne E_INVALIDARG.

Spécifications

   
Client minimal pris en charge Windows Vista
Serveur minimal pris en charge Windows Server 2008
En-tête mmc.h

Voir aussi

IComponentData

IComponentData::GetDisplayInfo

IConsoleNameSpace2::GetItem

IConsoleNameSpace2::InsertItem

IConsoleNameSpace2::SetItem