Partager via


Méthode IDataModelManager2 ::CreateIntrinsicObject (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èle de données retourne un IModelObject représentant l’objet. Notez que cette méthode est également utilisée pour boxer des types fondamentaux basés sur IUnknown : accesseurs de propriété, méthodes, contextes, etc... Dans ce cas, la méthode objectKind indique le type de construction basée sur IUnknown que 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 sur l’interface de modèle appropriée (par exemple : IModelPropertyAccessor, IModelMethod, IDebugHostContext, etc...) en cours de traitement.

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 en cours de boîte. Pour les intrinsèques normales qui diffèrent par le type variant, ObjectIntrinsic est passé ici. Pour d’autres qui sont en fait des 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) sera retournée ici.

Valeur retournée

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

Remarques

Exemple de Code

ComPtr<IDataModelManager2> 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.
}

Interface IDataModelManager2

Configuration requise

Condition requise Valeur
En-tête dbgmodel.h