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; }
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); } }
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); }