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 値を読み取ります。

解説

プロパティ セット内の各プロパティは、そのセットに固有の 4 バイト ULONG 値であるプロパティ識別子 (ID) で識別されます。 IDiaPropertyStorage インターフェイスを介して公開されるプロパティは、親インターフェイスで使用できるプロパティに対応しています。 たとえば、IDiaSymbol インターフェイスのプロパティには、IDiaPropertyStorage インターフェイスを介して名前でアクセスできます (ただし、プロパティにアクセスできる場合でも、特定の IDiaSymbol オブジェクトに対してそのプロパティが有効であることを意味するわけではありません)。

呼び出し元に関する注意事項

このインターフェイスを取得するには、別のインターフェイスに対して QueryInterface メソッドを呼び出します。 次のインターフェイスに対して、IDiaPropertyStorage インターフェイスのクエリを実行できます。

この例は、IDiaPropertyStorage オブジェクトによって公開されているすべてのプロパティを表示する関数を示しています。 IDiaPropertyStorage インターフェイスを IDiaInjectedSource インターフェイスから取得する方法の例については、IDiaEnumInjectedSources インターフェイスを参照してください。

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

関連項目