Debugging Tools for Windows |
The EngExtCpp extension framework provides a few classes to help manipulate the target's memory. The ExtRemoteData class describes a small piece of the target's memory. If the type of this memory is known, it is referred to as typed data and is described by ExtRemoteTyped objects.
Windows lists can be iterated over by using ExtRemoteList and, if the type of the objects in the list is known, ExtRemoteTypedList.
Note Like the client objects in ExtExtension, instances of these classes are only valid while the extension library is used to execute an extension command or format a structure for output. In particular, they should not be cached. For more information about when client objects are valid, see Client Objects and the Engine, .
Remote data should be handled using the class ExtRemoteData. This class is a wrapper around a small section of a target's memory. ExtRemoteData automatically retrieves the memory and wraps other common requests with throwing methods.
If the type of the remote data is known, it should be handled using the ExtRemoteTyped class. This class is an enhanced remote data object that understands data typed with type information from symbols. It is initialized to a particular object by symbol or cast, after which it can be used like an object of the given type.
To handle remote lists, use the ExtRemoteList class. This class can be used for either a singly linked or doubly linked list. If the list is doubly linked, it is assumed that the previous pointer immediately follows the next pointer. The class contains methods that can iterate over the list and retrieve nodes both forward and backward. ExtRemoteList can be used with either null-terminated or circular lists also.
To handle remote lists when the type of the nodes in the list is known, use the ExtRemoteTypedList class. This is an enhanced version of ExtRemoteList. In addition to the basic functionality of ExtRemoteList, ExtRemoteTypedList automatically determines link offsets from type information.