Método IDataModelManager2::CreateIntrinsicObject (dbgmodel.h)
O método CreateIntrinsicObject é o método que armazena valores intrínsecos em IModelObject. O chamador coloca o valor em uma VARIANT 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 fazer a caixa de 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 estaticamente castável 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 de 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 em caixa. Para intrínsecos normais que diferem pelo tipo variante, ObjectIntrinsic é passado aqui. Para outras que são efetivamente interfaces derivadas de IUnknown, 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á colocado em caixa dentro de um contêiner IModelObject .
object
O valor recém-boxizado (como um IModelObject) será retornado aqui.
Retornar valor
Esse método retorna HRESULT que indica êxito ou falha.
Comentários
Código de exemplo
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.
}
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | dbgmodel.h |