Поделиться через


IDiaPropertyStorage

Позволяет считывать постоянные свойства набора свойств DIA.

Синтаксис

IDiaPropertyStorage : IUnknown

Методы в порядке таблицы Vtable

В следующей таблице показаны методы IDiaPropertyStorage.

Метод Description
IDiaPropertyStorage::Enum Возвращает указатель на перечислитель для свойств в этом наборе.
IDiaPropertyStorage::ReadBOOL Считывает BOOL значения в наборе свойств.
IDiaPropertyStorage::ReadBSTR Считывает BSTR значения в наборе свойств.
IDiaPropertyStorage::ReadDWORD Считывает DWORD значения в наборе свойств.
IDiaPropertyStorage::ReadLONG Считывает LONG значения в наборе свойств.
IDiaPropertyStorage::ReadMultiple Считывает значения свойств в наборе свойств.
IDiaPropertyStorage::ReadPropertyNames Возвращает соответствующие имена строк для заданных идентификаторов свойств.
IDiaPropertyStorage::ReadULONGLONG Считывает ULONGLONG значения в наборе свойств.

Замечания

Каждое свойство в наборе свойств определяется идентификатором свойства (ID), четырехбайтовым ULONG значением, уникальным для этого набора. Свойства, IDiaPropertyStorage предоставляемые через интерфейс, соответствуют свойствам, доступным в родительском интерфейсе. Например, свойства интерфейса IDiaSymbol можно получить по имени через IDiaPropertyStorage интерфейс (обратите внимание, что даже если свойство может быть доступным, это не означает, что свойство допустимо для определенного IDiaSymbol объекта).

Заметки для вызывающих абонентов

Получите этот интерфейс, вызвав метод в другом интерфейсе QueryInterface . Для интерфейса можно запросить IDiaPropertyStorage следующие интерфейсы:

Пример

В этом примере показана функция, отображающая все свойства, предоставляемые IDiaPropertyStorage объектом. Пример получения интерфейса IDiaInjectedSources см. в интерфейсе IDiaPropertyStorageIDiaInjectedSource.

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();
    }
}

Requirements

Заголовок: Dia2.h

Библиотека: diaguids.lib

DLL: msdia80.dll

См. также