IDataModelManager::CreateIntrinsicObject, méthode (dbgmodel.h)

La méthode CreateIntrinsicObject est la méthode qui boxe les valeurs intrinsèques dans IModelObject. L’appelant place la valeur dans un VARIANT COM et appelle cette méthode. Le gestionnaire de modèles de données retourne un IModelObject représentant l’objet. Notez que cette méthode est également utilisée pour boxer des types basés sur IUnknown fondamentaux : accesseurs de propriétés, méthodes, contextes, etc. Dans ce cas, la méthode objectKind indique quel type de construction basée sur IUnknown l’objet représente et le champ punkVal de la variante passée est le type dérivé IUnknown. Le type doit être statiquement castable à l’interface de modèle appropriée (par exemple: IModelPropertyAccessor, IModelMethod, IDebugHostContext, etc...) en cours.

Les types VARIANT pris en charge par cette méthode sont VT_UI1, VT_I1, VT_UI2, VT_I2, VT_UI4, VT_I4, VT_UI8, VT_I8, VT_R4, VT_R8, VT_BOOL, VT_BSTR et VT_UNKNOWN (pour un ensemble spécialisé de types dérivés IUnknown, comme indiqué par l’énumération ModelObjectKind).

Syntaxe

HRESULT CreateIntrinsicObject(
  ModelObjectKind objectKind,
  VARIANT         *intrinsicData,
  IModelObject    **object
);

Paramètres

objectKind

Indique le type d’objet qui est boxé. Pour les intrinsèques normaux qui diffèrent du type variant, ObjectIntrinsic est passé ici. Pour d’autres interfaces dérivées IUnknown, le type d’objet est l’une des valeurs de l’énumération ModelObjectKind et l’interface dans le VARIANT doit correspondre.

intrinsicData

VARIANT contenant la valeur qui va être boxée à l’intérieur d’un conteneur IModelObject .

object

La valeur nouvellement boxée (en tant qu’IModelObject) est retournée ici.

Valeur retournée

Cette méthode retourne HRESULT qui indique la réussite ou l’échec.

Notes

Exemple de Code

ComPtr<IDataModelManager> spManager; /* get the data model manager */

VARIANT vtValue;
vtValue.vt = VT_I4;
vtValue.lVal = 42;

// If the object is an VT_UNKNOWN, the first argument to CreateIntrinsicObject
// indicates what KIND of IUnknown.  For example, ObjectPropertyAccessor would 
// indicate IModelPropertyAccessor.  ObjectMethod would indicate IModelMethod, etc...
ComPtr<IModelObject> spValue;
if (SUCCEEDED(spManager->CreateIntrinsicObject(ObjectIntrinsic, &vtValue, &spValue)))
{
    // spValue now contains the object (boxed) representation of the int value 42.
}

Spécifications

   
En-tête dbgmodel.h

Voir aussi

Interface IDataModelManager