다음을 통해 공유


IDiaPropertyStorage

DIA 속성 집합의 영구 속성을 읽을 수 있습니다.

구문

IDiaPropertyStorage : IUnknown

Vtable 순서의 메서드

다음 표에서는 IDiaPropertyStorage 메서드를 보여 줍니다.

메서드 설명
IDiaPropertyStorage::Enum 이 집합 내의 속성의 열거자에 대한 포인터를 가져옵니다.
IDiaPropertyStorage::ReadBOOL 속성 집합에서 BOOL 값을 읽습니다.
IDiaPropertyStorage::ReadBSTR 속성 집합에서 BSTR 값을 읽습니다.
IDiaPropertyStorage::ReadDWORD 속성 집합에서 DWORD 값을 읽습니다.
IDiaPropertyStorage::ReadLONG 속성 집합에서 LONG 값을 읽습니다.
IDiaPropertyStorage::ReadMultiple 속성 집합의 속성 값을 읽습니다.
IDiaPropertyStorage::ReadPropertyNames 지정된 속성 식별자에 대한 해당 문자열 이름을 가져옵니다.
IDiaPropertyStorage::ReadULONGLONG 속성 집합에서 ULONGLONG 값을 읽습니다.

설명

속성 집합 내의 각 속성은 해당 집합에 고유한 4의 바이트 ULONG 값인 속성 식별자(ID)로 식별됩니다. IDiaPropertyStorage 인터페이스를 통해 노출되는 속성은 부모 인터페이스에서 사용할 수 있는 속성에 해당합니다. 예를 들어 IDiaSymbol 인터페이스의 속성은 IDiaPropertyStorage 인터페이스를 통해 이름으로 액세스할 수 있습니다. 그러나 속성에 액세스할 수 있더라도 속성이 특정 IDiaSymbol 개체에 유효하다는 의미는 아닙니다.

호출자 참고 사항

다른 인터페이스에서 QueryInterface 메서드를 호출하여 이 인터페이스를 얻습니다. IDiaPropertyStorage 인터페이스에 대해 다음 인터페이스를 쿼리할 수 있습니다.

예시

이 예제에서는 IDiaPropertyStorage 개체에 의해 노출되는 모든 속성을 표시하는 함수를 보여 줍니다. IDiaInjectedSource 인터페이스에서 IDiaPropertyStorage 인터페이스를 가져오는 방법의 예는 IDiaEnumInjectedSources 인터페이스를 참조하세요.

void PrintPropertyStorage(IDiaPropertyStorage* pPropertyStorage)
{
    IEnumSTATPROPSTG* pEnumProps;
    STATPROPSTG       prop;
    DWORD             celt = 1;

    if (pPropertyStorage->Enum(&pEnumProps) == S_OK)
    {
        while (pEnumProps->Next(celt, &prop, &celt) == S_OK)
        {
            PROPSPEC pspec = { PRSPEC_PROPID, prop.propid };
            PROPVARIANT vt = { VT_EMPTY };

            if (pPropertyStorage->ReadMultiple( 1, &pspec, &vt) == S_OK)
            {
                switch( vt.vt ){
                    case VT_BOOL:
                        wprintf( L"%32s:\t %s\n", prop.lpwstrName, vt.bVal ? L"true" : L"false" );
                        break;
                    case VT_I2:
                        wprintf( L"%32s:\t %d\n", prop.lpwstrName, vt.iVal );
                        break;
                    case VT_UI2:
                        wprintf( L"%32s:\t %d\n", prop.lpwstrName, vt.uiVal );
                        break;
                    case VT_I4:
                        wprintf( L"%32s:\t %d\n", prop.lpwstrName, vt.intVal );
                        break;
                    case VT_UI4:
                        wprintf( L"%32s:\t 0x%0x\n", prop.lpwstrName, vt.uintVal );
                        break;
                    case VT_UI8:
                        wprintf( L"%32s:\t 0x%x\n", prop.lpwstrName, vt.uhVal.QuadPart );
                        break;
                    case VT_BSTR:
                        wprintf( L"%32s:\t %s\n", prop.lpwstrName, vt.bstrVal );
                        break;
                    case VT_UNKNOWN:
                        wprintf( L"%32s:\t %p\n", prop.lpwstrName, vt.punkVal );
                        break;
                    case VT_SAFEARRAY:
                        break;
                    default:
                       break;
                }
                VariantClear((VARIANTARG*) &vt);
            }
        }
        pEnumProps->Release();
    }
}

요구 사항

헤더: Dia2.h

라이브러리: diaguids.lib

DLL: msdia80.dll

참고 항목