public List <SRUMNetworkConnectivityEntry> GetSRUMNetworkConnectivityEntries(string filePath)
        {
            List <SRUMNetworkConnectivityEntry> entries = new List <SRUMNetworkConnectivityEntry>();


            try
            {
                EsentReader er = new EsentReader(filePath);

                List <EsentTableRow>     idMapRows  = er.GetRows(_ID_MAP_TABLE_NAME);
                Dictionary <int, byte[]> idToEntity = new Dictionary <int, byte[]>();

                foreach (EsentTableRow row in idMapRows)
                {
                    if (row.Columns[0].Value != null && row.Columns[1].Value != null)
                    {
                        idToEntity.Add((int)row.Columns[1].Value, (byte[])row.Columns[0].Value);
                    }
                }

                List <EsentTableRow> rows = er.GetRows(_NETWORK_CONNECTIVITY_TABLE_NAME);

                foreach (EsentTableRow row in rows)
                {
                    SRUMNetworkConnectivityEntry snce = new SRUMNetworkConnectivityEntry();
                    snce.Timestamp         = (DateTime)row.Columns[7].Value;
                    snce.Timestamp         = snce.Timestamp.ToLocalTime();
                    snce.InterfaceIndex    = IPInterfaceLUIDHelper.GetInterfaceIndexFromLuid((long)row.Columns[4].Value);
                    snce.ConectedStartTime = DateTime.FromFileTime((long)row.Columns[3].Value);
                    snce.ConnectedTime     = (int)row.Columns[2].Value;
                    //TO-DO parse actual profile name from registry
                    snce.L2ProfileId = (int)row.Columns[6].Value;

                    entries.Add(snce);
                }
            } catch (Exception exc)
            {
                MyDebugger.Instance.LogMessage(exc, DebugVerbocity.Exception);
            }

            return(entries);
        }
        public List <SRUMApplicationResourceUsageDataEntry> GetSRUMApplicationResourceUsageDataEntries(string filePath)
        {
            List <SRUMApplicationResourceUsageDataEntry> entries = new List <SRUMApplicationResourceUsageDataEntry>();

            try
            {
                EsentReader er = new EsentReader(filePath);

                List <EsentTableRow>     idMapRows  = er.GetRows(_ID_MAP_TABLE_NAME);
                Dictionary <int, byte[]> idToEntity = new Dictionary <int, byte[]>();

                foreach (EsentTableRow row in idMapRows)
                {
                    if (row.Columns[0].Value != null && row.Columns[1].Value != null)
                    {
                        idToEntity.Add((int)row.Columns[1].Value, (byte[])row.Columns[0].Value);
                    }
                }

                List <EsentTableRow> appRows = er.GetRows(_APPLICATION_RESOURCE_USAGE_TABLE_NAME);

                foreach (EsentTableRow row in appRows)
                {
                    SRUMApplicationResourceUsageDataEntry sarude = new SRUMApplicationResourceUsageDataEntry();
                    sarude.BackgroundBytesRead          = (Int64)row.Columns[2].Value;
                    sarude.BackgroundBytesWritten       = (Int64)row.Columns[3].Value;
                    sarude.BackgroundContextSwitches    = (Int32)row.Columns[4].Value;
                    sarude.BackgroundCycleTime          = (Int64)row.Columns[5].Value;
                    sarude.BackgroundNumberOfFlushes    = (Int32)row.Columns[6].Value;
                    sarude.BackgroundNumReadOperations  = (Int32)row.Columns[7].Value;
                    sarude.BackgroundNumWriteOperations = (Int32)row.Columns[8].Value;
                    sarude.FaceTime                     = (Int64)row.Columns[9].Value;
                    sarude.ForegroundBytesRead          = (Int64)row.Columns[10].Value;
                    sarude.ForegroundBytesWritten       = (Int64)row.Columns[11].Value;
                    sarude.ForegroundContextSwitches    = (Int32)row.Columns[12].Value;
                    sarude.ForegroundCycleTime          = (Int64)row.Columns[13].Value;
                    sarude.ForegroundNumberOfFlushes    = (Int32)row.Columns[14].Value;
                    sarude.ForegroundNumReadOperations  = (Int32)row.Columns[15].Value;
                    sarude.ForegroundNumWriteOperations = (Int32)row.Columns[16].Value;
                    //column 0
                    sarude.AppName = idToEntity.Keys.Contains((int)row.Columns[0].Value) ? Encoding.Unicode.GetString(idToEntity[(int)row.Columns[0].Value]).TrimEnd('\0') : "Unknown";
                    //column 17
                    sarude.Timestamp = (DateTime)row.Columns[17].Value;
                    //TO-DO this is for testing only, fix to match generally
                    sarude.Timestamp = sarude.Timestamp.ToLocalTime();
                    //column 18
                    byte[] binarySid = idToEntity.Keys.Contains((int)row.Columns[18].Value) ? idToEntity[(int)row.Columns[18].Value] : null;

                    if (binarySid != null)
                    {
                        SecurityIdentifier si = new SecurityIdentifier(binarySid, 0);
                        sarude.SID = si.ToString();
                    }


                    entries.Add(sarude);
                }
            } catch (Exception exc)
            {
                MyDebugger.Instance.LogMessage(exc, DebugVerbocity.Exception);
            }

            return(entries);
        }