Ejemplo n.º 1
0
            /// <summary>
            /// Gets the information of all profiles on this interface.
            /// </summary>
            /// <returns>The profiles information.</returns>
            public WlanProfileInfo[] GetProfiles()
            {
                Wlan.ThrowIfError(
                    WlanApi.WlanGetProfileList(client.clientHandle, info.interfaceGuid, IntPtr.Zero, out var profileListPtr));
                try
                {
                    var header =
                        (WlanProfileInfoListHeader)Marshal.PtrToStructure(profileListPtr, typeof(WlanProfileInfoListHeader));
                    WlanProfileInfo[] profileInfos = new WlanProfileInfo[header.numberOfItems];
                    long profileListIterator       = profileListPtr.ToInt64() + Marshal.SizeOf(header);

                    for (int i = 0; i < header.numberOfItems; ++i)
                    {
                        WlanProfileInfo profileInfo =
                            (WlanProfileInfo)Marshal.PtrToStructure(new IntPtr(profileListIterator), typeof(WlanProfileInfo));
                        profileInfos[i]      = profileInfo;
                        profileListIterator += Marshal.SizeOf(profileInfo);
                    }

                    return(profileInfos);
                }
                finally
                {
                    WlanApi.WlanFreeMemory(profileListPtr);
                }
            }