Example #1
0
            /// <summary>
            /// Converts a pointer to a BSS list (header + entries) to an array of BSS entries.
            /// </summary>
            /// <param name="bssListPtr">A pointer to a BSS list's header.</param>
            /// <returns>An array of BSS entries.</returns>
            private static Wlan.WlanBssEntry[] ConvertBssListPtr(IntPtr bssListPtr)
            {
                Wlan.WlanBssListHeader bssListHeader = (Wlan.WlanBssListHeader)Marshal.PtrToStructure(bssListPtr, typeof(Wlan.WlanBssListHeader));
                long bssListIt = bssListPtr.ToInt64() + Marshal.SizeOf(typeof(Wlan.WlanBssListHeader));

                Wlan.WlanBssEntry[] bssEntries = new Wlan.WlanBssEntry[bssListHeader.numberOfItems];
                for (int i = 0; i < bssListHeader.numberOfItems; ++i)
                {
                    bssEntries[i] = (Wlan.WlanBssEntry)Marshal.PtrToStructure(new IntPtr(bssListIt), typeof(Wlan.WlanBssEntry));
                    bssListIt    += Marshal.SizeOf(typeof(Wlan.WlanBssEntry));
                }
                return(bssEntries);
            }
Example #2
0
            /// <summary>
            /// Converts a pointer to a BSS list (header + entries) to an array of BSS entries.
            /// </summary>
            /// <param name="bssListPtr">A pointer to a BSS list's header.</param>
            /// <returns>An array of BSS entries.</returns>
            private static Wlan.WlanBssEntryN[] ConvertBssListPtr(IntPtr bssListPtr)
            {
                Wlan.WlanBssListHeader header = (Wlan.WlanBssListHeader)Marshal.PtrToStructure(bssListPtr, typeof(Wlan.WlanBssListHeader));
                long num = bssListPtr.ToInt64() + Marshal.SizeOf(typeof(Wlan.WlanBssListHeader));

                Wlan.WlanBssEntryN[] entryArray = new Wlan.WlanBssEntryN[header.numberOfItems];
                for (int i = 0; i < header.numberOfItems; i++)
                {
                    entryArray[i] = new Wlan.WlanBssEntryN((Wlan.WlanBssEntry)Marshal.PtrToStructure(new IntPtr(num), typeof(Wlan.WlanBssEntry)));

                    int size = (int)entryArray[i].BaseEntry.ieSize;
                    entryArray[i].IEs = new byte[size];

                    Marshal.Copy(new IntPtr(num + entryArray[i].BaseEntry.ieOffset), entryArray[i].IEs, 0, size);

                    num += Marshal.SizeOf(typeof(Wlan.WlanBssEntry));
                }
                return(entryArray);
            }