public void MarkMissingIfNeeded(int generation) { if (generation != _LastSeenGeneration) { _LastSeenList = ThreadListType.Deleted; } }
ThreadList(ThreadListType type, ulong endNodeAddress, ILiveVariable xListEnd_pxNext, string name, ILiveVariable uxNumberOfItems, uint listItemOffsetInTCB) { Type = type; EndNodeAddress = endNodeAddress; this.xListEnd_pxNext = xListEnd_pxNext; this.uxNumberOfItems = uxNumberOfItems; _ListItemOffsetInTCB = listItemOffsetInTCB; _Name = name; }
public static void Locate(List <ThreadList> result, ILiveWatchEngine engine, IPinnedVariable baseVariable, ThreadListType type, uint listItemOffsetInTCB, bool queryCountVariable = false) { var list = Locate(engine, baseVariable, type, listItemOffsetInTCB, queryCountVariable); if (list != null) { result.Add(list); } }
public static ThreadList Locate(ILiveWatchEngine engine, IPinnedVariable baseVariable, ThreadListType type, uint listItemOffsetInTCB, bool queryCountVariable = false) { if (baseVariable == null) { return(null); } var xListEnd = baseVariable?.LookupSpecificChild("xListEnd"); if (xListEnd == null) { return(null); } var xListEnd_pNext = xListEnd.LookupSpecificChild("pxNext"); if (xListEnd_pNext == null) { return(null); } ILiveVariable xListEnd_pNextLive = engine.CreateLiveVariable(xListEnd_pNext); if (xListEnd_pNextLive == null) { return(null); } ILiveVariable uxNumberOfItemsLive = null; if (queryCountVariable) { var uxNumberOfItems = baseVariable.LookupSpecificChild("uxNumberOfItems"); if (uxNumberOfItems != null) { uxNumberOfItemsLive = engine.CreateLiveVariable(uxNumberOfItems); } } return(new ThreadList(type, xListEnd.Address, xListEnd_pNextLive, baseVariable.UserFriendlyName, uxNumberOfItemsLive, listItemOffsetInTCB)); }
public void UpdateLastSeenState(ThreadListType listType, int generation) { _LastSeen = DateTime.Now; _LastSeenList = listType; _LastSeenGeneration = generation; }