IKeyStore interface (dbgmodel.h)

A key/value store. Typically used for metadata.


IKeyStore interits from IUnknown.


The IKeyStore interface has these methods.


The IKeyStore::AddRef method increments the reference count for an interface on an object.

The ClearKeys method is analogous to the ClearKeys method on IModelObject.

The GetKey method is analogous to the GetKey method on IModelObject.

The GetKeyValue method is the first method a client will go to in order to find the value of a particular key within the metadata store.

The IKeyStore::QueryInterface method retrieves pointers to the supported interfaces on an object.

The IKeyStore::Release method decrements the reference count for an interface on an object.

The SetKey method is analogous to the SetKey method on IModelObject.

The SetKeyValue method is analogous to the SetKeyValue method on IModelObject.


Metadata in the Data Model

One of the core notions in the data model is that an object (particularly a synthetic one) is a dictionary of key/value/metadata tuples. Each key can have an entire store of metadata associated with it that describes a variety of things surrounding the key and its potential value. Note that the metadata does not, in any way, change the value of the key. It is only ancillary information associated with the key and its value which may affect the presentation or other associated attributes of the key and its value.

In some senses, a metadata store is not all that different from the key/value/metadata tuples that are the essence of an object in the data model. It is, however, simplified from this view. A metadata store is represented by the IKeyStore interface. While also a collection of key/value/metadata tuples, there are limitations to what can be done with a metadata key store versus a model object:

  • A key store can only have a single parent store -- it cannot have an arbitrary chain of parent models.
  • A key store has no concepts. It can only have the dictionary of key/value/metadata tuples. This means that the keys present in a key store are static. They can not be created on demand by a dynamic language system.
  • By convention only, the values in a metadata defined key store are restricted to basic values (intrinsics and property accessors)

While a key store can have an arbitrary number (and arbitrary naming) of keys, there are certain names that have defined semantic values. For a list of those values, see Debugger Data Model Metadata Interfaces.


Header dbgmodel.h

See also

Debugger Data Model C++ Overview