This interface is implemented by custom expression evaluator visualizers in order to customize the view of an expression programmatically. This is ordinarily done to support visualizations that are not possible using the native visualizer syntax or to enable visualization without full symbolic information. The visualizer can take complete control of the expression including expansion of children, or it can obtain the default expression from the expression evaluator, modify it slightly but defer other operations such as expansion back to the EE. Implementations of this interface may restrict when they are called using a filter defined in their component configuration. The following properties may be used: EngineId, RuntimeId, SourceId, VisualizerId.
This method is used for evaluation results that include DkmEvaluationResultFlags.RawString to obtain the underlying string, without enclosing quotation marks or escape sequences. This is method is invoked to display one of the various string visualizers in an expression evaluation window (click the magnifying glass icon).
Called by the expression evaluator when a visualized expression's children are being expanded, the value is being set, or the underlying string is being obtained. If the visualizer addin wants complete control of the expression it should return false. It will then receive calls to GetChildren, GetItems, SetValueAsString, and GetUnderlyingString. If the visualizer addin wants to defer these operations to the expression evaluator, it should return true. It must also give the expression evaluator back the instance of DkmEvaluationResult that came from the EE via one of the IDkmCustomVisualizerCallback methods. Note that the addin MUST have obtained the default DkmEvaluationResult from the EE if it wants the EE to control the object. Returning true from this method is primarily used by visualizer addins that just adjust something small such as the view of a value but do not want to modify expansion or setting values.