다음을 통해 공유


TYPE_INFO

이 구조체는 필드 형식에 대한 다양한 종류의 정보를 지정합니다.

구문

public struct TYPE_INFO {
   public uint   dwKind;
   public IntPtr unionmember;
};

멤버

dwKind
공용 구조체를 해석하는 방법을 결정하는 dwTYPE_KIND 열거형의 값입니다.

type.typeMeta
[C++만 해당] dwKindTYPE_KIND_METADATA인 경우 METADATA_TYPE 구조체를 포함합니다.

type.typePdb
[C++만 해당] dwKindTYPE_KIND_PDB인 경우 PDB_TYPE 구조체를 포함합니다.

type.typeBuilt
[C++만 해당] dwKindTYPE_KIND_BUILT인 경우 BUILT_TYPE 구조체를 포함합니다.

type.unused
사용되지 않는 안쪽 여백입니다.

type
공용 구조체의 이름입니다.

unionmember
[C#만 해당] dwKind에 따라 적절한 구조체 형식으로 마샬링합니다.

설명

이 구조체는 채워진 GetTypeInfo 메서드에 전달됩니다. 구조체의 내용을 해석하는 방법은 dwKind 필드를 기준으로 합니다.

참고 항목

[C++만 해당] dwKindTYPE_KIND_BUILT인 경우 TYPE_INFO 구조체를 삭제할 때 기본 IDebugField 개체를 해제해야 합니다. 이를 위해 typeInfo.type.typeBuilt.pUnderlyingField->Release()를 호출합니다.

[C#만 해당] 다음 표에서는 각 종류의 형식에 대해 unionmember 멤버를 해석하는 방법을 보여 줍니다. 예제에서는 한 종류의 형식에 대해 해석하는 방법을 보여 줍니다.

dwKind unionmember가 해석되는 값
TYPE_KIND_METADATA METADATA_TYPE
TYPE_KIND_PDB PDB_TYPE
TYPE_KIND_BUILT BUILT_TYPE

예시

다음 예제에서는 C#에서 TYPE_INFO 구조체의 unionmember 멤버를 해석하는 방법을 보여 줍니다. 이 예제는 한 형식(TYPE_KIND_METADATA)만 해석하지만 다른 형식도 정확히 동일한 방식으로 해석됩니다.

using System;
using System.Runtime.Interop.Services;
using Microsoft.VisualStudio.Debugger.Interop;

namespace MyPackage
{
    public class MyClass
    {
        public void Interpret(TYPE_INFO ti)
        {
            if (ti.dwKind == (uint)enum_dwTypeKind.TYPE_KIND_METADATA)
            {
                 METADATA_TYPE dataType = (METADATA_TYPE)Marshal.PtrToStructure(ti.unionmember,
                                               typeof(METADATA_TYPE));
            }
        }
    }
}

요구 사항

헤더: sh.h

네임스페이스: Microsoft.VisualStudio.Debugger.Interop

어셈블리: Microsoft.VisualStudio.Debugger.Interop.dll

참고 항목