Types
Type information from a module's symbol file is identified by two pieces of information: a type ID and the base address of the module to which the type belongs. The following methods can be used to find a type ID:
GetTypeId returns the type ID for a given type name.
GetSymbolTypeId returns the type ID for the type of a symbol with the given name.
GetOffsetTypeId returns the type ID for the symbol found at the given location.
The name and size of a type are returned by GetTypeName and GetTypeSize, respectively.
The following convenience methods can be used for reading and writing typed data in the target's physical and virtual memory:
Printing Typed Data
To format typed data and send it to the output callbacks, use OutputTypedDataPhysical and OutputTypedDataVirtual for data in the target's physical and virtual memory respectively.
The type options described in DEBUG_TYPEOPTS_XXX affect how the engine formats typed data before sending it to the output callbacks.
The type options may be turned on by using AddTypeOptions, and turned off by using RemoveTypeOptions.
GetTypeOptions returns the current type options. To set all the type options at once, use SetTypeOptions.
Interpreting Raw Data Using Type Information
The debugger engine API supports interpreting typed data. This provides a way to walk object hierarchies on the target, including finding members of structures, dereferencing pointers, and locating array elements.
Typed data is described by instances of the DEBUG_TYPED_DATA structure and represents regions of memory on the target cast to a particular type. The DEBUG_REQUEST_EXT_TYPED_DATA_ANSIRequest operation is used to manipulate these instances. They can be initialized to the result of expressions or by casting regions of memory to a specified type. For a list of all the sub-operations that the DEBUG_REQUEST_EXT_TYPED_DATA_ANSI Request operation supports, see EXT_TDOP.
Additional Information
For details on output callbacks, see Input and Output.