Beispiel #1
0
 private void DoInterval(object obj)
 {
     if (lstNic.InvokeRequired)
     {
         BaseDelegate bd = new BaseDelegate(DoInterval);
         this.Invoke(bd, obj);
         return;
     }
     else
     {
         lstNic.Items.Clear();
         Win32Native.MIB_IF_TABLE2 s_Mit2 = GetMIB2Interface();
         for (int i = 0; i < s_Mit2.NumEntries; i++)
         {
             lstNic.Items.Add(
                 new ListViewItem(
                     new string[]
             {
                 s_Mit2.Table[i].Description,
                 s_Mit2.Table[i].Alias,
                 s_Mit2.Table[i].InOctets.ToString(),
                 s_Mit2.Table[i].OutOctets.ToString()
             }
                     )
                 );
         }
     }
 }
Beispiel #2
0
        public static unsafe Win32Native.MIB_IF_TABLE2 GetMIB2Interface()
        {
            int ptr_Mit2 = Win32Native.NULL;

            Win32Native.MIB_IF_TABLE2 s_Mit2 = new Win32Native.MIB_IF_TABLE2(); // create empty mit2.
            if (Win32Native.GetIfTable2(ref ptr_Mit2) != Win32Native.NO_ERROR)
            {
                return(s_Mit2);
            }
            if (Win32Native.RtlMoveMemory(ref s_Mit2.NumEntries, ptr_Mit2, 4) && s_Mit2.NumEntries > 0)
            {
                ptr_Mit2 = ptr_Mit2 + 8; // ptr_Mit2 += 8; offset pointer to MIB_IF_TABLE2::Table
                int dwBufferSize = 1352; // sizeof(Win32Native.MIB_IF_ROW2);
                s_Mit2.Table = new Win32Native.MIB_IF_ROW2[s_Mit2.NumEntries];
                for (int i = 0; i < s_Mit2.NumEntries; i++)
                {
                    IntPtr ptr = (IntPtr)(ptr_Mit2 + (i * dwBufferSize));
                    s_Mit2.Table[i] = (Win32Native.MIB_IF_ROW2)
                                      Marshal.PtrToStructure(ptr, typeof(Win32Native.MIB_IF_ROW2));
                }
            }
            return(s_Mit2);
        }