public CEnumDebugProperty2(IEnumDebugProperty enumDebugProperty, uint dwRadix, DEBUGPROP_INFO_FLAGS dwFields, uint timeout) { this.enumDebugProperty = enumDebugProperty; this.dwFields = dwFields; this.dwRadix = dwRadix; this.timeout = timeout; }
// Enum the children of this property public void EnumChildren( DEBUGPROP_INFO_FLAGS dwFields, uint dwRadix, ref Guid guidFilter, DBG_ATTRIB_FLAGS dwAttribFilter, String pszNameFilter, uint dwTimeout, out IEnumDebugPropertyInfo2 ppEnum) { ppEnum = null; EnumerationKind kind; if (guidFilter == FilterGuids.guidFilterArgs) { kind = EnumerationKind.Arguments; } //kind = EnumerationKind.Locals; else if (guidFilter == FilterGuids.guidFilterLocals) { kind = EnumerationKind.Locals; } else if (guidFilter == FilterGuids.guidFilterLocalsPlusArgs) { kind = EnumerationKind.LocalsPlusArguments; } else if (guidFilter == FilterGuids.guidFilterThis) { kind = EnumerationKind.This; } else { kind = EnumerationKind.None; } IEnumDebugProperty enumProperty = null; enumProperty = this.prop.EnumChildren(kind, (int )dwRadix, (int )dwTimeout, (0 != (dwFields & DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_NOFUNCEVAL)) ? false : true); ppEnum = new CEnumDebugProperty2(enumProperty, dwRadix, dwFields, dwTimeout); }
public CEnumDebugProperty2(IEnumDebugProperty enumDebugProperty, uint dwRadix, DEBUGPROP_INFO_FLAGS dwFields, uint timeout) { this.enumDebugProperty = enumDebugProperty; this.dwFields = dwFields; this.dwRadix = dwRadix; this.timeout = timeout; }
// Enum the children of this property public void EnumChildren( DEBUGPROP_INFO_FLAGS dwFields, uint dwRadix, ref Guid guidFilter, DBG_ATTRIB_FLAGS dwAttribFilter, String pszNameFilter, uint dwTimeout, out IEnumDebugPropertyInfo2 ppEnum) { ppEnum = null; EnumerationKind kind; if (guidFilter == FilterGuids.guidFilterArgs) kind = EnumerationKind.Arguments; //kind = EnumerationKind.Locals; else if (guidFilter == FilterGuids.guidFilterLocals) kind = EnumerationKind.Locals; else if (guidFilter == FilterGuids.guidFilterLocalsPlusArgs) kind = EnumerationKind.LocalsPlusArguments; else if (guidFilter == FilterGuids.guidFilterThis) kind = EnumerationKind.This; else kind = EnumerationKind.None; IEnumDebugProperty enumProperty = null; enumProperty = this.prop.EnumChildren(kind, (int ) dwRadix, (int ) dwTimeout, (0 != (dwFields & DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_NOFUNCEVAL)) ? false : true); ppEnum = new CEnumDebugProperty2(enumProperty, dwRadix, dwFields, dwTimeout); }
// Get the DEBUG_PROPERTY_INFO that describes this property public void GetPropertyInfo( DEBUGPROP_INFO_FLAGS dwFields, uint dwRadix, uint dwTimeout, IDebugReference2 []rgpArgs, uint dwArgCount, out DEBUG_PROPERTY_INFO pPropertyInfo) { pPropertyInfo = new DEBUG_PROPERTY_INFO(); if (0 != (dwFields & DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_FULLNAME)) { pPropertyInfo.dwFields |= DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_FULLNAME; pPropertyInfo.bstrFullName = this.prop.FullName; } if (0 != (dwFields & DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_NAME)) { pPropertyInfo.dwFields |= DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_NAME; pPropertyInfo.bstrName = this.prop.Name; } if (0 != (dwFields & DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_TYPE)) { pPropertyInfo.dwFields |= DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_TYPE; pPropertyInfo.bstrType = this.prop.Type; } if (0 != (dwFields & DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_PROP)) { pPropertyInfo.dwFields |= DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_PROP; pPropertyInfo.pProperty = this as IDebugProperty2; } if (0 != (dwFields & DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_VALUE)) { pPropertyInfo.dwFields |= DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_VALUE; pPropertyInfo.bstrValue = this.prop.GetValue(dwRadix, dwTimeout); } if (0 != (dwFields & DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_VALUE_AUTOEXPAND)) { pPropertyInfo.dwFields |= DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_VALUE_AUTOEXPAND; } if (0 != (dwFields & DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_ATTRIB)){ pPropertyInfo.dwFields |= DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_ATTRIB; DebugPropertyAttributes attrib; attrib = this.prop.Attributes; pPropertyInfo.dwAttrib = 0; if (0 != (attrib & DebugPropertyAttributes.Expandable)) pPropertyInfo.dwAttrib |= DBG_ATTRIB_FLAGS.DBG_ATTRIB_OBJ_IS_EXPANDABLE; if (0 != (attrib & DebugPropertyAttributes.ReadOnly)) pPropertyInfo.dwAttrib |= DBG_ATTRIB_FLAGS.DBG_ATTRIB_VALUE_READONLY; if (0 != (attrib & DebugPropertyAttributes.Error)) pPropertyInfo.dwAttrib |= DBG_ATTRIB_FLAGS.DBG_ATTRIB_VALUE_ERROR; if (0 != (attrib & DebugPropertyAttributes.SideEffect)) pPropertyInfo.dwAttrib |= DBG_ATTRIB_FLAGS.DBG_ATTRIB_VALUE_SIDE_EFFECT; if (0 != (attrib & DebugPropertyAttributes.OverloadedContainer)) pPropertyInfo.dwAttrib |= DBG_ATTRIB_FLAGS.DBG_ATTRIB_OVERLOADED_CONTAINER; if (0 != (attrib & DebugPropertyAttributes.Boolean)) pPropertyInfo.dwAttrib |= DBG_ATTRIB_FLAGS.DBG_ATTRIB_VALUE_BOOLEAN; if (0 != (attrib & DebugPropertyAttributes.BooleanTrue)) pPropertyInfo.dwAttrib |= DBG_ATTRIB_FLAGS.DBG_ATTRIB_VALUE_BOOLEAN_TRUE; if (0 != (attrib & DebugPropertyAttributes.Invalid)) pPropertyInfo.dwAttrib |= DBG_ATTRIB_FLAGS.DBG_ATTRIB_VALUE_INVALID; } }
// Get the DEBUG_PROPERTY_INFO that describes this property public void GetPropertyInfo( DEBUGPROP_INFO_FLAGS dwFields, uint dwRadix, uint dwTimeout, IDebugReference2 [] rgpArgs, uint dwArgCount, out DEBUG_PROPERTY_INFO pPropertyInfo) { pPropertyInfo = new DEBUG_PROPERTY_INFO(); if (0 != (dwFields & DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_FULLNAME)) { pPropertyInfo.dwFields |= DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_FULLNAME; pPropertyInfo.bstrFullName = this.prop.FullName; } if (0 != (dwFields & DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_NAME)) { pPropertyInfo.dwFields |= DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_NAME; pPropertyInfo.bstrName = this.prop.Name; } if (0 != (dwFields & DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_TYPE)) { pPropertyInfo.dwFields |= DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_TYPE; pPropertyInfo.bstrType = this.prop.Type; } if (0 != (dwFields & DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_PROP)) { pPropertyInfo.dwFields |= DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_PROP; pPropertyInfo.pProperty = this as IDebugProperty2; } if (0 != (dwFields & DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_VALUE)) { pPropertyInfo.dwFields |= DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_VALUE; pPropertyInfo.bstrValue = this.prop.GetValue(dwRadix, dwTimeout); } if (0 != (dwFields & DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_VALUE_AUTOEXPAND)) { pPropertyInfo.dwFields |= DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_VALUE_AUTOEXPAND; } if (0 != (dwFields & DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_ATTRIB)) { pPropertyInfo.dwFields |= DEBUGPROP_INFO_FLAGS.DEBUGPROP_INFO_ATTRIB; DebugPropertyAttributes attrib; attrib = this.prop.Attributes; pPropertyInfo.dwAttrib = 0; if (0 != (attrib & DebugPropertyAttributes.Expandable)) { pPropertyInfo.dwAttrib |= DBG_ATTRIB_FLAGS.DBG_ATTRIB_OBJ_IS_EXPANDABLE; } if (0 != (attrib & DebugPropertyAttributes.ReadOnly)) { pPropertyInfo.dwAttrib |= DBG_ATTRIB_FLAGS.DBG_ATTRIB_VALUE_READONLY; } if (0 != (attrib & DebugPropertyAttributes.Error)) { pPropertyInfo.dwAttrib |= DBG_ATTRIB_FLAGS.DBG_ATTRIB_VALUE_ERROR; } if (0 != (attrib & DebugPropertyAttributes.SideEffect)) { pPropertyInfo.dwAttrib |= DBG_ATTRIB_FLAGS.DBG_ATTRIB_VALUE_SIDE_EFFECT; } if (0 != (attrib & DebugPropertyAttributes.OverloadedContainer)) { pPropertyInfo.dwAttrib |= DBG_ATTRIB_FLAGS.DBG_ATTRIB_OVERLOADED_CONTAINER; } if (0 != (attrib & DebugPropertyAttributes.Boolean)) { pPropertyInfo.dwAttrib |= DBG_ATTRIB_FLAGS.DBG_ATTRIB_VALUE_BOOLEAN; } if (0 != (attrib & DebugPropertyAttributes.BooleanTrue)) { pPropertyInfo.dwAttrib |= DBG_ATTRIB_FLAGS.DBG_ATTRIB_VALUE_BOOLEAN_TRUE; } if (0 != (attrib & DebugPropertyAttributes.Invalid)) { pPropertyInfo.dwAttrib |= DBG_ATTRIB_FLAGS.DBG_ATTRIB_VALUE_INVALID; } } }