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 см. в интерфейсе IDiaPropertyStorage
IDiaInjectedSource.
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