Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Метод CreateIntrinsicObject — это метод, который упаковывает встроенные значения в IModelObject. Вызывающий объект помещает значение в COM VARIANT и вызывает этот метод. Диспетчер моделей данных возвращает IModelObject, представляющую объект. Обратите внимание, что этот метод также используется для поля основных типов на основе IUnknown: методы доступа к свойствам, методы, контексты и т. д. В таких случаях метод objectKind указывает, какой вид конструкции на основе IUnknown представляет объект, а поле punkVal переданного варианта является производным типом IUnknown. Тип должен быть статически приведение к соответствующему интерфейсу модели (например, IModelPropertyAccessor, IModelMethod, IDebugHostContextи т. д.).
Типы VARIANT, поддерживаемые этим методом, являются VT_UI1, VT_I1, VT_UI2, VT_I2, VT_UI4, VT_I4, VT_UI8, VT_I8, VT_R4, VT_R8, VT_BOOL, VT_BSTR и VT_UNKNOWN (для специализированного набора производных типов IUnknown, как указано в перечислении ModelObjectKind.
Синтаксис
HRESULT CreateIntrinsicObject(
ModelObjectKind objectKind,
VARIANT *intrinsicData,
IModelObject **object
);
Параметры
objectKind
Указывает тип объекта, который находится в поле. Для обычных встроенных элементов, которые отличаются типом варианта, ObjectIntrinsic передается здесь. Для других, которые фактически являются производными интерфейсами IUnknown, тип объекта является одним из значений перечисления ModelObjectKind, а интерфейс в VARIANT должен совпадать.
intrinsicData
Variant, содержащий значение, которое будет упаковаться в контейнер IModelObject.
object
Новое поле (как IModelObject) будет возвращено здесь.
Возвращаемое значение
Этот метод возвращает HRESULT, указывающий на успех или сбой.
Замечания
пример кода
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.
}
Требования
Требование | Ценность |
---|---|
заголовка | dbgmodel.h |