Ejemplo n.º 1
0
        private static void InitAccessPoint()
        {
            AdapterInfo adapter = null;

            try
            {
                if (SecretManager.AccessPointSsid == Common.Helpers.SharedConstants.DEFAULT_AP_SSID)
                {
                    var listAdapters = AdaptersHelper.GetAdapters();
                    adapter = listAdapters.FindAll(p => p.Type == AdapterType.Wifi).OrderBy(p => p.Name).FirstOrDefault();
                    if (adapter == null)
                    {
                        adapter = listAdapters.OrderBy(p => p.Name).FirstOrDefault();
                    }

                    if (adapter == null)
                    {
                        throw new Exception("Could not retrieve MAC address");
                    }

                    SecretManager.AccessPointSsid = $"{Common.Helpers.SharedConstants.DEFAULT_AP_SSID}_{adapter.RawMAC}";
                }
            }
            catch (Exception e)
            {
                DebugHelper.LogError($"Could not retrieve MAC address: {e.Message}");
                return;
            }

            DebugHelper.LogInformation($"Access Point Id: {SecretManager.AccessPointSsid}");

            if (_AccessPoint != null)
            {
                StopAccessPoint();
            }
            _AccessPoint = new OnboardingAccessPoint(SecretManager.AccessPointSsid, SecretManager.AccessPointPassword, AccessPointId);
        }
Ejemplo n.º 2
0
        public static List <AdapterInfo> GetAdapters()
        {
            var adapters = new List <AdapterInfo>();

            long   structSize = Marshal.SizeOf(typeof(IP_ADAPTER_INFO));
            IntPtr pArray     = Marshal.AllocHGlobal(new IntPtr(structSize));

            int ret = GetAdaptersInfo(pArray, ref structSize);

            if (ret == ERROR_BUFFER_OVERFLOW) // ERROR_BUFFER_OVERFLOW == 111
            {
                // Buffer was too small, reallocate the correct size for the buffer.
                pArray = Marshal.ReAllocHGlobal(pArray, new IntPtr(structSize));

                ret = GetAdaptersInfo(pArray, ref structSize);
            }

            if (ret == 0)
            {
                // Call Succeeded
                IntPtr pEntry = pArray;

                do
                {
                    var adapter = new AdapterInfo();

                    // Retrieve the adapter info from the memory address
                    var entry = (IP_ADAPTER_INFO)Marshal.PtrToStructure(pEntry, typeof(IP_ADAPTER_INFO));

                    // Adapter Type
                    switch (entry.Type)
                    {
                    case MIB_IF_TYPE_ETHERNET:
                        adapter.Type = AdapterType.Ethernet;
                        break;

                    case MIB_IF_TYPE_TOKENRING:
                        adapter.Type = AdapterType.TokenRing;
                        break;

                    case MIB_IF_TYPE_FDDI:
                        adapter.Type = AdapterType.FDDI;
                        break;

                    case MIB_IF_TYPE_PPP:
                        adapter.Type = AdapterType.PPP;
                        break;

                    case MIB_IF_TYPE_LOOPBACK:
                        adapter.Type = AdapterType.Loopback;
                        break;

                    case MIB_IF_TYPE_SLIP:
                        adapter.Type = AdapterType.Slip;
                        break;

                    case MIB_IF_TYPE_WIFI:
                        adapter.Type = AdapterType.Wifi;
                        break;

                    default:
                        adapter.Type = AdapterType.Unknown;
                        break;
                    } // switch

                    adapter.Name        = entry.AdapterName;
                    adapter.Description = entry.AdapterDescription;

                    // MAC Address (data is in a byte[])
                    adapter.MAC    = string.Join("-", Enumerable.Range(0, (int)entry.AddressLength).Select(s => string.Format("{0:X2}", entry.Address[s])));
                    adapter.RawMAC = string.Join("", Enumerable.Range(0, (int)entry.AddressLength).Select(s => string.Format("{0:X2}", entry.Address[s])));

                    // Get next adapter (if any)

                    adapters.Add(adapter);

                    pEntry = entry.Next;
                }while (pEntry != IntPtr.Zero);

                Marshal.FreeHGlobal(pArray);
            }
            else
            {
                Marshal.FreeHGlobal(pArray);
                throw new InvalidOperationException("GetAdaptersInfo failed: " + ret);
            }

            return(adapters);
        }