本文整理汇总了C#中enum_DEBUGPROP_INFO_FLAGS类的典型用法代码示例。如果您正苦于以下问题:C# enum_DEBUGPROP_INFO_FLAGS类的具体用法?C# enum_DEBUGPROP_INFO_FLAGS怎么用?C# enum_DEBUGPROP_INFO_FLAGS使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
enum_DEBUGPROP_INFO_FLAGS类属于命名空间,在下文中一共展示了enum_DEBUGPROP_INFO_FLAGS类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: EnumProperties
public int EnumProperties(enum_DEBUGPROP_INFO_FLAGS dwFields, uint nRadix, ref Guid guidFilter, uint dwTimeout,
out uint pcelt, out IEnumDebugPropertyInfo2 ppEnum)
{
ppEnum = new MonoPropertyInfosEnum(locals.Select(x => x.GetDebugPropertyInfo(dwFields)));
ppEnum.GetCount(out pcelt);
return VSConstants.S_OK;
}
示例2: ConstructDebugPropertyInfo
internal override DEBUG_PROPERTY_INFO ConstructDebugPropertyInfo(enum_DEBUGPROP_INFO_FLAGS dwFields, uint dwRadix)
{
var info = base.ConstructDebugPropertyInfo(dwFields, ForceHexDisplay ? 16 : dwRadix);
if (_forceName != null && info.dwFields.HasFlag(enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_NAME))
{
info.bstrName = _forceName;
}
if (_forceName != null && info.dwFields.HasFlag(enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_FULLNAME))
{
info.bstrFullName = _forceName;
}
if (info.dwFields.HasFlag(enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_ATTRIB))
{
// allow editing values.
if(Value.IsPrimitive && Value is DalvikStackFrameValue)
info.dwAttrib &= ~enum_DBG_ATTRIB_FLAGS.DBG_ATTRIB_VALUE_READONLY;
info.dwAttrib |= enum_DBG_ATTRIB_FLAGS.DBG_ATTRIB_STORAGE_REGISTER;
if(HasSideEffects)
info.dwAttrib |= enum_DBG_ATTRIB_FLAGS.DBG_ATTRIB_VALUE_SIDE_EFFECT;
}
return info;
}
示例3: AD7RegGroupProperty
public AD7RegGroupProperty(AD7Engine engine, enum_DEBUGPROP_INFO_FLAGS dwFields, RegisterGroup grp, Tuple<int, string>[] values)
{
_engine = engine;
_group = grp;
_values = values;
PropertyInfo = CreateInfo(dwFields);
}
示例4: Invariant
int IDebugProperty2.EnumChildren(enum_DEBUGPROP_INFO_FLAGS dwFields, uint dwRadix, ref Guid guidFilter, enum_DBG_ATTRIB_FLAGS dwAttribFilter, string pszNameFilter, uint dwTimeout, out IEnumDebugPropertyInfo2 ppEnum) {
IEnumerable<DebugEvaluationResult> children = _children.Value;
if (!RToolsSettings.Current.ShowDotPrefixedVariables) {
children = children.Where(v => v.Name != null && !v.Name.StartsWith("."));
}
if (IsFrameEnvironment) {
children = children.OrderBy(v => v.Name);
}
var infos = children.Select(v => new AD7Property(this, v).GetDebugPropertyInfo(dwRadix, dwFields));
var valueResult = EvaluationResult as DebugValueEvaluationResult;
if (valueResult != null && valueResult.HasAttributes == true) {
string attrExpr = Invariant($"base::attributes({valueResult.Expression})");
var attrResult = TaskExtensions.RunSynchronouslyOnUIThread(ct => StackFrame.StackFrame.EvaluateAsync(attrExpr, "attributes()", reprMaxLength: ReprMaxLength, cancellationToken:ct));
if (!(attrResult is DebugErrorEvaluationResult)) {
var attrInfo = new AD7Property(this, attrResult, isSynthetic: true).GetDebugPropertyInfo(dwRadix, dwFields);
infos = new[] { attrInfo }.Concat(infos);
}
}
ppEnum = new AD7PropertyInfoEnum(infos.ToArray());
return VSConstants.S_OK;
}
示例5: Invariant
int IDebugProperty2.EnumChildren(enum_DEBUGPROP_INFO_FLAGS dwFields, uint dwRadix, ref Guid guidFilter, enum_DBG_ATTRIB_FLAGS dwAttribFilter, string pszNameFilter, uint dwTimeout, out IEnumDebugPropertyInfo2 ppEnum) {
IEnumerable<IREvaluationResultInfo> children = _children.Value;
if (!RToolsSettings.Current.ShowDotPrefixedVariables) {
children = children.Where(v => v.Name != null && !v.Name.StartsWithOrdinal("."));
}
var infos = children.Select(v => new AD7Property(this, v).GetDebugPropertyInfo(dwRadix, dwFields));
var valueResult = EvaluationResult as IRValueInfo;
if (valueResult != null) {
if (valueResult.HasAttributes() == true) {
string attrExpr = Invariant($"base::attributes({valueResult.Expression})");
var attrResult = TaskExtensions.RunSynchronouslyOnUIThread(ct => StackFrame.StackFrame.TryEvaluateAndDescribeAsync(attrExpr, "attributes()", PrefetchedProperties, Repr, ct));
if (!(attrResult is IRErrorInfo)) {
var attrInfo = new AD7Property(this, attrResult, isSynthetic: true).GetDebugPropertyInfo(dwRadix, dwFields);
infos = new[] { attrInfo }.Concat(infos);
}
}
if (valueResult.Flags.HasFlag(RValueFlags.HasParentEnvironment)) {
string parentExpr = Invariant($"base::parent.env({valueResult.Expression})");
var parentResult = TaskExtensions.RunSynchronouslyOnUIThread(ct => StackFrame.StackFrame.TryEvaluateAndDescribeAsync(parentExpr, "parent.env()", PrefetchedProperties, Repr, ct));
if (!(parentResult is IRErrorInfo)) {
var parentInfo = new AD7Property(this, parentResult, isSynthetic: true).GetDebugPropertyInfo(dwRadix, dwFields);
infos = new[] { parentInfo }.Concat(infos);
}
}
}
ppEnum = new AD7PropertyInfoEnum(infos.ToArray());
return VSConstants.S_OK;
}
示例6: ConstructErrorPropertyInfo
public static DEBUG_PROPERTY_INFO ConstructErrorPropertyInfo(enum_DEBUGPROP_INFO_FLAGS dwFields, string name, string error, IDebugProperty2 prop)
{
DEBUG_PROPERTY_INFO property = new DEBUG_PROPERTY_INFO(); ;
if ((dwFields & enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_NAME) != 0)
{
property.bstrName = name;
property.dwFields |= enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_NAME;
}
if ((dwFields & enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_VALUE) != 0)
{
property.bstrValue = error;
property.dwFields |= enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_VALUE;
}
if ((dwFields & enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_ATTRIB) != 0)
{
property.dwAttrib |= enum_DBG_ATTRIB_FLAGS.DBG_ATTRIB_VALUE_ERROR;
}
if ((dwFields & enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_PROP) != 0)
{
property.pProperty = prop;
property.dwFields |= enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_PROP;
}
return property;
}
示例7: EnumChildren
public int EnumChildren(enum_DEBUGPROP_INFO_FLAGS dwFields, uint dwRadix, ref Guid guidFilter, enum_DBG_ATTRIB_FLAGS dwAttribFilter, string pszNameFilter, uint dwTimeout, out IEnumDebugPropertyInfo2 ppEnum)
{
DEBUG_PROPERTY_INFO[] properties = new DEBUG_PROPERTY_INFO[_group.Count];
int i = 0;
foreach (var reg in _engine.DebuggedProcess.GetRegisterDescriptions())
{
if (reg.Group == _group)
{
properties[i].dwFields = 0;
if ((dwFields & enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_NAME) != 0)
{
properties[i].bstrName = reg.Name;
properties[i].dwFields |= enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_NAME;
}
if ((dwFields & enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_VALUE) != 0)
{
var desc = Array.Find(_values, (v) => { return v.Item1 == reg.Index; });
properties[i].bstrValue = desc == null ? "??" : desc.Item2;
properties[i].dwFields |= enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_VALUE;
}
if ((dwFields & enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_ATTRIB) != 0)
{
properties[i].dwAttrib = enum_DBG_ATTRIB_FLAGS.DBG_ATTRIB_VALUE_READONLY;
properties[i].dwFields |= enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_ATTRIB;
}
i++;
}
}
Debug.Assert(i == _group.Count, "Failed to find registers in group.");
ppEnum = new AD7PropertyEnum(properties);
return Constants.S_OK;
}
示例8: CreateInfo
private DEBUG_PROPERTY_INFO CreateInfo(enum_DEBUGPROP_INFO_FLAGS dwFields)
{
DEBUG_PROPERTY_INFO info = new DEBUG_PROPERTY_INFO();
info.dwFields = 0;
if ((dwFields & enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_NAME) != 0)
{
info.bstrName = _group.Name;
info.dwFields |= enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_NAME;
}
if ((dwFields & enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_ATTRIB) != 0)
{
info.dwAttrib = 0;
info.dwAttrib |= enum_DBG_ATTRIB_FLAGS.DBG_ATTRIB_VALUE_READONLY;
info.dwAttrib |= enum_DBG_ATTRIB_FLAGS.DBG_ATTRIB_OBJ_IS_EXPANDABLE;
info.dwFields |= enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_ATTRIB;
}
if ((dwFields & enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_PROP) != 0)
{
info.pProperty = this;
info.dwFields |= enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_PROP;
}
return info;
}
示例9: ConstructDebugPropertyInfo
// Construct a DEBUG_PROPERTY_INFO representing this local or parameter.
public DEBUG_PROPERTY_INFO ConstructDebugPropertyInfo(uint radix, enum_DEBUGPROP_INFO_FLAGS dwFields) {
var propertyInfo = new DEBUG_PROPERTY_INFO();
if (dwFields.HasFlag(enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_FULLNAME)) {
propertyInfo.bstrFullName = _evaluationResult.FullName;
propertyInfo.dwFields |= enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_FULLNAME;
}
if (dwFields.HasFlag(enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_NAME)) {
propertyInfo.bstrName = _evaluationResult.Expression;
propertyInfo.dwFields |= enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_NAME;
}
if (dwFields.HasFlag(enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_TYPE)) {
propertyInfo.bstrType = _evaluationResult.TypeName;
propertyInfo.dwFields |= enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_TYPE;
}
if (dwFields.HasFlag(enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_VALUE)) {
string value = radix == 16 ? _evaluationResult.HexValue ?? _evaluationResult.StringValue : _evaluationResult.StringValue;
propertyInfo.bstrValue = _evaluationResult.Type.HasFlag(NodeExpressionType.String) ? string.Format("\"{0}\"", value) : value;
propertyInfo.dwFields |= enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_VALUE;
}
if (dwFields.HasFlag(enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_ATTRIB)) {
if (_evaluationResult.Type.HasFlag(NodeExpressionType.ReadOnly)) {
propertyInfo.dwAttrib |= enum_DBG_ATTRIB_FLAGS.DBG_ATTRIB_VALUE_READONLY;
}
if (_evaluationResult.Type.HasFlag(NodeExpressionType.Private)) {
propertyInfo.dwAttrib |= enum_DBG_ATTRIB_FLAGS.DBG_ATTRIB_ACCESS_PRIVATE;
}
if (_evaluationResult.Type.HasFlag(NodeExpressionType.Expandable)) {
propertyInfo.dwAttrib |= enum_DBG_ATTRIB_FLAGS.DBG_ATTRIB_OBJ_IS_EXPANDABLE;
}
if (_evaluationResult.Type.HasFlag(NodeExpressionType.String)) {
propertyInfo.dwAttrib |= enum_DBG_ATTRIB_FLAGS.DBG_ATTRIB_VALUE_RAW_STRING;
}
if (_evaluationResult.Type.HasFlag(NodeExpressionType.Boolean)) {
propertyInfo.dwAttrib |= enum_DBG_ATTRIB_FLAGS.DBG_ATTRIB_VALUE_BOOLEAN;
}
if (_evaluationResult.Type.HasFlag(NodeExpressionType.Property)) {
propertyInfo.dwAttrib |= enum_DBG_ATTRIB_FLAGS.DBG_ATTRIB_PROPERTY;
}
if (_evaluationResult.Type.HasFlag(NodeExpressionType.Function)) {
propertyInfo.dwAttrib |= enum_DBG_ATTRIB_FLAGS.DBG_ATTRIB_METHOD;
}
}
// Always provide the property so that we can access locals from the automation object.
propertyInfo.pProperty = this;
propertyInfo.dwFields |= enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_PROP;
return propertyInfo;
}
示例10: ConstructDebugPropertyInfo
// Construct a DEBUG_PROPERTY_INFO representing this local or parameter.
public DEBUG_PROPERTY_INFO ConstructDebugPropertyInfo(uint radix, enum_DEBUGPROP_INFO_FLAGS dwFields)
{
DEBUG_PROPERTY_INFO propertyInfo = new DEBUG_PROPERTY_INFO();
if ((dwFields & enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_FULLNAME) != 0) {
propertyInfo.bstrFullName = _evalResult.Expression;
propertyInfo.dwFields |= enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_FULLNAME;
}
if ((dwFields & enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_NAME) != 0) {
if (String.IsNullOrEmpty(_evalResult.ChildText)) {
propertyInfo.bstrName = _evalResult.Expression;
} else {
propertyInfo.bstrName = _evalResult.ChildText;
}
propertyInfo.dwFields |= enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_NAME;
}
if ((dwFields & enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_TYPE) != 0) {
if (_evalResult.ExceptionText != null) {
propertyInfo.bstrType = "<error>";
} else {
propertyInfo.bstrType = _evalResult.TypeName;
}
propertyInfo.dwFields |= enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_TYPE;
}
if ((dwFields & enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_VALUE) != 0) {
if (_evalResult.ExceptionText != null) {
propertyInfo.bstrValue = "error: " + _evalResult.ExceptionText;
} else if (radix != 16) {
propertyInfo.bstrValue = _evalResult.StringRepr;
} else {
propertyInfo.bstrValue = _evalResult.HexRepr ?? _evalResult.StringRepr;
}
propertyInfo.dwFields |= enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_VALUE;
}
if ((dwFields & enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_ATTRIB) != 0) {
if (!_writable) {
propertyInfo.dwAttrib |= enum_DBG_ATTRIB_FLAGS.DBG_ATTRIB_VALUE_READONLY;
}
if (_evalResult.ExceptionText != null) {
propertyInfo.dwAttrib |= enum_DBG_ATTRIB_FLAGS.DBG_ATTRIB_VALUE_ERROR;
}
if (_evalResult.IsExpandable)
{
propertyInfo.dwAttrib |= enum_DBG_ATTRIB_FLAGS.DBG_ATTRIB_OBJ_IS_EXPANDABLE;
}
}
// Always Provide the property so that we can access locals from the automation object.
propertyInfo.pProperty = (IDebugProperty2)this;
propertyInfo.dwFields |= enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_PROP;
return propertyInfo;
}
示例11: VarListChildren
public override async Task<Results> VarListChildren(string variableReference, enum_DEBUGPROP_INFO_FLAGS dwFlags, ResultClass resultClass = ResultClass.done)
{
// This override is necessary because lldb treats any object with children as not a simple object.
// This prevents char* and char** from returning a value when queried by -var-list-children
// Limit the number of children expanded to 1000 in case memory is uninitialized
string command = string.Format("-var-list-children --all-values \"{0}\" 0 1000", variableReference);
Results results = await _debugger.CmdAsync(command, resultClass);
return results;
}
示例12: ConstructDebugPropertyInfo
// Construct a DEBUG_PROPERTY_INFO representing this local or parameter.
public DEBUG_PROPERTY_INFO ConstructDebugPropertyInfo(enum_DEBUGPROP_INFO_FLAGS dwFields)
{
DEBUG_PROPERTY_INFO propertyInfo = new DEBUG_PROPERTY_INFO();
if ((dwFields & enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_FULLNAME) != 0)
{
StringBuilder sb = new StringBuilder(m_variableInformation.m_name);
propertyInfo.bstrFullName = sb.ToString();
propertyInfo.dwFields = (enum_DEBUGPROP_INFO_FLAGS)((uint)propertyInfo.dwFields | (uint)(DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_FULLNAME));
}
if ((dwFields & enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_NAME) != 0)
{
StringBuilder sb = new StringBuilder(m_variableInformation.m_name);
propertyInfo.bstrName = sb.ToString();
propertyInfo.dwFields = (enum_DEBUGPROP_INFO_FLAGS)((uint)propertyInfo.dwFields | (uint)(DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_NAME));
}
if ((dwFields & enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_TYPE) != 0)
{
StringBuilder sb = new StringBuilder(m_variableInformation.m_typeName);
propertyInfo.bstrType = sb.ToString();
propertyInfo.dwFields = (enum_DEBUGPROP_INFO_FLAGS)((uint)propertyInfo.dwFields | (uint)(DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_TYPE));
}
if ((dwFields & enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_VALUE) != 0)
{
StringBuilder sb = new StringBuilder(m_variableInformation.m_value);
propertyInfo.bstrValue = sb.ToString();
propertyInfo.dwFields = (enum_DEBUGPROP_INFO_FLAGS)((uint)propertyInfo.dwFields | (uint)(DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_VALUE));
}
if ((dwFields & enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_ATTRIB) != 0)
{
// The sample does not support writing of values displayed in the debugger, so mark them all as read-only.
propertyInfo.dwAttrib = (enum_DBG_ATTRIB_FLAGS)DBG_ATTRIB_FLAGS.DBG_ATTRIB_VALUE_READONLY;
if (this.m_variableInformation.child != null)
{
propertyInfo.dwAttrib |= (enum_DBG_ATTRIB_FLAGS)DBG_ATTRIB_FLAGS.DBG_ATTRIB_OBJ_IS_EXPANDABLE;
}
}
// If the debugger has asked for the property, or the property has children (meaning it is a pointer in the sample)
// then set the pProperty field so the debugger can call back when the chilren are enumerated.
if (((dwFields & enum_DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_PROP) != 0) ||
(this.m_variableInformation.child != null))
{
propertyInfo.pProperty = (IDebugProperty2)this;
propertyInfo.dwFields = (enum_DEBUGPROP_INFO_FLAGS)((uint)propertyInfo.dwFields | (uint)(DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_PROP));
}
return propertyInfo;
}
示例13: EnumChildren
/// <summary>
/// Retrieves a list of the children of the property.
/// </summary>
/// <param name="dwFields">A combination of flags from the DEBUGPROP_INFO_FLAGS enumeration that specifies which fields in the enumerated DEBUG_PROPERTY_INFO structures are to be filled in.</param>
/// <param name="dwRadix">Specifies the radix to be used in formatting any numerical information.</param>
/// <param name="guidFilter">GUID of the filter used with the dwAttribFilter and pszNameFilter parameters to select which DEBUG_PROPERTY_INFO children are to be enumerated. For example, guidFilterLocals filters for local variables.</param>
/// <param name="dwAttribFilter">A combination of flags from the DBG_ATTRIB_FLAGS enumeration that specifies what type of objects to enumerate, for example DBG_ATTRIB_METHOD for all methods that might be children of this property. Used in combination with the guidFilter and pszNameFilter parameters.</param>
/// <param name="pszNameFilter">The name of the filter used with the guidFilter and dwAttribFilter parameters to select which DEBUG_PROPERTY_INFO children are to be enumerated. For example, setting this parameter to "MyX" filters for all children with the name "MyX."</param>
/// <param name="dwTimeout">Specifies the maximum time, in milliseconds, to wait before returning from this method. Use INFINITE to wait indefinitely.</param>
/// <param name="ppEnum">Returns an IEnumDebugPropertyInfo2 object containing a list of the child properties.</param>
/// <returns>If successful, returns S_OK; otherwise returns error code.</returns>
public virtual int EnumChildren( enum_DEBUGPROP_INFO_FLAGS dwFields,
uint dwRadix,
ref Guid guidFilter,
enum_DBG_ATTRIB_FLAGS dwAttribFilter,
string pszNameFilter,
uint dwTimeout,
out IEnumDebugPropertyInfo2 ppEnum)
{
Logger.Debug( string.Empty );
ppEnum = null;
return VSConstants.E_NOTIMPL;
}
示例14: EnumProperties
/// <summary>
/// Creates an enumerator for properties associated with the stack frame, such as local variables.
/// </summary>
/// <param name="dwFields">A combination of flags from the DEBUGPROP_INFO_FLAGS enumeration that specifies which fields in the enumerated DEBUG_PROPERTY_INFO structures are to be filled in.</param>
/// <param name="nRadix">The radix to be used in formatting any numerical information.</param>
/// <param name="guidFilter">A GUID of a filter used to select which DEBUG_PROPERTY_INFO structures are to be enumerated, such as guidFilterLocals.</param>
/// <param name="dwTimeout">Maximum time, in milliseconds, to wait before returning from this method. Use INFINITE to wait indefinitely.</param>
/// <param name="pcelt">Returns the number of properties enumerated. This is the same as calling the IEnumDebugPropertyInfo2::GetCount method.</param>
/// <param name="ppEnum">Returns an IEnumDebugPropertyInfo2 object containing a list of the desired properties.</param>
/// <returns>If successful, returns S_OK; otherwise, returns an error code.</returns>
/// <remarks>Because this method allows all selected properties to be retrieved with a single call, it is faster than sequentially calling the IDebugStackFrame2::GetDebugProperty and IDebugProperty2::EnumChildren methods.</remarks>
public virtual int EnumProperties( enum_DEBUGPROP_INFO_FLAGS dwFields,
uint nRadix,
ref Guid guidFilter,
uint dwTimeout,
out uint pcelt,
out IEnumDebugPropertyInfo2 ppEnum)
{
Logger.Debug( string.Empty );
pcelt = 0;
ppEnum = null;
return VSConstants.E_NOTIMPL;
}
示例15: EnumChildren
public int EnumChildren(enum_DEBUGPROP_INFO_FLAGS dwFields, uint dwRadix, ref Guid guidFilter,
enum_DBG_ATTRIB_FLAGS dwAttribFilter, string pszNameFilter, uint dwTimeout,
out IEnumDebugPropertyInfo2 ppEnum)
{
var typeMirror = variable.Type;
var properties = typeMirror.GetProperties().Cast<Mirror>();
var methods = typeMirror.GetMethods();
var fields = typeMirror.GetFields();
var children = properties.Concat(methods).Concat(fields).ToList();
ppEnum = new AD7PropertyInfoEnum(children.Select(x => new MonoProperty(frame, variable, typeMirror, x).GetDebugPropertyInfo(dwFields)).ToArray());
return VSConstants.S_OK;
}