// Construct an instance of IEnumDebugPropertyInfo2 for the parameters collection only. private void CreateParameterProperties(enum_DEBUGPROP_INFO_FLAGS dwFields, out uint elementsReturned, out IEnumDebugPropertyInfo2 enumObject) { elementsReturned = (uint)_parameters.Count; DEBUG_PROPERTY_INFO[] propInfo = new DEBUG_PROPERTY_INFO[_parameters.Count]; for (int i = 0; i < propInfo.Length; i++) { AD7Property property = new AD7Property(Engine, _parameters[i]); propInfo[i] = property.ConstructDebugPropertyInfo(dwFields); } enumObject = new AD7PropertyInfoEnum(propInfo); }
private void CreateRegisterContent(enum_DEBUGPROP_INFO_FLAGS dwFields, out uint elementsReturned, out IEnumDebugPropertyInfo2 enumObject) { IReadOnlyCollection <RegisterGroup> registerGroups = Engine.DebuggedProcess.GetRegisterGroups(); elementsReturned = (uint)registerGroups.Count; DEBUG_PROPERTY_INFO[] propInfo = new DEBUG_PROPERTY_INFO[elementsReturned]; Tuple <int, string>[] values = null; Engine.DebuggedProcess.WorkerThread.RunOperation(async() => { values = await Engine.DebuggedProcess.GetRegisters(Thread.GetDebuggedThread().Id, ThreadContext.Level); }); int i = 0; foreach (var grp in registerGroups) { AD7RegGroupProperty regProp = new AD7RegGroupProperty(Engine, dwFields, grp, values); propInfo[i] = regProp.PropertyInfo; i++; } enumObject = new AD7PropertyInfoEnum(propInfo); }
// Construct an instance of IEnumDebugPropertyInfo2 for the combined locals and parameters. private void CreateLocalsPlusArgsProperties(enum_DEBUGPROP_INFO_FLAGS dwFields, out uint elementsReturned, out IEnumDebugPropertyInfo2 enumObject) { elementsReturned = 0; int localsLength = 0; if (_locals != null) { localsLength = _locals.Count; elementsReturned += (uint)localsLength; } if (_parameters != null) { elementsReturned += (uint)_parameters.Count; } DEBUG_PROPERTY_INFO[] propInfo = new DEBUG_PROPERTY_INFO[elementsReturned]; if (_locals != null) { for (int i = 0; i < _locals.Count; i++) { AD7Property property = new AD7Property(Engine, _locals[i]); propInfo[i] = property.ConstructDebugPropertyInfo(dwFields); } } if (_parameters != null) { for (int i = 0; i < _parameters.Count; i++) { AD7Property property = new AD7Property(Engine, _parameters[i]); propInfo[localsLength + i] = property.ConstructDebugPropertyInfo(dwFields); } } enumObject = new AD7PropertyInfoEnum(propInfo); }