다음을 통해 공유


IDataModelManager2::CreateTypedIntrinsicObject 메서드(dbgmodel.h)

CreateTypedintrinsicObject 메서드는 네이티브/언어 형식을 데이터와 연결하고 boxed 값과 함께 사용할 수 있다는 점을 제외하고 CreateIntrinsicObject 메서드와 유사합니다. 이렇게 하면 데이터 모델이 네이티브 열거형 형식(단순히 VT_UI* 또는 VT_I* 값)과 같은 구문을 나타낼 수 있습니다. 포인터 형식도 이 메서드를 사용하여 만들어집니다. 데이터 모델의 네이티브 포인터는 디버그 대상의 가상 주소 공간에 대한 오프셋을 나타내는 0개의 확장된 64비트 수량입니다. 이 메서드는 VT_UI8 내에 상자로 표시되며 이 메서드와 네이티브/언어 포인터를 나타내는 형식으로 만들어집니다.

구문

HRESULT CreateTypedIntrinsicObject(
  VARIANT        *intrinsicData,
  IDebugHostType *type,
  IModelObject   **object
);

매개 변수

intrinsicData

IModelObject 컨테이너 내에 boxd될 값을 포함하는 VARIANT입니다. 이 메서드는 VT_UNKNOWN 구문을 지원하지 않습니다. 이 메서드에 전달된 모든 항목은 ObjectIntrinsic으로 표현할 수 있어야 합니다.

type

값의 네이티브/언어 형식입니다.

object

새로 상자가 지정된 값( IModelObject)이 여기에 반환됩니다.

반환 값

이 메서드는 성공 또는 실패를 나타내는 HRESULT를 반환합니다.

설명

예제 코드

ComPtr<IDataModelManager> spManager; /* get the data model manager */
ComPtr<IDebugHostType> spEnumType;   /* get an enum type (see CreateTypedObject) */
ComPtr<IDebugHostType> spPtrType;    /* get a pointer type (see CreateTypedObject) */

// Box an enum
VARIANT vtEnumValue;
vtEnumValue.vt = VT_I4;
vtEnumValue.lVal = 2;

ComPtr<IModelObject> spEnumValue;
if (SUCCEEDED(spManager->CreateTypedIntrinsicObject(&vtEnumValue, 
                                                    spEnumType.Get(), 
                                                    &spEnumValue)))
{
    // spEnumValue now contains the value '2' expressed as the enum type 
    // in spEnumType.  The value will still present as 2 and operate as any other int.
    // A type query on the object will, however, yield the enum type.
}

// Box a pointer.  All pointers are represented as unsigned 64-bit values.  
// 32-bit pointers are **ZERO EXTENDED** to 64-bits.
VARIANT vtPtrValue;
vtPtrValue.vt = VT_UI8;
vtPtrValue.ullVal = 0x100; // the pointer address

ComPtr<IModelObject> spPtrValue;
if (SUCCEEDED(spManager->CreateTypedIntrinsicObject(&vtPtrValue, spPtrType.Get(), &spPtrValue)))
{
    // spPtrValue now contains a <TYPE (POINTER)>(0x100).  You can fetch 
    // the pointer address through standard means of GetIntrinsicValue(As).
    // Dereference() will work on spPtrValue!
}

요구 사항

요구 사항
헤더 dbgmodel.h

추가 정보

IDataModelManager2 인터페이스