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 值。 |
备注
属性集内的每个属性都由一个属性标识符 (ID) 标识,这是一个唯一的由四个字节 ULONG
构成的值集。 通过 IDiaPropertyStorage
接口公开的属性对应于父接口中的可用属性。 例如,可以通过 IDiaPropertyStorage
接口按名称访问 IDiaSymbol 接口的属性(请注意,即使属性可以访问,它也并不意味着属性对于特定 IDiaSymbol
对象有效)。
对调用者的说明
通过在其他接口调用 QueryInterface
方法来获取此接口。 可以为 IDiaPropertyStorage
接口查询以下接口:
示例
此示例演示一个函数,该函数显示 IDiaPropertyStorage
对象公开的所有属性。 请参阅 IDiaEnumInjectedSources 接口,获取有关如何从 IDiaInjectedSource 接口获取 IDiaPropertyStorage
接口的示例。
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