wlanapi.h

Виталий Фадеев vital.fadeev at gmail.com
Tue Apr 14 09:42:44 UTC 2020


I was writed "wlanapi.h".
It is WLAN API windows header.
I will be happy to see it in public D distributive.

What I must to do for it ?
What I must to do for add new file to 
"C:\D\dmd2\src\druntime\src\core\sys\windows\" ?
Where to send it ?


// cat
import core.sys.windows.windows;


enum UINT WLAN_MAX_NAME_LENGTH      = 256;
enum UINT DOT11_SSID_MAX_LENGTH     = 32;
enum UINT WLAN_MAX_PHY_TYPE_NUMBER  = 8;

enum UINT WLAN_AVAILABLE_NETWORK_CONNECTED    = 1;
enum UINT WLAN_AVAILABLE_NETWORK_HAS_PROFILE  = 2;

struct WLAN_PROFILE_INFO
{
	WCHAR[WLAN_MAX_NAME_LENGTH] strProfileName;
	DWORD                       dwFlags;
};
alias WLAN_PROFILE_INFO* PWLAN_PROFILE_INFO;

struct WLAN_PROFILE_INFO_LIST
{
	DWORD dwNumberOfItems;
	DWORD dwIndex;
	WLAN_PROFILE_INFO[1] ProfileInfo;
};
alias WLAN_PROFILE_INFO_LIST* PWLAN_PROFILE_INFO_LIST;

enum WLAN_INTERFACE_STATE
{
	wlan_interface_state_not_ready = 0,
	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
};
alias WLAN_INTERFACE_STATE* PWLAN_INTERFACE_STATE;

struct WLAN_INTERFACE_INFO
{
	GUID                        InterfaceGuid;
	WCHAR[WLAN_MAX_NAME_LENGTH] strInterfaceDescription;
	WLAN_INTERFACE_STATE        isState;
};
alias WLAN_INTERFACE_INFO* PWLAN_INTERFACE_INFO;

struct WLAN_INTERFACE_INFO_LIST
{
	DWORD                   dwNumberOfItems;
	DWORD                   dwIndex;
	WLAN_INTERFACE_INFO[1]  InterfaceInfo;
};
alias WLAN_INTERFACE_INFO_LIST* PWLAN_INTERFACE_INFO_LIST;

struct DOT11_SSID
{
	ULONG                           uSSIDLength;
	UCHAR[DOT11_SSID_MAX_LENGTH]    ucSSID;
};
alias DOT11_SSID* PDOT11_SSID;

enum DOT11_BSS_TYPE
{
	dot11_BSS_type_infrastructure   = 1,
	dot11_BSS_type_independent      = 2,
	dot11_BSS_type_any              = 3
};
alias DOT11_BSS_TYPE* PDOT11_BSS_TYPE;

enum DOT11_PHY_TYPE
{
	dot11_phy_type_unknown      = 0,
	dot11_phy_type_any          = dot11_phy_type_unknown,
	dot11_phy_type_fhss         = 1,
	dot11_phy_type_dsss         = 2,
	dot11_phy_type_irbaseband   = 3,
	dot11_phy_type_ofdm         = 4,
	dot11_phy_type_hrdsss       = 5,
	dot11_phy_type_erp          = 6,
	dot11_phy_type_ht           = 7,
};
alias DOT11_PHY_TYPE* PDOT11_PHY_TYPE;

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,
};
alias DOT11_AUTH_ALGORITHM* PDOT11_AUTH_ALGORITHM;

enum DOT11_CIPHER_ALGORITHM
{
	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,
};
alias DOT11_CIPHER_ALGORITHM* PDOT11_CIPHER_ALGORITHM;

struct WLAN_AVAILABLE_NETWORK
{
	WCHAR[WLAN_MAX_NAME_LENGTH]                 strProfileName;
	DOT11_SSID                                  dot11Ssid;
	DOT11_BSS_TYPE                              dot11BssType;
	ULONG                                       uNumberOfBssids;
	BOOL                                        bNetworkConnectable;
	DWORD                                       
wlanNotConnectableReason;
	ULONG                                       uNumberOfPhyTypes;
	DOT11_PHY_TYPE[WLAN_MAX_PHY_TYPE_NUMBER]    dot11PhyTypes;
	BOOL                                        bMorePhyTypes;
	ULONG                                       wlanSignalQuality;
	BOOL                                        bSecurityEnabled;
	DOT11_AUTH_ALGORITHM                        
dot11DefaultAuthAlgorithm;
	DOT11_CIPHER_ALGORITHM                      
dot11DefaultCipherAlgorithm;
	DWORD                                       dwFlags;
	DWORD                                       dwReserved;
};
alias WLAN_AVAILABLE_NETWORK* PWLAN_AVAILABLE_NETWORK;

struct WLAN_AVAILABLE_NETWORK_LIST
{
	DWORD                       dwNumberOfItems;
	DWORD                       dwIndex;
	WLAN_AVAILABLE_NETWORK[1]   Network;
};
alias WLAN_AVAILABLE_NETWORK_LIST* PWLAN_AVAILABLE_NETWORK_LIST;


extern ( Windows )
{
     DWORD WlanDeleteProfile             ( HANDLE, const GUID*, 
LPCWSTR, PVOID );
     DWORD WlanSetProfile                ( HANDLE, const GUID*, 
DWORD, LPCWSTR, LPCWSTR, BOOL, PVOID, PDWORD );
     DWORD WlanGetProfile                ( HANDLE, const GUID*, 
LPCWSTR, PVOID, LPWSTR*, DWORD*, DWORD* );
     DWORD WlanOpenHandle                ( DWORD,  PVOID, PDWORD, 
PHANDLE );
     DWORD WlanCloseHandle               ( HANDLE, PVOID );
     DWORD WlanGetProfileList            ( HANDLE, const GUID*, 
PVOID, PWLAN_PROFILE_INFO_LIST * );
     DWORD WlanGetAvailableNetworkList   ( HANDLE, const GUID *, 
DWORD, PVOID, PWLAN_AVAILABLE_NETWORK_LIST * );
     DWORD WlanEnumInterfaces            ( HANDLE, PVOID, 
PWLAN_INTERFACE_INFO_LIST * );
     void  WlanFreeMemory                ( PVOID );
     DWORD WlanReasonCodeToString        ( DWORD, DWORD, PWCHAR, 
PVOID );
     DWORD WlanSetProfilePosition        ( HANDLE, const GUID *, 
LPCWSTR, DWORD, PVOID );
}



More information about the Digitalmars-d-announce mailing list