IDiaPropertyStorage
Позволяет считывать постоянные свойства набора свойств DIA.
IDiaPropertyStorage : IUnknown
Методы в том порядке Vtable
В следующей таблице показаны методы IDiaPropertyStorage.
Метод |
Описание |
---|---|
Получает указатель на перечислитель для свойств, входящих в этот набор. |
|
Считывает BOOL значения в наборе свойств. |
|
Считывает BSTR значения в наборе свойств. |
|
Считывает DWORD значения в наборе свойств. |
|
Считывает LONG значения в наборе свойств. |
|
Считывает значения свойств в наборе свойств. |
|
Имена Возвращает соответствующие строки для заданного идентификатора свойства. |
|
Считывает ULONGLONG значения в наборе свойств. |
Заметки
Каждое свойство в наборе свойств определяется по идентификатору (id), 4 байт ULONG значение уникально в этот набор. Свойства, предоставляемые через IDiaPropertyStorage интерфейс соответствует свойствам, доступным в родительском интерфейсе. Например, свойства IDiaSymbol интерфейс можно получить доступ по имени через IDiaPropertyStorage интерфейс (однако следует отметить, что даже если свойство может быть доступно, она не допустима в частности - свойство IDiaSymbol объект).
Замечания для вызывающих объектов
Для получения этого интерфейса нужно вызвать метод QueryInterface метод другого интерфейса. Следующие интерфейсы могут запросить IDiaPropertyStorage интерфейс:
Пример
В этом примере показана функция, которая показывает все свойства, предоставляемые IDiaPropertyStorage объект. См. IDiaEnumInjectedSources интерфейс пример 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();
}
}
Требования
Заголовок: Dia2.h
Библиотеки: diaguids.lib
Библиотеки DLL: msdia80.dll