private static bool TryGetDelphiProcessName(AtomTableEntry atomTableEntry, string prefix, IDictionary <int, string> processNamesbyId, out string processName)
 {
     processName = null;
     if (atomTableEntry.Name.StartsWith(prefix))
     {
         string processIdString = atomTableEntry.Name.Substring(atomTableEntry.Name.Length - IdLength, IdLength);
         int    processId;
         if (int.TryParse(processIdString, NumberStyles.HexNumber, NumberFormatInfo.InvariantInfo, out processId))
         {
             processNamesbyId.TryGetValue(processId, out processName);
         }
     }
     return(processName != null);
 }
        private void GetAtomTableEntries(IList <AtomTableEntry> atomTableEntries, Func <int, StringBuilder, int, int> getAtomTableEntry)
        {
            atomTableEntries.Clear();
            var buffer = new StringBuilder(1024);

            for (int index = 0xC000; index <= 0xFFFF; index++)
            {
                int bufferLength = getAtomTableEntry(index, buffer, buffer.Capacity);
                if (bufferLength > 0)
                {
                    var atomTableEntry = new AtomTableEntry
                    {
                        Index = index.ToString("x").ToUpper(),
                        Name  = buffer.ToString(0, bufferLength)
                    };
                    atomTableEntries.Add(atomTableEntry);
                }
            }
        }