Пример #1
0
        /// <summary>
        /// Gets the information of all profiles on this interface.
        /// </summary>
        /// <returns>The profiles information.</returns>
        public WlanProfileInfo[] GetProfiles()
        {
            IntPtr profileListPtr;

            WlanInterop.ThrowIfError(WlanInterop.WlanGetProfileList(client.clientHandle, info.interfaceGuid, IntPtr.Zero, out profileListPtr));

            try
            {
                WlanProfileInfoListHeader 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
            {
                WlanInterop.WlanFreeMemory(profileListPtr);
            }
        }
Пример #2
0
        /// <summary>
        /// Gets the information of all profiles on this interface.
        /// </summary>
        /// <returns>The profiles information.</returns>
        public string[] GetProfilesXml(bool isProtected)
        {
            IntPtr profileListPtr;

            WlanInterop.ThrowIfError(WlanInterop.WlanGetProfileList(_client.ClientHandle, _info.interfaceGuid, IntPtr.Zero, out profileListPtr));

            try
            {
                WlanProfileInfoListHeader header = (WlanProfileInfoListHeader)Marshal.PtrToStructure(profileListPtr, typeof(WlanProfileInfoListHeader));
                string[] profileInfos            = new string[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]      = this.GetProfileXml(profileInfo.profileName, isProtected);
                    profileListIterator += Marshal.SizeOf(profileInfo);
                }

                return(profileInfos);
            }
            finally
            {
                WlanInterop.WlanFreeMemory(profileListPtr);
            }
        }
Пример #3
0
            /// <summary>All profiles on this interface</summary>
            /// <returns>A list of profile Informations</returns>
            public WlanProfileInfo[] GetProfiles()
            {
                IntPtr profileListPtr;

                SystemInterface.WlanGetProfileList(client.clientHandle, info.interfaceGuid, IntPtr.Zero,
                                                   out profileListPtr);
                ListHeader header = (ListHeader)Marshal.PtrToStructure(profileListPtr, typeof(ListHeader));

                WlanProfileInfo[] profileInfos = new WlanProfileInfo[header.numberOfItems];

                // By the standard this is the correction start position
                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);
            }