public void Next( System.UInt32 celt, DEBUG_PROPERTY_INFO []rgelt, out System.Int32 pceltFetched) { pceltFetched = 0; if (rgelt == null) rgelt = new DEBUG_PROPERTY_INFO[celt]; for (ulong i = 0; i < celt; i++){ IDebugProperty debugProperty = null; debugProperty = this.enumDebugProperty.Current; if (null != debugProperty) { CDebugProperty prop = new CDebugProperty(debugProperty); if (null != prop){ prop.GetPropertyInfo(this.dwFields, this.dwRadix, this.timeout, null, 0, out rgelt[i]); } } pceltFetched++; bool success = false; success = this.enumDebugProperty.MoveNext(); if (success == false && i < celt-1) { break; } } }
// 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; } }