mirror of
https://github.com/snltty/linker.git
synced 2025-10-17 22:50:44 +08:00
185 lines
6.5 KiB
C#
185 lines
6.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Runtime.InteropServices;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Linker.Libs.Winapis
|
|
{
|
|
public static class Wlanapi
|
|
{
|
|
[DllImport("Wlanapi.dll", SetLastError = true)]
|
|
public static extern uint WlanOpenHandle(uint dwClientVersion, IntPtr pReserved, out uint pdwNegotiatedVersion, out IntPtr phClientHandle);
|
|
|
|
[DllImport("Wlanapi.dll", SetLastError = true)]
|
|
public static extern uint WlanCloseHandle(IntPtr hClientHandle, IntPtr pReserved);
|
|
|
|
[DllImport("Wlanapi.dll", SetLastError = true)]
|
|
public static extern uint WlanEnumInterfaces(IntPtr hClientHandle, IntPtr pReserved, out IntPtr ppInterfaceList);
|
|
|
|
[DllImport("Wlanapi.dll", SetLastError = true)]
|
|
public static extern uint WlanGetAvailableNetworkList(IntPtr hClientHandle, ref Guid pInterfaceGuid, uint dwFlags, IntPtr pReserved, out IntPtr ppAvailableNetworkList);
|
|
|
|
[DllImport("Wlanapi.dll", SetLastError = true)]
|
|
public static extern uint WlanFreeMemory(IntPtr pMemory);
|
|
|
|
[DllImport("Wlanapi.dll", SetLastError = true)]
|
|
public static extern uint WlanConnect(IntPtr hClientHandle, ref Guid pInterfaceGuid, ref WLAN_CONNECTION_PARAMETERS pConnectionParameters, IntPtr pReserved);
|
|
|
|
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
|
|
public struct WLAN_INTERFACE_INFO_LIST
|
|
{
|
|
public uint dwNumberOfItems;
|
|
public uint dwIndex;
|
|
public WLAN_INTERFACE_INFO[] InterfaceInfo;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
|
|
public struct WLAN_INTERFACE_INFO
|
|
{
|
|
public Guid InterfaceGuid;
|
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
|
|
public string strInterfaceDescription;
|
|
public WLAN_INTERFACE_STATE isState;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
|
|
public struct WLAN_AVAILABLE_NETWORK_LIST
|
|
{
|
|
public uint dwNumberOfItems;
|
|
public uint dwIndex;
|
|
public WLAN_AVAILABLE_NETWORK[] Network;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
|
|
public struct WLAN_AVAILABLE_NETWORK
|
|
{
|
|
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
|
|
public string strProfileName;
|
|
public DOT11_SSID dot11Ssid;
|
|
public DOT11_BSS_TYPE dot11BssType;
|
|
public uint uNumberOfBssids;
|
|
public bool bNetworkConnectable;
|
|
public uint wlanNotConnectableReason;
|
|
public uint uNumberOfPhyTypes;
|
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
|
|
public DOT11_PHY_TYPE[] dot11PhyTypes;
|
|
public bool bMorePhyTypes;
|
|
public int wlanSignalQuality;
|
|
public bool bSecurityEnabled;
|
|
public DOT11_AUTH_ALGORITHM dot11DefaultAuthAlgorithm;
|
|
public DOT11_CIPHER_ALGORITHM dot11DefaultCipherAlgorithm;
|
|
public uint dwFlags;
|
|
public uint dwReserved;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
|
|
public struct DOT11_SSID
|
|
{
|
|
public uint uSSIDLength;
|
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
|
|
public byte[] ucSSID;
|
|
}
|
|
|
|
public enum WLAN_INTERFACE_STATE
|
|
{
|
|
wlan_interface_state_not_ready,
|
|
wlan_interface_state_connected,
|
|
wlan_interface_state_ad_hoc_network_formed,
|
|
wlan_interface_state_disconnecting,
|
|
wlan_interface_state_disconnected,
|
|
wlan_interface_state_associating,
|
|
wlan_interface_state_discovering,
|
|
wlan_interface_state_authenticating
|
|
}
|
|
|
|
public enum DOT11_BSS_TYPE
|
|
{
|
|
dot11_BSS_type_infrastructure = 1,
|
|
dot11_BSS_type_independent = 2,
|
|
dot11_BSS_type_any = 3
|
|
}
|
|
|
|
public enum DOT11_PHY_TYPE
|
|
{
|
|
dot11_phy_type_unknown,
|
|
dot11_phy_type_any,
|
|
dot11_phy_type_fhss,
|
|
dot11_phy_type_dsss,
|
|
dot11_phy_type_irbaseband,
|
|
dot11_phy_type_ofdm,
|
|
dot11_phy_type_hrdsss,
|
|
dot11_phy_type_erp,
|
|
dot11_phy_type_ht,
|
|
dot11_phy_type_IHV_start,
|
|
dot11_phy_type_IHV_end
|
|
}
|
|
|
|
public enum DOT11_AUTH_ALGORITHM
|
|
{
|
|
DOT11_AUTH_ALGO_80211_OPEN = 1,
|
|
DOT11_AUTH_ALGO_80211_SHARED_KEY = 2,
|
|
DOT11_AUTH_ALGO_WPA = 3,
|
|
DOT11_AUTH_ALGO_WPA_PSK = 4,
|
|
DOT11_AUTH_ALGO_WPA_NONE = 5,
|
|
DOT11_AUTH_ALGO_RSNA = 6,
|
|
DOT11_AUTH_ALGO_RSNA_PSK = 7,
|
|
DOT11_AUTH_ALGO_IHV_START = -2147483648,
|
|
DOT11_AUTH_ALGO_IHV_END = -1
|
|
}
|
|
|
|
public enum DOT11_CIPHER_ALGORITHM:uint
|
|
{
|
|
DOT11_CIPHER_ALGO_NONE = 0x00,
|
|
DOT11_CIPHER_ALGO_WEP40 = 0x01,
|
|
DOT11_CIPHER_ALGO_TKIP = 0x02,
|
|
DOT11_CIPHER_ALGO_CCMP = 0x04,
|
|
DOT11_CIPHER_ALGO_WEP104 = 0x05,
|
|
DOT11_CIPHER_ALGO_WPA_USE_GROUP = 0x100,
|
|
DOT11_CIPHER_ALGO_RSN_USE_GROUP = 0x100,
|
|
DOT11_CIPHER_ALGO_WEP = 0x101,
|
|
DOT11_CIPHER_ALGO_IHV_START = 0x80000000,
|
|
DOT11_CIPHER_ALGO_IHV_END = 0xffffffff
|
|
}
|
|
|
|
public struct WLAN_CONNECTION_PARAMETERS
|
|
{
|
|
public WLAN_CONNECTION_MODE wlanConnectionMode;
|
|
public string strProfile;
|
|
public DOT11_SSID pDot11Ssid;
|
|
public DOT11_BSSID_LIST pDesiredBssidList;
|
|
public DOT11_BSS_TYPE dot11BssType;
|
|
public uint dwFlags;
|
|
}
|
|
|
|
public enum WLAN_CONNECTION_MODE
|
|
{
|
|
wlan_connection_mode_profile,
|
|
wlan_connection_mode_temporary_profile,
|
|
wlan_connection_mode_discovery_secure,
|
|
wlan_connection_mode_discovery_unsecure,
|
|
wlan_connection_mode_auto,
|
|
wlan_connection_mode_invalid
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public struct DOT11_BSSID_LIST
|
|
{
|
|
public uint uNumOfEntries;
|
|
public uint uTotalNumOfEntries;
|
|
|
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)]
|
|
public DOT11_MAC_ADDRESS[] BSSIDs;
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public struct DOT11_MAC_ADDRESS
|
|
{
|
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
|
|
public byte[] ucMacAddress;
|
|
}
|
|
}
|
|
|
|
}
|