Пример #1
0
        private void ReloadStatus()
        {
            WlanHostedNetworkPeerState[] peerList;
            WlanHostedNetworkStatus      status = QueryStatus(out peerList);

            State      = status.State;
            Guid       = status.IPDeviceID;
            MacAddress = new PhysicalAddress(status.MacAddress.Value);
            PhyType    = status.PhyType;
            Channel    = (int)status.ChannelFrequency;
            Peers      = peerList;
        }
Пример #2
0
        private WlanHostedNetworkStatus QueryStatus(out WlanHostedNetworkPeerState[] peerList)
        {
            IntPtr statusPtr;

            Util.ThrowIfError(NativeMethods.WlanHostedNetworkQueryStatus(client.clientHandle, out statusPtr, IntPtr.Zero));
            try {
                //WlanHostedNetworkPeerState[] peerList;
                WlanHostedNetworkStatus status = ConvertHostedNetworkStatusPtr(statusPtr, out peerList);
                return(status);
            } finally {
                NativeMethods.WlanFreeMemory(statusPtr);
            }
        }
Пример #3
0
        private WlanHostedNetworkStatus ConvertHostedNetworkStatusPtr(IntPtr statusPtr, out WlanHostedNetworkPeerState[] peerList)
        {
            WlanHostedNetworkStatus status = (WlanHostedNetworkStatus)Marshal.PtrToStructure(statusPtr, typeof(WlanHostedNetworkStatus));
            uint  numberOfItems            = status.NumberOfPeers;
            Int64 peersIterator            = statusPtr.ToInt64() + Marshal.OffsetOf(typeof(WlanHostedNetworkStatus), "PeerList").ToInt64();

            peerList = new WlanHostedNetworkPeerState[numberOfItems];
            for (int i = 0; i < numberOfItems; i++)
            {
                peerList[i]    = (WlanHostedNetworkPeerState)Marshal.PtrToStructure(new IntPtr(peersIterator), typeof(WlanHostedNetworkPeerState));
                peersIterator += Marshal.SizeOf(typeof(WlanHostedNetworkPeerState));
            }
            return(status);
        }