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