IDiaPropertyStorage
Permite leer las propiedades persistentes de un conjunto de propiedades de DIA.
Syntax
IDiaPropertyStorage : IUnknown
Métodos en orden de Vtable
En la tabla siguiente se muestran los métodos de IDiaPropertyStorage
.
Método | Descripción |
---|---|
IDiaPropertyStorage::Enum | Obtiene un ountero a un enumerador para las propiedades de este conjunto. |
IDiaPropertyStorage::ReadBOOL | Lee valores BOOL de un conjunto de propiedades. |
IDiaPropertyStorage::ReadBSTR | Lee valores BSTR de un conjunto de propiedades. |
IDiaPropertyStorage::ReadDWORD | Lee valores DWORD de un conjunto de propiedades. |
IDiaPropertyStorage::ReadLONG | Lee valores LONG de un conjunto de propiedades. |
IDiaPropertyStorage::ReadMultiple | Lee valores de propiedad de un conjunto de propiedades. |
IDiaPropertyStorage::ReadPropertyNames | Obtiene los nombres de cadena correspondientes para los identificadores de propiedad especificados. |
IDiaPropertyStorage::ReadULONGLONG | Lee valores ULONGLONG de un conjunto de propiedades. |
Comentarios
Cada propiedad de un conjunto se identifica mediante un identificador de propiedad (ID), un valor ULONG
de cuatro bytes único para ese conjunto. Las propiedades que se exponen a través de la interfaz IDiaPropertyStorage
corresponden a las propiedades disponibles en la interfaz primaria. Por ejemplo, se puede acceder a las propiedades de la interfaz IDiaSymbol por su nombre a través de la interfaz IDiaPropertyStorage
(sin embargo, tenga en cuenta que el mero hecho de poder acceder a la propiedad, no significa que esta sea válida para un objeto IDiaSymbol
determinado).
Notas para autores de la llamada
Para obtener esta interfaz es preciso llamar al método QueryInterface
en otra interfaz. Se pueden consultar las siguientes interfaces para la interfaz IDiaPropertyStorage
:
Ejemplo
En este ejemplo se puede ver una función que muestra todas las propiedades expuestas por el objeto IDiaPropertyStorage
. IDiaEnumInjectedSources es un ejemplo de cómo se obtiene la interfaz IDiaPropertyStorage
a partir de la interfaz 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();
}
}
Requisitos
Encabezado: Dia2.h
Biblioteca: diaguids.lib
DLL: msdia80.dll