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

另请参阅