Método IDataModelManager::CreateIntrinsicObject (dbgmodel.h)

O método CreateIntrinsicObject é o método que coloca valores intrínsecos em IModelObject. O chamador coloca o valor em uma VARIANTE COM e chama esse método. O gerenciador de modelos de dados retorna um IModelObject que representa o objeto. Observe que esse método também é usado para encaixotar tipos fundamentais baseados em IUnknown: acessadores de propriedade, métodos, contextos etc... Nesses casos, o método objectKind indica que tipo de construção baseada em IUnknown o objeto representa e o campo punkVal da variante passada é o tipo derivado de IUnknown. O tipo deve ser castível estaticamente para a interface de modelo apropriada (por exemplo: IModelPropertyAccessor, IModelMethod, IDebugHostContext, etc...) em processo.

Os tipos VARIANT compatíveis com esse método são VT_UI1, VT_I1, VT_UI2, VT_I2, VT_UI4, VT_I4, VT_UI8, VT_I8, VT_R4, VT_R8, VT_BOOL, VT_BSTR e VT_UNKNOWN (para um conjunto especializado de tipos derivados IUnknown, conforme indicado pela enumeração ModelObjectKind.

Sintaxe

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

Parâmetros

objectKind

Indica o tipo de objeto que está sendo encaixoado. Para intrínsecos normais que diferem pelo tipo variante, ObjectIntrinsic é passado aqui. Para outras que são interfaces derivadas de IUnknown efetivamente, o tipo de objeto é um dos valores na enumeração ModelObjectKind e a interface na VARIANT deve corresponder.

intrinsicData

Uma VARIANT que contém o valor que será em caixa dentro de um contêiner IModelObject .

object

O valor recém-em caixa (como um IModelObject) será retornado aqui.

Valor retornado

Esse método retorna HRESULT que indica êxito ou falha.

Comentários

Código de exemplo

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

Requisitos

   
Cabeçalho dbgmodel.h

Confira também

Interface IDataModelManager