Beispiel #1
0
 public void MarkMissingIfNeeded(int generation)
 {
     if (generation != _LastSeenGeneration)
     {
         _LastSeenList = ThreadListType.Deleted;
     }
 }
Beispiel #2
0
 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;
 }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
        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));
        }
Beispiel #5
0
 public void UpdateLastSeenState(ThreadListType listType, int generation)
 {
     _LastSeen           = DateTime.Now;
     _LastSeenList       = listType;
     _LastSeenGeneration = generation;
 }