// Licensed under the Apache License, Version 2.0 // or the MIT license // , at your option. // All files in the project carrying such notice may not be copied, modified, or distributed // except according to those terms. //! Definitions and data structures for wlan auto config client side API. use shared::devpropdef::DEVPROPKEY; use shared::guiddef::{GUID, LPGUID}; use shared::minwindef::{BOOL, BYTE, DWORD, LPBYTE, PBOOL, PBYTE, PDWORD, PUCHAR, ULONG, USHORT}; use shared::windef::HWND; use shared::windot11::{ DOT11_COUNTRY_OR_REGION_STRING, DOT11_HESSID, DOT11_MAC_ADDRESS, DOT11_PHY_TYPE, DOT11_RATE_SET_MAX_LENGTH, PDOT11_BSSID_LIST, PDOT11_HESSID, PDOT11_MAC_ADDRESS, }; use shared::wlantypes::{ DOT11_ACCESSNETWORKOPTIONS, DOT11_AUTH_ALGORITHM, DOT11_AUTH_CIPHER_PAIR, DOT11_BSS_TYPE, DOT11_CIPHER_ALGORITHM, DOT11_SSID, DOT11_VENUEINFO, PDOT11_ACCESSNETWORKOPTIONS, PDOT11_SSID, }; use um::eaptypes::EAP_METHOD_TYPE; use um::l2cmn::{ L2_NOTIFICATION_CODE_PUBLIC_BEGIN, L2_NOTIFICATION_CODE_V2_BEGIN, L2_NOTIFICATION_DATA, L2_NOTIFICATION_SOURCE_ALL, L2_NOTIFICATION_SOURCE_NONE, L2_NOTIFICATION_SOURCE_ONEX, L2_NOTIFICATION_SOURCE_WLAN_ACM, L2_NOTIFICATION_SOURCE_WLAN_HNWK, L2_NOTIFICATION_SOURCE_WLAN_IHV, L2_NOTIFICATION_SOURCE_WLAN_MSM, L2_NOTIFICATION_SOURCE_WLAN_SECURITY, L2_PROFILE_MAX_NAME_LENGTH, L2_REASON_CODE_DOT11_AC_BASE, L2_REASON_CODE_DOT11_MSM_BASE, L2_REASON_CODE_DOT11_SECURITY_BASE, L2_REASON_CODE_GROUP_SIZE, L2_REASON_CODE_PROFILE_BASE, L2_REASON_CODE_SUCCESS, L2_REASON_CODE_UNKNOWN, }; use um::winnt::{ BOOLEAN, DELETE, FILE_EXECUTE, FILE_READ_DATA, FILE_WRITE_DATA, HANDLE, LONG, LPCWSTR, LPWSTR, PHANDLE, PVOID, PWCHAR, STANDARD_RIGHTS_EXECUTE, STANDARD_RIGHTS_READ, STANDARD_RIGHTS_WRITE, ULONGLONG, WCHAR, WRITE_DAC, }; pub const WLAN_API_VERSION_1_0: DWORD = 0x00000001; pub const WLAN_API_VERSION_2_0: DWORD = 0x00000002; #[inline] pub fn WLAN_API_VERSION_MAJOR(v: u32) -> u32 { v & 0xffff } #[inline] pub fn WLAN_API_VERSION_MINOR(v: u32) -> u32 { v >> 16 } #[inline] pub fn WLAN_API_MAKE_VERSION(major: u32, minor: u32) -> u32 { minor << 16 | major } pub const WLAN_API_VERSION: u32 = WLAN_API_VERSION_2_0; pub const WLAN_MAX_NAME_LENGTH: usize = L2_PROFILE_MAX_NAME_LENGTH; pub const WLAN_PROFILE_GROUP_POLICY: DWORD = 0x00000001; pub const WLAN_PROFILE_USER: DWORD = 0x00000002; pub const WLAN_PROFILE_GET_PLAINTEXT_KEY: DWORD = 0x00000004; pub const WLAN_PROFILE_CONNECTION_MODE_SET_BY_CLIENT: DWORD = 0x00010000; pub const WLAN_PROFILE_CONNECTION_MODE_AUTO: DWORD = 0x00020000; pub const WLAN_SET_EAPHOST_DATA_ALL_USERS: DWORD = 0x00000001; STRUCT!{struct WLAN_PROFILE_INFO { strProfileName: [WCHAR; WLAN_MAX_NAME_LENGTH], dwFlags: DWORD, }} pub type PWLAN_PROFILE_INFO = *mut WLAN_PROFILE_INFO; STRUCT!{struct DOT11_NETWORK { dot11Ssid: DOT11_SSID, dot11BssType: DOT11_BSS_TYPE, }} pub type PDOT11_NETWORK = *mut DOT11_NETWORK; pub const DOT11_PSD_IE_MAX_DATA_SIZE: DWORD = 240; pub const DOT11_PSD_IE_MAX_ENTRY_NUMBER: DWORD = 5; STRUCT!{struct WLAN_RAW_DATA { dwDataSize: DWORD, DataBlob: [BYTE; 1], }} pub type PWLAN_RAW_DATA = *mut WLAN_RAW_DATA; STRUCT!{struct WLAN_RAW_DATA_LIST_DataList { dwDataOffset: DWORD, dwDataSize: DWORD, }} STRUCT!{struct WLAN_RAW_DATA_LIST { dwTotalSize: DWORD, dwNumberOfItems: DWORD, DataList: [WLAN_RAW_DATA_LIST_DataList; 1], }} pub type PWLAN_RAW_DATA_LIST = *mut WLAN_RAW_DATA_LIST; ENUM!{enum WLAN_CONNECTION_MODE { wlan_connection_mode_profile = 0, wlan_connection_mode_temporary_profile = 1, wlan_connection_mode_discovery_secure = 2, wlan_connection_mode_discovery_unsecure = 3, wlan_connection_mode_auto = 4, wlan_connection_mode_invalid = 5, }} pub type PWLAN_CONNECTION_MODE = *mut WLAN_CONNECTION_MODE; pub type WLAN_REASON_CODE = DWORD; pub type PWLAN_REASON_CODE = *mut DWORD; pub const WLAN_REASON_CODE_SUCCESS: WLAN_REASON_CODE = L2_REASON_CODE_SUCCESS; pub const WLAN_REASON_CODE_UNKNOWN: WLAN_REASON_CODE = L2_REASON_CODE_UNKNOWN; pub const WLAN_REASON_CODE_RANGE_SIZE: WLAN_REASON_CODE = L2_REASON_CODE_GROUP_SIZE; pub const WLAN_REASON_CODE_BASE: WLAN_REASON_CODE = L2_REASON_CODE_DOT11_AC_BASE; pub const WLAN_REASON_CODE_AC_BASE: WLAN_REASON_CODE = L2_REASON_CODE_DOT11_AC_BASE; pub const WLAN_REASON_CODE_AC_CONNECT_BASE: WLAN_REASON_CODE = WLAN_REASON_CODE_AC_BASE + WLAN_REASON_CODE_RANGE_SIZE / 2; pub const WLAN_REASON_CODE_AC_END: WLAN_REASON_CODE = WLAN_REASON_CODE_AC_BASE + WLAN_REASON_CODE_RANGE_SIZE - 1; pub const WLAN_REASON_CODE_PROFILE_BASE: WLAN_REASON_CODE = L2_REASON_CODE_PROFILE_BASE; pub const WLAN_REASON_CODE_PROFILE_CONNECT_BASE: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + WLAN_REASON_CODE_RANGE_SIZE / 2; pub const WLAN_REASON_CODE_PROFILE_END: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + WLAN_REASON_CODE_RANGE_SIZE - 1; pub const WLAN_REASON_CODE_MSM_BASE: WLAN_REASON_CODE = L2_REASON_CODE_DOT11_MSM_BASE; pub const WLAN_REASON_CODE_MSM_CONNECT_BASE: WLAN_REASON_CODE = WLAN_REASON_CODE_MSM_BASE + WLAN_REASON_CODE_RANGE_SIZE / 2; pub const WLAN_REASON_CODE_MSM_END: WLAN_REASON_CODE = WLAN_REASON_CODE_MSM_BASE + WLAN_REASON_CODE_RANGE_SIZE - 1; pub const WLAN_REASON_CODE_MSMSEC_BASE: WLAN_REASON_CODE = L2_REASON_CODE_DOT11_SECURITY_BASE; pub const WLAN_REASON_CODE_MSMSEC_CONNECT_BASE: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + WLAN_REASON_CODE_RANGE_SIZE / 2; pub const WLAN_REASON_CODE_MSMSEC_END: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + WLAN_REASON_CODE_RANGE_SIZE - 1; pub const WLAN_REASON_CODE_NETWORK_NOT_COMPATIBLE: WLAN_REASON_CODE = WLAN_REASON_CODE_AC_BASE + 1; pub const WLAN_REASON_CODE_PROFILE_NOT_COMPATIBLE: WLAN_REASON_CODE = WLAN_REASON_CODE_AC_BASE + 2; pub const WLAN_REASON_CODE_NO_AUTO_CONNECTION: WLAN_REASON_CODE = WLAN_REASON_CODE_AC_CONNECT_BASE + 1; pub const WLAN_REASON_CODE_NOT_VISIBLE: WLAN_REASON_CODE = WLAN_REASON_CODE_AC_CONNECT_BASE + 2; pub const WLAN_REASON_CODE_GP_DENIED: WLAN_REASON_CODE = WLAN_REASON_CODE_AC_CONNECT_BASE + 3; pub const WLAN_REASON_CODE_USER_DENIED: WLAN_REASON_CODE = WLAN_REASON_CODE_AC_CONNECT_BASE + 4; pub const WLAN_REASON_CODE_BSS_TYPE_NOT_ALLOWED: WLAN_REASON_CODE = WLAN_REASON_CODE_AC_CONNECT_BASE + 5; pub const WLAN_REASON_CODE_IN_FAILED_LIST: WLAN_REASON_CODE = WLAN_REASON_CODE_AC_CONNECT_BASE + 6; pub const WLAN_REASON_CODE_IN_BLOCKED_LIST: WLAN_REASON_CODE = WLAN_REASON_CODE_AC_CONNECT_BASE + 7; pub const WLAN_REASON_CODE_SSID_LIST_TOO_LONG: WLAN_REASON_CODE = WLAN_REASON_CODE_AC_CONNECT_BASE + 8; pub const WLAN_REASON_CODE_CONNECT_CALL_FAIL: WLAN_REASON_CODE = WLAN_REASON_CODE_AC_CONNECT_BASE + 9; pub const WLAN_REASON_CODE_SCAN_CALL_FAIL: WLAN_REASON_CODE = WLAN_REASON_CODE_AC_CONNECT_BASE + 10; pub const WLAN_REASON_CODE_NETWORK_NOT_AVAILABLE: WLAN_REASON_CODE = WLAN_REASON_CODE_AC_CONNECT_BASE + 11; pub const WLAN_REASON_CODE_PROFILE_CHANGED_OR_DELETED: WLAN_REASON_CODE = WLAN_REASON_CODE_AC_CONNECT_BASE + 12; pub const WLAN_REASON_CODE_KEY_MISMATCH: WLAN_REASON_CODE = WLAN_REASON_CODE_AC_CONNECT_BASE + 13; pub const WLAN_REASON_CODE_USER_NOT_RESPOND: WLAN_REASON_CODE = WLAN_REASON_CODE_AC_CONNECT_BASE + 14; pub const WLAN_REASON_CODE_AP_PROFILE_NOT_ALLOWED_FOR_CLIENT: WLAN_REASON_CODE = WLAN_REASON_CODE_AC_CONNECT_BASE + 15; pub const WLAN_REASON_CODE_AP_PROFILE_NOT_ALLOWED: WLAN_REASON_CODE = WLAN_REASON_CODE_AC_CONNECT_BASE + 16; pub const WLAN_REASON_CODE_HOTSPOT2_PROFILE_DENIED: WLAN_REASON_CODE = WLAN_REASON_CODE_AC_CONNECT_BASE + 17; pub const WLAN_REASON_CODE_INVALID_PROFILE_SCHEMA: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + 1; pub const WLAN_REASON_CODE_PROFILE_MISSING: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + 2; pub const WLAN_REASON_CODE_INVALID_PROFILE_NAME: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + 3; pub const WLAN_REASON_CODE_INVALID_PROFILE_TYPE: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + 4; pub const WLAN_REASON_CODE_INVALID_PHY_TYPE: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + 5; pub const WLAN_REASON_CODE_MSM_SECURITY_MISSING: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + 6; pub const WLAN_REASON_CODE_IHV_SECURITY_NOT_SUPPORTED: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + 7; pub const WLAN_REASON_CODE_IHV_OUI_MISMATCH: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + 8; pub const WLAN_REASON_CODE_IHV_OUI_MISSING: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + 9; pub const WLAN_REASON_CODE_IHV_SETTINGS_MISSING: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + 10; pub const WLAN_REASON_CODE_CONFLICT_SECURITY: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + 11; pub const WLAN_REASON_CODE_SECURITY_MISSING: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + 12; pub const WLAN_REASON_CODE_INVALID_BSS_TYPE: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + 13; pub const WLAN_REASON_CODE_INVALID_ADHOC_CONNECTION_MODE: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + 14; pub const WLAN_REASON_CODE_NON_BROADCAST_SET_FOR_ADHOC: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + 15; pub const WLAN_REASON_CODE_AUTO_SWITCH_SET_FOR_ADHOC: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + 16; pub const WLAN_REASON_CODE_AUTO_SWITCH_SET_FOR_MANUAL_CONNECTION: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + 17; pub const WLAN_REASON_CODE_IHV_SECURITY_ONEX_MISSING: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + 18; pub const WLAN_REASON_CODE_PROFILE_SSID_INVALID: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + 19; pub const WLAN_REASON_CODE_TOO_MANY_SSID: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + 20; pub const WLAN_REASON_CODE_IHV_CONNECTIVITY_NOT_SUPPORTED: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + 21; pub const WLAN_REASON_CODE_BAD_MAX_NUMBER_OF_CLIENTS_FOR_AP: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + 22; pub const WLAN_REASON_CODE_INVALID_CHANNEL: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + 23; pub const WLAN_REASON_CODE_OPERATION_MODE_NOT_SUPPORTED: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + 24; pub const WLAN_REASON_CODE_AUTO_AP_PROFILE_NOT_ALLOWED: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + 25; pub const WLAN_REASON_CODE_AUTO_CONNECTION_NOT_ALLOWED: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + 26; pub const WLAN_REASON_CODE_HOTSPOT2_PROFILE_NOT_ALLOWED: WLAN_REASON_CODE = WLAN_REASON_CODE_PROFILE_BASE + 27; pub const WLAN_REASON_CODE_UNSUPPORTED_SECURITY_SET_BY_OS: WLAN_REASON_CODE = WLAN_REASON_CODE_MSM_BASE + 1; pub const WLAN_REASON_CODE_UNSUPPORTED_SECURITY_SET: WLAN_REASON_CODE = WLAN_REASON_CODE_MSM_BASE + 2; pub const WLAN_REASON_CODE_BSS_TYPE_UNMATCH: WLAN_REASON_CODE = WLAN_REASON_CODE_MSM_BASE + 3; pub const WLAN_REASON_CODE_PHY_TYPE_UNMATCH: WLAN_REASON_CODE = WLAN_REASON_CODE_MSM_BASE + 4; pub const WLAN_REASON_CODE_DATARATE_UNMATCH: WLAN_REASON_CODE = WLAN_REASON_CODE_MSM_BASE + 5; pub const WLAN_REASON_CODE_USER_CANCELLED: WLAN_REASON_CODE = WLAN_REASON_CODE_MSM_CONNECT_BASE + 1; pub const WLAN_REASON_CODE_ASSOCIATION_FAILURE: WLAN_REASON_CODE = WLAN_REASON_CODE_MSM_CONNECT_BASE + 2; pub const WLAN_REASON_CODE_ASSOCIATION_TIMEOUT: WLAN_REASON_CODE = WLAN_REASON_CODE_MSM_CONNECT_BASE + 3; pub const WLAN_REASON_CODE_PRE_SECURITY_FAILURE: WLAN_REASON_CODE = WLAN_REASON_CODE_MSM_CONNECT_BASE + 4; pub const WLAN_REASON_CODE_START_SECURITY_FAILURE: WLAN_REASON_CODE = WLAN_REASON_CODE_MSM_CONNECT_BASE + 5; pub const WLAN_REASON_CODE_SECURITY_FAILURE: WLAN_REASON_CODE = WLAN_REASON_CODE_MSM_CONNECT_BASE + 6; pub const WLAN_REASON_CODE_SECURITY_TIMEOUT: WLAN_REASON_CODE = WLAN_REASON_CODE_MSM_CONNECT_BASE + 7; pub const WLAN_REASON_CODE_ROAMING_FAILURE: WLAN_REASON_CODE = WLAN_REASON_CODE_MSM_CONNECT_BASE + 8; pub const WLAN_REASON_CODE_ROAMING_SECURITY_FAILURE: WLAN_REASON_CODE = WLAN_REASON_CODE_MSM_CONNECT_BASE + 9; pub const WLAN_REASON_CODE_ADHOC_SECURITY_FAILURE: WLAN_REASON_CODE = WLAN_REASON_CODE_MSM_CONNECT_BASE + 10; pub const WLAN_REASON_CODE_DRIVER_DISCONNECTED: WLAN_REASON_CODE = WLAN_REASON_CODE_MSM_CONNECT_BASE + 11; pub const WLAN_REASON_CODE_DRIVER_OPERATION_FAILURE: WLAN_REASON_CODE = WLAN_REASON_CODE_MSM_CONNECT_BASE + 12; pub const WLAN_REASON_CODE_IHV_NOT_AVAILABLE: WLAN_REASON_CODE = WLAN_REASON_CODE_MSM_CONNECT_BASE + 13; pub const WLAN_REASON_CODE_IHV_NOT_RESPONDING: WLAN_REASON_CODE = WLAN_REASON_CODE_MSM_CONNECT_BASE + 14; pub const WLAN_REASON_CODE_DISCONNECT_TIMEOUT: WLAN_REASON_CODE = WLAN_REASON_CODE_MSM_CONNECT_BASE + 15; pub const WLAN_REASON_CODE_INTERNAL_FAILURE: WLAN_REASON_CODE = WLAN_REASON_CODE_MSM_CONNECT_BASE + 16; pub const WLAN_REASON_CODE_UI_REQUEST_TIMEOUT: WLAN_REASON_CODE = WLAN_REASON_CODE_MSM_CONNECT_BASE + 17; pub const WLAN_REASON_CODE_TOO_MANY_SECURITY_ATTEMPTS: WLAN_REASON_CODE = WLAN_REASON_CODE_MSM_CONNECT_BASE + 18; pub const WLAN_REASON_CODE_AP_STARTING_FAILURE: WLAN_REASON_CODE = WLAN_REASON_CODE_MSM_CONNECT_BASE + 19; pub const WLAN_REASON_CODE_MSMSEC_MIN: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE; pub const WLAN_REASON_CODE_MSMSEC_PROFILE_INVALID_KEY_INDEX: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 1; pub const WLAN_REASON_CODE_MSMSEC_PROFILE_PSK_PRESENT: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 2; pub const WLAN_REASON_CODE_MSMSEC_PROFILE_KEY_LENGTH: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 3; pub const WLAN_REASON_CODE_MSMSEC_PROFILE_PSK_LENGTH: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 4; pub const WLAN_REASON_CODE_MSMSEC_PROFILE_NO_AUTH_CIPHER_SPECIFIED: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 5; pub const WLAN_REASON_CODE_MSMSEC_PROFILE_TOO_MANY_AUTH_CIPHER_SPECIFIED: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 6; pub const WLAN_REASON_CODE_MSMSEC_PROFILE_DUPLICATE_AUTH_CIPHER: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 7; pub const WLAN_REASON_CODE_MSMSEC_PROFILE_RAWDATA_INVALID: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 8; pub const WLAN_REASON_CODE_MSMSEC_PROFILE_INVALID_AUTH_CIPHER: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 9; pub const WLAN_REASON_CODE_MSMSEC_PROFILE_ONEX_DISABLED: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 10; pub const WLAN_REASON_CODE_MSMSEC_PROFILE_ONEX_ENABLED: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 11; pub const WLAN_REASON_CODE_MSMSEC_PROFILE_INVALID_PMKCACHE_MODE: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 12; pub const WLAN_REASON_CODE_MSMSEC_PROFILE_INVALID_PMKCACHE_SIZE: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 13; pub const WLAN_REASON_CODE_MSMSEC_PROFILE_INVALID_PMKCACHE_TTL: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 14; pub const WLAN_REASON_CODE_MSMSEC_PROFILE_INVALID_PREAUTH_MODE: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 15; pub const WLAN_REASON_CODE_MSMSEC_PROFILE_INVALID_PREAUTH_THROTTLE: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 16; pub const WLAN_REASON_CODE_MSMSEC_PROFILE_PREAUTH_ONLY_ENABLED: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 17; pub const WLAN_REASON_CODE_MSMSEC_CAPABILITY_NETWORK: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 18; pub const WLAN_REASON_CODE_MSMSEC_CAPABILITY_NIC: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 19; pub const WLAN_REASON_CODE_MSMSEC_CAPABILITY_PROFILE: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 20; pub const WLAN_REASON_CODE_MSMSEC_CAPABILITY_DISCOVERY: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 21; pub const WLAN_REASON_CODE_MSMSEC_PROFILE_PASSPHRASE_CHAR: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 22; pub const WLAN_REASON_CODE_MSMSEC_PROFILE_KEYMATERIAL_CHAR: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 23; pub const WLAN_REASON_CODE_MSMSEC_PROFILE_WRONG_KEYTYPE: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 24; pub const WLAN_REASON_CODE_MSMSEC_MIXED_CELL: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 25; pub const WLAN_REASON_CODE_MSMSEC_PROFILE_AUTH_TIMERS_INVALID: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 26; pub const WLAN_REASON_CODE_MSMSEC_PROFILE_INVALID_GKEY_INTV: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 27; pub const WLAN_REASON_CODE_MSMSEC_TRANSITION_NETWORK: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 28; pub const WLAN_REASON_CODE_MSMSEC_PROFILE_KEY_UNMAPPED_CHAR: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 29; pub const WLAN_REASON_CODE_MSMSEC_CAPABILITY_PROFILE_AUTH: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 30; pub const WLAN_REASON_CODE_MSMSEC_CAPABILITY_PROFILE_CIPHER: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 31; pub const WLAN_REASON_CODE_MSMSEC_PROFILE_SAFE_MODE: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 32; pub const WLAN_REASON_CODE_MSMSEC_CAPABILITY_PROFILE_SAFE_MODE_NIC: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 33; pub const WLAN_REASON_CODE_MSMSEC_CAPABILITY_PROFILE_SAFE_MODE_NW: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 34; pub const WLAN_REASON_CODE_MSMSEC_PROFILE_UNSUPPORTED_AUTH: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 35; pub const WLAN_REASON_CODE_MSMSEC_PROFILE_UNSUPPORTED_CIPHER: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 36; pub const WLAN_REASON_CODE_MSMSEC_CAPABILITY_MFP_NW_NIC: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_BASE + 37; pub const WLAN_REASON_CODE_MSMSEC_UI_REQUEST_FAILURE: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_CONNECT_BASE + 1; pub const WLAN_REASON_CODE_MSMSEC_AUTH_START_TIMEOUT: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_CONNECT_BASE + 2; pub const WLAN_REASON_CODE_MSMSEC_AUTH_SUCCESS_TIMEOUT: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_CONNECT_BASE + 3; pub const WLAN_REASON_CODE_MSMSEC_KEY_START_TIMEOUT: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_CONNECT_BASE + 4; pub const WLAN_REASON_CODE_MSMSEC_KEY_SUCCESS_TIMEOUT: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_CONNECT_BASE + 5; pub const WLAN_REASON_CODE_MSMSEC_M3_MISSING_KEY_DATA: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_CONNECT_BASE + 6; pub const WLAN_REASON_CODE_MSMSEC_M3_MISSING_IE: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_CONNECT_BASE + 7; pub const WLAN_REASON_CODE_MSMSEC_M3_MISSING_GRP_KEY: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_CONNECT_BASE + 8; pub const WLAN_REASON_CODE_MSMSEC_PR_IE_MATCHING: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_CONNECT_BASE + 9; pub const WLAN_REASON_CODE_MSMSEC_SEC_IE_MATCHING: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_CONNECT_BASE + 10; pub const WLAN_REASON_CODE_MSMSEC_NO_PAIRWISE_KEY: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_CONNECT_BASE + 11; pub const WLAN_REASON_CODE_MSMSEC_G1_MISSING_KEY_DATA: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_CONNECT_BASE + 12; pub const WLAN_REASON_CODE_MSMSEC_G1_MISSING_GRP_KEY: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_CONNECT_BASE + 13; pub const WLAN_REASON_CODE_MSMSEC_PEER_INDICATED_INSECURE: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_CONNECT_BASE + 14; pub const WLAN_REASON_CODE_MSMSEC_NO_AUTHENTICATOR: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_CONNECT_BASE + 15; pub const WLAN_REASON_CODE_MSMSEC_NIC_FAILURE: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_CONNECT_BASE + 16; pub const WLAN_REASON_CODE_MSMSEC_CANCELLED: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_CONNECT_BASE + 17; pub const WLAN_REASON_CODE_MSMSEC_KEY_FORMAT: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_CONNECT_BASE + 18; pub const WLAN_REASON_CODE_MSMSEC_DOWNGRADE_DETECTED: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_CONNECT_BASE + 19; pub const WLAN_REASON_CODE_MSMSEC_PSK_MISMATCH_SUSPECTED: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_CONNECT_BASE + 20; pub const WLAN_REASON_CODE_MSMSEC_FORCED_FAILURE: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_CONNECT_BASE + 21; pub const WLAN_REASON_CODE_MSMSEC_M3_TOO_MANY_RSNIE: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_CONNECT_BASE + 22; pub const WLAN_REASON_CODE_MSMSEC_M2_MISSING_KEY_DATA: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_CONNECT_BASE + 23; pub const WLAN_REASON_CODE_MSMSEC_M2_MISSING_IE: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_CONNECT_BASE + 24; pub const WLAN_REASON_CODE_MSMSEC_AUTH_WCN_COMPLETED: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_CONNECT_BASE + 25; pub const WLAN_REASON_CODE_MSMSEC_M3_MISSING_MGMT_GRP_KEY: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_CONNECT_BASE + 26; pub const WLAN_REASON_CODE_MSMSEC_G1_MISSING_MGMT_GRP_KEY: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_CONNECT_BASE + 27; pub const WLAN_REASON_CODE_MSMSEC_MAX: WLAN_REASON_CODE = WLAN_REASON_CODE_MSMSEC_END; pub type WLAN_SIGNAL_QUALITY = ULONG; pub type PWLAN_SIGNAL_QUALITY = *mut ULONG; pub const WLAN_AVAILABLE_NETWORK_CONNECTED: DWORD = 0x00000001; pub const WLAN_AVAILABLE_NETWORK_HAS_PROFILE: DWORD = 0x00000002; pub const WLAN_AVAILABLE_NETWORK_CONSOLE_USER_PROFILE: DWORD = 0x00000004; pub const WLAN_AVAILABLE_NETWORK_INTERWORKING_SUPPORTED: DWORD = 0x00000008; pub const WLAN_AVAILABLE_NETWORK_HOTSPOT2_ENABLED: DWORD = 0x00000010; pub const WLAN_AVAILABLE_NETWORK_ANQP_SUPPORTED: DWORD = 0x00000020; pub const WLAN_AVAILABLE_NETWORK_HOTSPOT2_DOMAIN: DWORD = 0x00000040; pub const WLAN_AVAILABLE_NETWORK_HOTSPOT2_ROAMING: DWORD = 0x00000080; pub const WLAN_AVAILABLE_NETWORK_AUTO_CONNECT_FAILED: DWORD = 0x00000100; pub const WLAN_AVAILABLE_NETWORK_INCLUDE_ALL_ADHOC_PROFILES: DWORD = 0x00000001; pub const WLAN_AVAILABLE_NETWORK_INCLUDE_ALL_MANUAL_HIDDEN_PROFILES: DWORD = 0x00000002; STRUCT!{struct WLAN_RATE_SET { uRateSetLength: ULONG, usRateSet: [USHORT; DOT11_RATE_SET_MAX_LENGTH], }} pub type PWLAN_RATE_SET = *mut WLAN_RATE_SET; pub const WLAN_MAX_PHY_TYPE_NUMBER: usize = 8; STRUCT!{struct WLAN_AVAILABLE_NETWORK { strProfileName: [WCHAR; WLAN_MAX_NAME_LENGTH], dot11Ssid: DOT11_SSID, dot11BssType: DOT11_BSS_TYPE, uNumberOfBssids: ULONG, bNetworkConnectable: BOOL, wlanNotConnectableReason: WLAN_REASON_CODE, uNumberOfPhyTypes: ULONG, dot11PhyTypes: [DOT11_PHY_TYPE; WLAN_MAX_PHY_TYPE_NUMBER], bMorePhyTypes: BOOL, wlanSignalQuality: WLAN_SIGNAL_QUALITY, bSecurityEnabled: BOOL, dot11DefaultAuthAlgorithm: DOT11_AUTH_ALGORITHM, dot11DefaultCipherAlgorithm: DOT11_CIPHER_ALGORITHM, dwFlags: DWORD, dwReserved: DWORD, }} pub type PWLAN_AVAILABLE_NETWORK = *mut WLAN_AVAILABLE_NETWORK; STRUCT!{struct WLAN_AVAILABLE_NETWORK_V2 { strProfileName: [WCHAR; WLAN_MAX_NAME_LENGTH], dot11Ssid: DOT11_SSID, dot11BssType: DOT11_BSS_TYPE, uNumberOfBssids: ULONG, bNetworkConnectable: BOOL, wlanNotConnectableReason: WLAN_REASON_CODE, uNumberOfPhyTypes: ULONG, dot11PhyTypes: [DOT11_PHY_TYPE; WLAN_MAX_PHY_TYPE_NUMBER], bMorePhyTypes: BOOL, wlanSignalQuality: WLAN_SIGNAL_QUALITY, bSecurityEnabled: BOOL, dot11DefaultAuthAlgorithm: DOT11_AUTH_ALGORITHM, dot11DefaultCipherAlgorithm: DOT11_CIPHER_ALGORITHM, dwFlags: DWORD, AccessNetworkOptions: DOT11_ACCESSNETWORKOPTIONS, dot11HESSID: DOT11_HESSID, VenueInfo: DOT11_VENUEINFO, dwReserved: DWORD, }} pub type PWLAN_AVAILABLE_NETWORK_V2 = *mut WLAN_AVAILABLE_NETWORK_V2; STRUCT!{struct WLAN_BSS_ENTRY { dot11Ssid: DOT11_SSID, uPhyId: ULONG, dot11Bssid: DOT11_MAC_ADDRESS, dot11BssType: DOT11_BSS_TYPE, dot11BssPhyType: DOT11_PHY_TYPE, lRssi: LONG, uLinkQuality: ULONG, bInRegDomain: BOOLEAN, usBeaconPeriod: USHORT, ullTimestamp: ULONGLONG, ullHostTimestamp: ULONGLONG, usCapabilityInformation: USHORT, ulChCenterFrequency: ULONG, wlanRateSet: WLAN_RATE_SET, ulIeOffset: ULONG, ulIeSize: ULONG, }} pub type PWLAN_BSS_ENTRY = *mut WLAN_BSS_ENTRY; STRUCT!{struct WLAN_BSS_LIST { dwTotalSize: DWORD, dwNumberOfItems: DWORD, wlanBssEntries: [WLAN_BSS_ENTRY; 1], }} pub type PWLAN_BSS_LIST = *mut WLAN_BSS_LIST; ENUM!{enum WLAN_INTERFACE_STATE { wlan_interface_state_not_ready = 0, wlan_interface_state_connected = 1, wlan_interface_state_ad_hoc_network_formed = 2, wlan_interface_state_disconnecting = 3, wlan_interface_state_disconnected = 4, wlan_interface_state_associating = 5, wlan_interface_state_discovering = 6, wlan_interface_state_authenticating = 7, }} pub type PWLAN_INTERFACE_STATE = *mut WLAN_INTERFACE_STATE; ENUM!{enum WLAN_ADHOC_NETWORK_STATE { wlan_adhoc_network_state_formed = 0, wlan_adhoc_network_state_connected = 1, }} pub type PWLAN_ADHOC_NETWORK_STATE = *mut WLAN_ADHOC_NETWORK_STATE; STRUCT!{struct WLAN_INTERFACE_INFO { InterfaceGuid: GUID, strInterfaceDescription: [WCHAR; WLAN_MAX_NAME_LENGTH], isState: WLAN_INTERFACE_STATE, }} pub type PWLAN_INTERFACE_INFO = *mut WLAN_INTERFACE_INFO; STRUCT!{struct WLAN_ASSOCIATION_ATTRIBUTES { dot11Ssid: DOT11_SSID, dot11BssType: DOT11_BSS_TYPE, dot11Bssid: DOT11_MAC_ADDRESS, dot11PhyType: DOT11_PHY_TYPE, uDot11PhyIndex: ULONG, wlanSignalQuality: WLAN_SIGNAL_QUALITY, ulRxRate: ULONG, ulTxRate: ULONG, }} pub type PWLAN_ASSOCIATION_ATTRIBUTES = *mut WLAN_ASSOCIATION_ATTRIBUTES; STRUCT!{struct WLAN_SECURITY_ATTRIBUTES { bSecurityEnabled: BOOL, bOneXEnabled: BOOL, dot11AuthAlgorithm: DOT11_AUTH_ALGORITHM, dot11CipherAlgorithm: DOT11_CIPHER_ALGORITHM, }} pub type PWLAN_SECURITY_ATTRIBUTES = *mut WLAN_SECURITY_ATTRIBUTES; STRUCT!{struct WLAN_CONNECTION_ATTRIBUTES { isState: WLAN_INTERFACE_STATE, wlanConnectionMode: WLAN_CONNECTION_MODE, strProfileName: [WCHAR; WLAN_MAX_NAME_LENGTH], wlanAssociationAttributes: WLAN_ASSOCIATION_ATTRIBUTES, wlanSecurityAttributes: WLAN_SECURITY_ATTRIBUTES, }} pub type PWLAN_CONNECTION_ATTRIBUTES = *mut WLAN_CONNECTION_ATTRIBUTES; ENUM!{enum DOT11_RADIO_STATE { dot11_radio_state_unknown = 0, dot11_radio_state_on = 1, dot11_radio_state_off = 2, }} pub type PDOT11_RADIO_STATE = *mut DOT11_RADIO_STATE; pub const WLAN_MAX_PHY_INDEX: usize = 64; STRUCT!{struct WLAN_PHY_RADIO_STATE { dwPhyIndex: DWORD, dot11SoftwareRadioState: DOT11_RADIO_STATE, dot11HardwareRadioState: DOT11_RADIO_STATE, }} pub type PWLAN_PHY_RADIO_STATE = *mut WLAN_PHY_RADIO_STATE; STRUCT!{struct WLAN_RADIO_STATE { dwNumberOfPhys: DWORD, PhyRadioState: [WLAN_PHY_RADIO_STATE; WLAN_MAX_PHY_INDEX], }} pub type PWLAN_RADIO_STATE = *mut WLAN_RADIO_STATE; ENUM!{enum WLAN_OPERATIONAL_STATE { wlan_operational_state_unknown = 0, wlan_operational_state_off = 1, wlan_operational_state_on = 2, wlan_operational_state_going_off = 3, wlan_operational_state_going_on = 4, }} pub type PWLAN_OPERATIONAL_STATE = *mut WLAN_OPERATIONAL_STATE; ENUM!{enum WLAN_INTERFACE_TYPE { wlan_interface_type_emulated_802_11 = 0, wlan_interface_type_native_802_11 = 1, wlan_interface_type_invalid = 2, }} pub type PWLAN_INTERFACE_TYPE = *mut WLAN_INTERFACE_TYPE; STRUCT!{struct WLAN_INTERFACE_CAPABILITY { interfaceType: WLAN_INTERFACE_TYPE, bDot11DSupported: BOOL, dwMaxDesiredSsidListSize: DWORD, dwMaxDesiredBssidListSize: DWORD, dwNumberOfSupportedPhys: DWORD, dot11PhyTypes: [DOT11_PHY_TYPE; WLAN_MAX_PHY_INDEX], }} pub type PWLAN_INTERFACE_CAPABILITY = *mut WLAN_INTERFACE_CAPABILITY; STRUCT!{struct WLAN_AUTH_CIPHER_PAIR_LIST { dwNumberOfItems: DWORD, pAuthCipherPairList: [DOT11_AUTH_CIPHER_PAIR; 1], }} pub type PWLAN_AUTH_CIPHER_PAIR_LIST = *mut WLAN_AUTH_CIPHER_PAIR_LIST; STRUCT!{struct WLAN_COUNTRY_OR_REGION_STRING_LIST { dwNumberOfItems: DWORD, pCountryOrRegionStringList: [DOT11_COUNTRY_OR_REGION_STRING; 1], }} pub type PWLAN_COUNTRY_OR_REGION_STRING_LIST = *mut WLAN_COUNTRY_OR_REGION_STRING_LIST; STRUCT!{struct WLAN_PROFILE_INFO_LIST { dwNumberOfItems: DWORD, dwIndex: DWORD, ProfileInfo: [WLAN_PROFILE_INFO; 1], }} pub type PWLAN_PROFILE_INFO_LIST = *mut WLAN_PROFILE_INFO_LIST; STRUCT!{struct WLAN_AVAILABLE_NETWORK_LIST { dwNumberOfItems: DWORD, dwIndex: DWORD, Network: [WLAN_AVAILABLE_NETWORK; 1], }} pub type PWLAN_AVAILABLE_NETWORK_LIST = *mut WLAN_AVAILABLE_NETWORK_LIST; STRUCT!{struct WLAN_AVAILABLE_NETWORK_LIST_V2 { dwNumberOfItems: DWORD, dwIndex: DWORD, Network: [WLAN_AVAILABLE_NETWORK_V2; 1], }} pub type PWLAN_AVAILABLE_NETWORK_LIST_V2 = *mut WLAN_AVAILABLE_NETWORK_LIST_V2; STRUCT!{struct WLAN_INTERFACE_INFO_LIST { dwNumberOfItems: DWORD, dwIndex: DWORD, InterfaceInfo: [WLAN_INTERFACE_INFO; 1], }} pub type PWLAN_INTERFACE_INFO_LIST = *mut WLAN_INTERFACE_INFO_LIST; STRUCT!{struct DOT11_NETWORK_LIST { dwNumberOfItems: DWORD, dwIndex: DWORD, Network: [DOT11_NETWORK; 1], }} pub type PDOT11_NETWORK_LIST = *mut DOT11_NETWORK_LIST; ENUM!{enum WLAN_POWER_SETTING { wlan_power_setting_no_saving = 0, wlan_power_setting_low_saving = 1, wlan_power_setting_medium_saving = 2, wlan_power_setting_maximum_saving = 3, wlan_power_setting_invalid = 4, }} pub type PWLAN_POWER_SETTING = *mut WLAN_POWER_SETTING; pub const WLAN_CONNECTION_HIDDEN_NETWORK: DWORD = 0x00000001; pub const WLAN_CONNECTION_ADHOC_JOIN_ONLY: DWORD = 0x00000002; pub const WLAN_CONNECTION_IGNORE_PRIVACY_BIT: DWORD = 0x00000004; pub const WLAN_CONNECTION_EAPOL_PASSTHROUGH: DWORD = 0x00000008; pub const WLAN_CONNECTION_PERSIST_DISCOVERY_PROFILE: DWORD = 0x00000010; pub const WLAN_CONNECTION_PERSIST_DISCOVERY_PROFILE_CONNECTION_MODE_AUTO: DWORD = 0x00000020; pub const WLAN_CONNECTION_PERSIST_DISCOVERY_PROFILE_OVERWRITE_EXISTING: DWORD = 0x00000040; STRUCT!{struct WLAN_CONNECTION_PARAMETERS { wlanConnectionMode: WLAN_CONNECTION_MODE, strProfile: LPCWSTR, pDot11Ssid: PDOT11_SSID, pDesiredBssidList: PDOT11_BSSID_LIST, dot11BssType: DOT11_BSS_TYPE, dwFlags: DWORD, }} pub type PWLAN_CONNECTION_PARAMETERS = *mut WLAN_CONNECTION_PARAMETERS; STRUCT!{struct WLAN_CONNECTION_PARAMETERS_V2 { wlanConnectionMode: WLAN_CONNECTION_MODE, strProfile: LPCWSTR, pDot11Ssid: PDOT11_SSID, pDot11Hessid: PDOT11_HESSID, pDesiredBssidList: PDOT11_BSSID_LIST, dot11BssType: DOT11_BSS_TYPE, dwFlags: DWORD, pDot11AccessNetworkOptions: PDOT11_ACCESSNETWORKOPTIONS, }} pub type PWLAN_CONNECTION_PARAMETERS_V2 = *mut WLAN_CONNECTION_PARAMETERS_V2; STRUCT!{struct WLAN_MSM_NOTIFICATION_DATA { wlanConnectionMode: WLAN_CONNECTION_MODE, strProfileName: [WCHAR; WLAN_MAX_NAME_LENGTH], dot11Ssid: DOT11_SSID, dot11BssType: DOT11_BSS_TYPE, dot11MacAddr: DOT11_MAC_ADDRESS, bSecurityEnabled: BOOL, bFirstPeer: BOOL, bLastPeer: BOOL, wlanReasonCode: WLAN_REASON_CODE, }} pub type PWLAN_MSM_NOTIFICATION_DATA = *mut WLAN_MSM_NOTIFICATION_DATA; pub const WLAN_CONNECTION_NOTIFICATION_ADHOC_NETWORK_FORMED: DWORD = 0x00000001; pub const WLAN_CONNECTION_NOTIFICATION_CONSOLE_USER_PROFILE: DWORD = 0x00000004; STRUCT!{struct WLAN_CONNECTION_NOTIFICATION_DATA { wlanConnectionMode: WLAN_CONNECTION_MODE, strProfileName: [WCHAR; WLAN_MAX_NAME_LENGTH], dot11Ssid: DOT11_SSID, dot11BssType: DOT11_BSS_TYPE, bSecurityEnabled: BOOL, wlanReasonCode: WLAN_REASON_CODE, dwFlags: DWORD, strProfileXml: [WCHAR; 1], }} pub type PWLAN_CONNECTION_NOTIFICATION_DATA = *mut WLAN_CONNECTION_NOTIFICATION_DATA; pub const WLAN_NOTIFICATION_SOURCE_NONE: DWORD = L2_NOTIFICATION_SOURCE_NONE; pub const WLAN_NOTIFICATION_SOURCE_ALL: DWORD = L2_NOTIFICATION_SOURCE_ALL; pub const WLAN_NOTIFICATION_SOURCE_ACM: DWORD = L2_NOTIFICATION_SOURCE_WLAN_ACM; pub const WLAN_NOTIFICATION_SOURCE_MSM: DWORD = L2_NOTIFICATION_SOURCE_WLAN_MSM; pub const WLAN_NOTIFICATION_SOURCE_SECURITY: DWORD = L2_NOTIFICATION_SOURCE_WLAN_SECURITY; pub const WLAN_NOTIFICATION_SOURCE_IHV: DWORD = L2_NOTIFICATION_SOURCE_WLAN_IHV; pub const WLAN_NOTIFICATION_SOURCE_HNWK: DWORD = L2_NOTIFICATION_SOURCE_WLAN_HNWK; pub const WLAN_NOTIFICATION_SOURCE_ONEX: DWORD = L2_NOTIFICATION_SOURCE_ONEX; ENUM!{enum WLAN_NOTIFICATION_ACM { wlan_notification_acm_start = L2_NOTIFICATION_CODE_PUBLIC_BEGIN, wlan_notification_acm_autoconf_enabled = 1, wlan_notification_acm_autoconf_disabled = 2, wlan_notification_acm_background_scan_enabled = 3, wlan_notification_acm_background_scan_disabled = 4, wlan_notification_acm_bss_type_change = 5, wlan_notification_acm_power_setting_change = 6, wlan_notification_acm_scan_complete = 7, wlan_notification_acm_scan_fail = 8, wlan_notification_acm_connection_start = 9, wlan_notification_acm_connection_complete = 10, wlan_notification_acm_connection_attempt_fail = 11, wlan_notification_acm_filter_list_change = 12, wlan_notification_acm_interface_arrival = 13, wlan_notification_acm_interface_removal = 14, wlan_notification_acm_profile_change = 15, wlan_notification_acm_profile_name_change = 16, wlan_notification_acm_profiles_exhausted = 17, wlan_notification_acm_network_not_available = 18, wlan_notification_acm_network_available = 19, wlan_notification_acm_disconnecting = 20, wlan_notification_acm_disconnected = 21, wlan_notification_acm_adhoc_network_state_change = 22, wlan_notification_acm_profile_unblocked = 23, wlan_notification_acm_screen_power_change = 24, wlan_notification_acm_profile_blocked = 25, wlan_notification_acm_scan_list_refresh = 26, wlan_notification_acm_operational_state_change = 27, wlan_notification_acm_end = 28, }} pub type PWLAN_NOTIFICATION_ACM = *mut WLAN_NOTIFICATION_ACM; ENUM!{enum WLAN_NOTIFICATION_MSM { wlan_notification_msm_start = L2_NOTIFICATION_CODE_PUBLIC_BEGIN, wlan_notification_msm_associating = 1, wlan_notification_msm_associated = 2, wlan_notification_msm_authenticating = 3, wlan_notification_msm_connected = 4, wlan_notification_msm_roaming_start = 5, wlan_notification_msm_roaming_end = 6, wlan_notification_msm_radio_state_change = 7, wlan_notification_msm_signal_quality_change = 8, wlan_notification_msm_disassociating = 9, wlan_notification_msm_disconnected = 10, wlan_notification_msm_peer_join = 11, wlan_notification_msm_peer_leave = 12, wlan_notification_msm_adapter_removal = 13, wlan_notification_msm_adapter_operation_mode_change = 14, wlan_notification_msm_link_degraded = 15, wlan_notification_msm_link_improved = 16, wlan_notification_msm_end = 17, }} pub type PWLAN_NOTIFICATION_MSM = *mut WLAN_NOTIFICATION_MSM; ENUM!{enum WLAN_NOTIFICATION_SECURITY { wlan_notification_security_start = L2_NOTIFICATION_CODE_PUBLIC_BEGIN, wlan_notification_security_end = 1, }} pub type PWLAN_NOTIFICATION_SECURITY = *mut WLAN_NOTIFICATION_SECURITY; pub type WLAN_NOTIFICATION_DATA = L2_NOTIFICATION_DATA; pub type PWLAN_NOTIFICATION_DATA = *mut L2_NOTIFICATION_DATA; FN!{stdcall WLAN_NOTIFICATION_CALLBACK( PWLAN_NOTIFICATION_DATA, PVOID, ) -> ()} ENUM!{enum WLAN_OPCODE_VALUE_TYPE { wlan_opcode_value_type_query_only = 0, wlan_opcode_value_type_set_by_group_policy = 1, wlan_opcode_value_type_set_by_user = 2, wlan_opcode_value_type_invalid = 3, }} pub type PWLAN_OPCODE_VALUE_TYPE = *mut WLAN_OPCODE_VALUE_TYPE; ENUM!{enum WLAN_INTF_OPCODE { wlan_intf_opcode_autoconf_start = 0x000000000, wlan_intf_opcode_autoconf_enabled = 1, wlan_intf_opcode_background_scan_enabled = 2, wlan_intf_opcode_media_streaming_mode = 3, wlan_intf_opcode_radio_state = 4, wlan_intf_opcode_bss_type = 5, wlan_intf_opcode_interface_state = 6, wlan_intf_opcode_current_connection = 7, wlan_intf_opcode_channel_number = 8, wlan_intf_opcode_supported_infrastructure_auth_cipher_pairs = 9, wlan_intf_opcode_supported_adhoc_auth_cipher_pairs = 10, wlan_intf_opcode_supported_country_or_region_string_list = 11, wlan_intf_opcode_current_operation_mode = 12, wlan_intf_opcode_supported_safe_mode = 13, wlan_intf_opcode_certified_safe_mode = 14, wlan_intf_opcode_hosted_network_capable = 15, wlan_intf_opcode_management_frame_protection_capable = 16, wlan_intf_opcode_autoconf_end = 0x0fffffff, wlan_intf_opcode_msm_start = 0x10000100, wlan_intf_opcode_statistics = 268435713, wlan_intf_opcode_rssi = 268435714, wlan_intf_opcode_msm_end = 0x1fffffff, wlan_intf_opcode_security_start = 0x20010000, wlan_intf_opcode_security_end = 0x2fffffff, wlan_intf_opcode_ihv_start = 0x30000000, wlan_intf_opcode_ihv_end = 0x3fffffff, }} pub type PWLAN_INTF_OPCODE = *mut WLAN_INTF_OPCODE; ENUM!{enum WLAN_AUTOCONF_OPCODE { wlan_autoconf_opcode_start = 0, wlan_autoconf_opcode_show_denied_networks = 1, wlan_autoconf_opcode_power_setting = 2, wlan_autoconf_opcode_only_use_gp_profiles_for_allowed_networks = 3, wlan_autoconf_opcode_allow_explicit_creds = 4, wlan_autoconf_opcode_block_period = 5, wlan_autoconf_opcode_allow_virtual_station_extensibility = 6, wlan_autoconf_opcode_end = 7, }} pub type PWLAN_AUTOCONF_OPCODE = *mut WLAN_AUTOCONF_OPCODE; ENUM!{enum WLAN_IHV_CONTROL_TYPE { wlan_ihv_control_type_service = 0, wlan_ihv_control_type_driver = 1, }} pub type PWLAN_IHV_CONTROL_TYPE = *mut WLAN_IHV_CONTROL_TYPE; ENUM!{enum WLAN_FILTER_LIST_TYPE { wlan_filter_list_type_gp_permit = 0, wlan_filter_list_type_gp_deny = 1, wlan_filter_list_type_user_permit = 2, wlan_filter_list_type_user_deny = 3, }} pub type PWLAN_FILTER_LIST_TYPE = *mut WLAN_FILTER_LIST_TYPE; STRUCT!{struct WLAN_PHY_FRAME_STATISTICS { ullTransmittedFrameCount: ULONGLONG, ullMulticastTransmittedFrameCount: ULONGLONG, ullFailedCount: ULONGLONG, ullRetryCount: ULONGLONG, ullMultipleRetryCount: ULONGLONG, ullMaxTXLifetimeExceededCount: ULONGLONG, ullTransmittedFragmentCount: ULONGLONG, ullRTSSuccessCount: ULONGLONG, ullRTSFailureCount: ULONGLONG, ullACKFailureCount: ULONGLONG, ullReceivedFrameCount: ULONGLONG, ullMulticastReceivedFrameCount: ULONGLONG, ullPromiscuousReceivedFrameCount: ULONGLONG, ullMaxRXLifetimeExceededCount: ULONGLONG, ullFrameDuplicateCount: ULONGLONG, ullReceivedFragmentCount: ULONGLONG, ullPromiscuousReceivedFragmentCount: ULONGLONG, ullFCSErrorCount: ULONGLONG, }} pub type PWLAN_PHY_FRAME_STATISTICS = *mut WLAN_PHY_FRAME_STATISTICS; STRUCT!{struct WLAN_MAC_FRAME_STATISTICS { ullTransmittedFrameCount: ULONGLONG, ullReceivedFrameCount: ULONGLONG, ullWEPExcludedCount: ULONGLONG, ullTKIPLocalMICFailures: ULONGLONG, ullTKIPReplays: ULONGLONG, ullTKIPICVErrorCount: ULONGLONG, ullCCMPReplays: ULONGLONG, ullCCMPDecryptErrors: ULONGLONG, ullWEPUndecryptableCount: ULONGLONG, ullWEPICVErrorCount: ULONGLONG, ullDecryptSuccessCount: ULONGLONG, ullDecryptFailureCount: ULONGLONG, }} pub type PWLAN_MAC_FRAME_STATISTICS = *mut WLAN_MAC_FRAME_STATISTICS; STRUCT!{struct WLAN_STATISTICS { ullFourWayHandshakeFailures: ULONGLONG, ullTKIPCounterMeasuresInvoked: ULONGLONG, ullReserved: ULONGLONG, MacUcastCounters: WLAN_MAC_FRAME_STATISTICS, MacMcastCounters: WLAN_MAC_FRAME_STATISTICS, dwNumberOfPhys: DWORD, PhyCounters: [WLAN_PHY_FRAME_STATISTICS; 1], }} pub type PWLAN_STATISTICS = *mut WLAN_STATISTICS; pub const WLAN_READ_ACCESS: DWORD = STANDARD_RIGHTS_READ | FILE_READ_DATA; pub const WLAN_EXECUTE_ACCESS: DWORD = WLAN_READ_ACCESS | STANDARD_RIGHTS_EXECUTE | FILE_EXECUTE; pub const WLAN_WRITE_ACCESS: DWORD = WLAN_READ_ACCESS | WLAN_EXECUTE_ACCESS | STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | DELETE | WRITE_DAC; ENUM!{enum WLAN_SECURABLE_OBJECT { wlan_secure_permit_list = 0, wlan_secure_deny_list = 1, wlan_secure_ac_enabled = 2, wlan_secure_bc_scan_enabled = 3, wlan_secure_bss_type = 4, wlan_secure_show_denied = 5, wlan_secure_interface_properties = 6, wlan_secure_ihv_control = 7, wlan_secure_all_user_profiles_order = 8, wlan_secure_add_new_all_user_profiles = 9, wlan_secure_add_new_per_user_profiles = 10, wlan_secure_media_streaming_mode_enabled = 11, wlan_secure_current_operation_mode = 12, wlan_secure_get_plaintext_key = 13, wlan_secure_hosted_network_elevated_access = 14, wlan_secure_virtual_station_extensibility = 15, wlan_secure_wfd_elevated_access = 16, WLAN_SECURABLE_OBJECT_COUNT = 17, }} pub type PWLAN_SECURABLE_OBJECT = *mut WLAN_SECURABLE_OBJECT; STRUCT!{struct WLAN_DEVICE_SERVICE_GUID_LIST { dwNumberOfItems: DWORD, dwIndex: DWORD, DeviceService: [GUID; 1], }} pub type PWLAN_DEVICE_SERVICE_GUID_LIST = *mut WLAN_DEVICE_SERVICE_GUID_LIST; pub const WFD_API_VERSION_1_0: DWORD = 0x00000001; pub const WFD_API_VERSION: DWORD = WFD_API_VERSION_1_0; ENUM!{enum WFD_ROLE_TYPE { WFD_ROLE_TYPE_NONE = 0x00, WFD_ROLE_TYPE_DEVICE = 0x01, WFD_ROLE_TYPE_GROUP_OWNER = 0x02, WFD_ROLE_TYPE_CLIENT = 0x04, WFD_ROLE_TYPE_MAX = 0x05, }} pub type PWFD_ROLE_TYPE = *mut WFD_ROLE_TYPE; STRUCT!{struct WFD_GROUP_ID { DeviceAddress: DOT11_MAC_ADDRESS, GroupSSID: DOT11_SSID, }} pub type PWFD_GROUP_ID = *mut WFD_GROUP_ID; extern "system" { pub fn WlanOpenHandle( dwClientVersion: DWORD, pReserved: PVOID, pdwNegotiatedVersion: PDWORD, phClientHandle: PHANDLE, ) -> DWORD; pub fn WlanCloseHandle( hClientHandle: HANDLE, pReserved: PVOID, ) -> DWORD; pub fn WlanEnumInterfaces( hClientHandle: HANDLE, pReserved: PVOID, ppInterfaceList: *mut PWLAN_INTERFACE_INFO_LIST, ) -> DWORD; pub fn WlanSetAutoConfigParameter( hClientHandle: HANDLE, OpCode: WLAN_AUTOCONF_OPCODE, dwDataSize: DWORD, pData: PVOID, pReserved: PVOID, ) -> DWORD; pub fn WlanQueryAutoConfigParameter( hClientHandle: HANDLE, OpCode: WLAN_AUTOCONF_OPCODE, pReserved: PVOID, pdwDataSize: PDWORD, ppData: *mut PVOID, pWlanOpcodeValueType: PWLAN_OPCODE_VALUE_TYPE, ) -> DWORD; pub fn WlanGetInterfaceCapability( hClientHandle: HANDLE, pInterfaceGuid: *const GUID, pReserved: PVOID, ppCapability: *mut PWLAN_INTERFACE_CAPABILITY, ) -> DWORD; pub fn WlanSetInterface( hClientHandle: HANDLE, pInterfaceGuid: *const GUID, OpCode: WLAN_INTF_OPCODE, dwDataSize: DWORD, pData: PVOID, pReserved: PVOID, ) -> DWORD; pub fn WlanQueryInterface( hClientHandle: HANDLE, pInterfaceGuid: *const GUID, OpCode: WLAN_INTF_OPCODE, pReserved: PVOID, pdwDataSize: PDWORD, ppData: *mut PVOID, pWlanOpcodeValueType: PWLAN_OPCODE_VALUE_TYPE, ) -> DWORD; pub fn WlanIhvControl( hClientHandle: HANDLE, pInterfaceGuid: *const GUID, Type: WLAN_IHV_CONTROL_TYPE, dwInBufferSize: DWORD, pInBuffer: PVOID, dwOutBufferSize: DWORD, pOutBuffer: PVOID, pdwBytesReturned: PDWORD, ) -> DWORD; pub fn WlanScan( hClientHandle: HANDLE, pInterfaceGuid: *const GUID, pDot11Ssid: PDOT11_SSID, pIeData: PWLAN_RAW_DATA, pReserved: PVOID, ) -> DWORD; pub fn WlanGetAvailableNetworkList( hClientHandle: HANDLE, pInterfaceGuid: *const GUID, dwFlags: DWORD, pReserved: PVOID, ppAvailableNetworkList: *mut PWLAN_AVAILABLE_NETWORK_LIST, ) -> DWORD; pub fn WlanGetAvailableNetworkList2( hClientHandle: HANDLE, pInterfaceGuid: *const GUID, dwFlags: DWORD, pReserved: PVOID, ppAvailableNetworkList: *mut PWLAN_AVAILABLE_NETWORK_LIST_V2, ) -> DWORD; pub fn WlanGetNetworkBssList( hClientHandle: HANDLE, pInterfaceGuid: *const GUID, pDot11Ssid: PDOT11_SSID, dot11BssType: DOT11_BSS_TYPE, bSecurityEnabled: BOOL, pReserved: PVOID, ppWlanBssList: *mut PWLAN_BSS_LIST, ) -> DWORD; pub fn WlanConnect( hClientHandle: HANDLE, pInterfaceGuid: *const GUID, pConnectionParameters: PWLAN_CONNECTION_PARAMETERS, pReserved: PVOID, ) -> DWORD; pub fn WlanConnect2( hClientHandle: HANDLE, pInterfaceGuid: *const GUID, pConnectionParameters: PWLAN_CONNECTION_PARAMETERS_V2, pReserved: PVOID, ) -> DWORD; pub fn WlanDisconnect( hClientHandle: HANDLE, pInterfaceGuid: *const GUID, pReserved: PVOID, ) -> DWORD; pub fn WlanRegisterNotification( hClientHandle: HANDLE, dwNotifSource: DWORD, bIgnoreDuplicate: BOOL, funcCallback: WLAN_NOTIFICATION_CALLBACK, pCallbackContext: PVOID, pReserved: PVOID, pdwPrevNotifSource: PDWORD, ) -> DWORD; pub fn WlanGetProfile( hClientHandle: HANDLE, pInterfaceGuid: *const GUID, strProfileName: LPCWSTR, pReserved: PVOID, pstrProfileXml: *mut LPWSTR, pdwFlags: *mut DWORD, pdwGrantedAccess: *mut DWORD, ) -> DWORD; pub fn WlanSetProfileEapUserData( hClientHandle: HANDLE, pInterfaceGuid: *const GUID, strProfileName: LPCWSTR, eapType: EAP_METHOD_TYPE, dwFlags: DWORD, dwEapUserDataSize: DWORD, pbEapUserData: LPBYTE, pReserved: PVOID, ) -> DWORD; pub fn WlanSetProfileEapXmlUserData( hClientHandle: HANDLE, pInterfaceGuid: *const GUID, strProfileName: LPCWSTR, dwFlags: DWORD, strEapXmlUserData: LPCWSTR, pReserved: PVOID, ) -> DWORD; pub fn WlanSetProfile( hClientHandle: HANDLE, pInterfaceGuid: *const GUID, dwFlags: DWORD, strProfileXml: LPCWSTR, strAllUserProfileSecurity: LPCWSTR, bOverwrite: BOOL, pReserved: PVOID, pdwReasonCode: *mut DWORD, ) -> DWORD; pub fn WlanDeleteProfile( hClientHandle: HANDLE, pInterfaceGuid: *const GUID, strProfileName: LPCWSTR, pReserved: PVOID, ) -> DWORD; pub fn WlanRenameProfile( hClientHandle: HANDLE, pInterfaceGuid: *const GUID, strOldProfileName: LPCWSTR, strNewProfileName: LPCWSTR, pReserved: PVOID, ) -> DWORD; pub fn WlanGetProfileList( hClientHandle: HANDLE, pInterfaceGuid: *const GUID, pReserved: PVOID, ppProfileList: *mut PWLAN_PROFILE_INFO_LIST, ) -> DWORD; pub fn WlanSetProfileList( hClientHandle: HANDLE, pInterfaceGuid: *const GUID, dwItems: DWORD, strProfileNames: *mut LPCWSTR, pReserved: PVOID, ) -> DWORD; pub fn WlanSetProfilePosition( hClientHandle: HANDLE, pInterfaceGuid: *const GUID, strProfileName: LPCWSTR, dwPosition: DWORD, pReserved: PVOID, ) -> DWORD; pub fn WlanSetProfileCustomUserData( hClientHandle: HANDLE, pInterfaceGuid: *const GUID, strProfileName: LPCWSTR, dwDataSize: DWORD, pData: PBYTE, pReserved: PVOID, ) -> DWORD; pub fn WlanGetProfileCustomUserData( hClientHandle: HANDLE, pInterfaceGuid: *const GUID, strProfileName: LPCWSTR, pReserved: PVOID, pdwDataSize: *mut DWORD, ppData: *mut PBYTE, ) -> DWORD; pub fn WlanSetFilterList( hClientHandle: HANDLE, wlanFilterListType: WLAN_FILTER_LIST_TYPE, pNetworkList: PDOT11_NETWORK_LIST, pReserved: PVOID, ) -> DWORD; pub fn WlanGetFilterList( hClientHandle: HANDLE, wlanFilterListType: WLAN_FILTER_LIST_TYPE, pReserved: PVOID, ppNetworkList: *mut PDOT11_NETWORK_LIST, ) -> DWORD; pub fn WlanSetPsdIEDataList( hClientHandle: HANDLE, strFormat: LPCWSTR, pPsdIEDataList: PWLAN_RAW_DATA_LIST, pReserved: PVOID, ) -> DWORD; pub fn WlanSaveTemporaryProfile( hClientHandle: HANDLE, pInterfaceGuid: *const GUID, strProfileName: LPCWSTR, strAllUserProfileSecurity: LPCWSTR, dwFlags: DWORD, bOverWrite: BOOL, pReserved: PVOID, ) -> DWORD; pub fn WlanDeviceServiceCommand( hClientHandle: HANDLE, pInterfaceGuid: *const GUID, pDeviceServiceGuid: LPGUID, dwOpCode: DWORD, dwInBufferSize: DWORD, pInBuffer: PVOID, dwOutBufferSize: DWORD, pOutBuffer: PVOID, pdwBytesReturned: PDWORD, ) -> DWORD; pub fn WlanGetSupportedDeviceServices( hClientHandle: HANDLE, pInterfaceGuid: *const GUID, ppDevSvcGuidList: *mut PWLAN_DEVICE_SERVICE_GUID_LIST, ) -> DWORD; pub fn WlanExtractPsdIEDataList( hClientHandle: HANDLE, dwIeDataSize: DWORD, pRawIeData: PBYTE, strFormat: LPCWSTR, pReserved: PVOID, ppPsdIEDataList: *mut PWLAN_RAW_DATA_LIST, ) -> DWORD; pub fn WlanReasonCodeToString( dwReasonCode: DWORD, dwBufferSize: DWORD, pStringBuffer: PWCHAR, pReserved: PVOID, ) -> DWORD; pub fn WlanAllocateMemory( dwMemorySize: DWORD, ) -> PVOID; pub fn WlanFreeMemory( pMemory: PVOID, ); pub fn WlanSetSecuritySettings( hClientHandle: HANDLE, SecurableObject: WLAN_SECURABLE_OBJECT, strModifiedSDDL: LPCWSTR, ) -> DWORD; pub fn WlanGetSecuritySettings( hClientHandle: HANDLE, SecurableObject: WLAN_SECURABLE_OBJECT, pValueType: PWLAN_OPCODE_VALUE_TYPE, pstrCurrentSDDL: *mut LPWSTR, pdwGrantedAccess: PDWORD, ) -> DWORD; } pub const WLAN_UI_API_VERSION: DWORD = 1; pub const WLAN_UI_API_INITIAL_VERSION: DWORD = 1; ENUM!{enum WL_DISPLAY_PAGES { WLConnectionPage = 0, WLSecurityPage = 1, WLAdvPage = 2, }} pub type PWL_DISPLAY_PAGES = *mut WL_DISPLAY_PAGES; extern "system" { pub fn WlanUIEditProfile( dwClientVersion: DWORD, wstrProfileName: LPCWSTR, pInterfaceGuid: *mut GUID, hWnd: HWND, wlStartPage: WL_DISPLAY_PAGES, pReserved: PVOID, pWlanReasonCode: PWLAN_REASON_CODE, ) -> DWORD; } ENUM!{enum WLAN_HOSTED_NETWORK_STATE { wlan_hosted_network_unavailable = 0, wlan_hosted_network_idle = 1, wlan_hosted_network_active = 2, }} pub type PWLAN_HOSTED_NETWORK_STATE = *mut WLAN_HOSTED_NETWORK_STATE; ENUM!{enum WLAN_HOSTED_NETWORK_REASON { wlan_hosted_network_reason_success = 0, wlan_hosted_network_reason_unspecified = 1, wlan_hosted_network_reason_bad_parameters = 2, wlan_hosted_network_reason_service_shutting_down = 3, wlan_hosted_network_reason_insufficient_resources = 4, wlan_hosted_network_reason_elevation_required = 5, wlan_hosted_network_reason_read_only = 6, wlan_hosted_network_reason_persistence_failed = 7, wlan_hosted_network_reason_crypt_error = 8, wlan_hosted_network_reason_impersonation = 9, wlan_hosted_network_reason_stop_before_start = 10, wlan_hosted_network_reason_interface_available = 11, wlan_hosted_network_reason_interface_unavailable = 12, wlan_hosted_network_reason_miniport_stopped = 13, wlan_hosted_network_reason_miniport_started = 14, wlan_hosted_network_reason_incompatible_connection_started = 15, wlan_hosted_network_reason_incompatible_connection_stopped = 16, wlan_hosted_network_reason_user_action = 17, wlan_hosted_network_reason_client_abort = 18, wlan_hosted_network_reason_ap_start_failed = 19, wlan_hosted_network_reason_peer_arrived = 20, wlan_hosted_network_reason_peer_departed = 21, wlan_hosted_network_reason_peer_timeout = 22, wlan_hosted_network_reason_gp_denied = 23, wlan_hosted_network_reason_service_unavailable = 24, wlan_hosted_network_reason_device_change = 25, wlan_hosted_network_reason_properties_change = 26, wlan_hosted_network_reason_virtual_station_blocking_use = 27, wlan_hosted_network_reason_service_available_on_virtual_station = 28, }} pub type PWLAN_HOSTED_NETWORK_REASON = *mut WLAN_HOSTED_NETWORK_REASON; ENUM!{enum WLAN_HOSTED_NETWORK_PEER_AUTH_STATE { wlan_hosted_network_peer_state_invalid = 0, wlan_hosted_network_peer_state_authenticated = 1, }} pub type PWLAN_HOSTED_NETWORK_PEER_AUTH_STATE = *mut WLAN_HOSTED_NETWORK_PEER_AUTH_STATE; extern "system" { pub fn WlanHostedNetworkStartUsing( hClientHandle: HANDLE, pFailReason: PWLAN_HOSTED_NETWORK_REASON, pvReserved: PVOID, ) -> DWORD; pub fn WlanHostedNetworkStopUsing( hClientHandle: HANDLE, pFailReason: PWLAN_HOSTED_NETWORK_REASON, pvReserved: PVOID, ) -> DWORD; pub fn WlanHostedNetworkForceStart( hClientHandle: HANDLE, pFailReason: PWLAN_HOSTED_NETWORK_REASON, pvReserved: PVOID, ) -> DWORD; pub fn WlanHostedNetworkForceStop( hClientHandle: HANDLE, pFailReason: PWLAN_HOSTED_NETWORK_REASON, pvReserved: PVOID, ) -> DWORD; } STRUCT!{struct WLAN_HOSTED_NETWORK_PEER_STATE { PeerMacAddress: DOT11_MAC_ADDRESS, PeerAuthState: WLAN_HOSTED_NETWORK_PEER_AUTH_STATE, }} pub type PWLAN_HOSTED_NETWORK_PEER_STATE = *mut WLAN_HOSTED_NETWORK_PEER_STATE; STRUCT!{struct WLAN_HOSTED_NETWORK_RADIO_STATE { dot11SoftwareRadioState: DOT11_RADIO_STATE, dot11HardwareRadioState: DOT11_RADIO_STATE, }} pub type PWLAN_HOSTED_NETWORK_RADIO_STATE = *mut WLAN_HOSTED_NETWORK_RADIO_STATE; ENUM!{enum WLAN_HOSTED_NETWORK_NOTIFICATION_CODE { wlan_hosted_network_state_change = L2_NOTIFICATION_CODE_V2_BEGIN, wlan_hosted_network_peer_state_change = 4097, wlan_hosted_network_radio_state_change = 4098, }} pub type PWLAN_HOSTED_NETWORK_NOTIFICATION_CODE = *mut WLAN_HOSTED_NETWORK_NOTIFICATION_CODE; STRUCT!{struct WLAN_HOSTED_NETWORK_STATE_CHANGE { OldState: WLAN_HOSTED_NETWORK_STATE, NewState: WLAN_HOSTED_NETWORK_STATE, StateChangeReason: WLAN_HOSTED_NETWORK_REASON, }} pub type PWLAN_HOSTED_NETWORK_STATE_CHANGE = *mut WLAN_HOSTED_NETWORK_STATE_CHANGE; STRUCT!{struct WLAN_HOSTED_NETWORK_DATA_PEER_STATE_CHANGE { OldState: WLAN_HOSTED_NETWORK_PEER_STATE, NewState: WLAN_HOSTED_NETWORK_PEER_STATE, PeerStateChangeReason: WLAN_HOSTED_NETWORK_REASON, }} pub type PWLAN_HOSTED_NETWORK_DATA_PEER_STATE_CHANGE = *mut WLAN_HOSTED_NETWORK_DATA_PEER_STATE_CHANGE; ENUM!{enum WLAN_HOSTED_NETWORK_OPCODE { wlan_hosted_network_opcode_connection_settings = 0, wlan_hosted_network_opcode_security_settings = 1, wlan_hosted_network_opcode_station_profile = 2, wlan_hosted_network_opcode_enable = 3, }} pub type PWLAN_HOSTED_NETWORK_OPCODE = *mut WLAN_HOSTED_NETWORK_OPCODE; STRUCT!{struct WLAN_HOSTED_NETWORK_CONNECTION_SETTINGS { hostedNetworkSSID: DOT11_SSID, dwMaxNumberOfPeers: DWORD, }} pub type PWLAN_HOSTED_NETWORK_CONNECTION_SETTINGS = *mut WLAN_HOSTED_NETWORK_CONNECTION_SETTINGS; STRUCT!{struct WLAN_HOSTED_NETWORK_SECURITY_SETTINGS { dot11AuthAlgo: DOT11_AUTH_ALGORITHM, dot11CipherAlgo: DOT11_CIPHER_ALGORITHM, }} pub type PWLAN_HOSTED_NETWORK_SECURITY_SETTINGS = *mut WLAN_HOSTED_NETWORK_SECURITY_SETTINGS; extern "system" { pub fn WlanHostedNetworkQueryProperty( hClientHandle: HANDLE, OpCode: WLAN_HOSTED_NETWORK_OPCODE, pdwDataSize: PDWORD, ppvData: *mut PVOID, pWlanOpcodeValueType: PWLAN_OPCODE_VALUE_TYPE, pvReserved: PVOID, ) -> DWORD; pub fn WlanHostedNetworkSetProperty( hClientHandle: HANDLE, OpCode: WLAN_HOSTED_NETWORK_OPCODE, dwDataSize: DWORD, pvData: PVOID, pFailReason: PWLAN_HOSTED_NETWORK_REASON, pvReserved: PVOID, ) -> DWORD; pub fn WlanHostedNetworkInitSettings( hClientHandle: HANDLE, pFailReason: PWLAN_HOSTED_NETWORK_REASON, pvReserved: PVOID, ) -> DWORD; pub fn WlanHostedNetworkRefreshSecuritySettings( hClientHandle: HANDLE, pFailReason: PWLAN_HOSTED_NETWORK_REASON, pvReserved: PVOID, ) -> DWORD; } STRUCT!{struct WLAN_HOSTED_NETWORK_STATUS { HostedNetworkState: WLAN_HOSTED_NETWORK_STATE, IPDeviceID: GUID, wlanHostedNetworkBSSID: DOT11_MAC_ADDRESS, dot11PhyType: DOT11_PHY_TYPE, ulChannelFrequency: ULONG, dwNumberOfPeers: DWORD, PeerList: [WLAN_HOSTED_NETWORK_PEER_STATE; 1], }} pub type PWLAN_HOSTED_NETWORK_STATUS = *mut WLAN_HOSTED_NETWORK_STATUS; extern "system" { pub fn WlanHostedNetworkQueryStatus( hClientHandle: HANDLE, ppWlanHostedNetworkStatus: *mut PWLAN_HOSTED_NETWORK_STATUS, pvReserved: PVOID, ) -> DWORD; pub fn WlanHostedNetworkSetSecondaryKey( hClientHandle: HANDLE, dwKeyLength: DWORD, pucKeyData: PUCHAR, bIsPassPhrase: BOOL, bPersistent: BOOL, pFailReason: PWLAN_HOSTED_NETWORK_REASON, pvReserved: PVOID, ) -> DWORD; pub fn WlanHostedNetworkQuerySecondaryKey( hClientHandle: HANDLE, pdwKeyLength: PDWORD, ppucKeyData: *mut PUCHAR, pbIsPassPhrase: PBOOL, pbPersistent: PBOOL, pFailReason: PWLAN_HOSTED_NETWORK_REASON, pvReserved: PVOID, ) -> DWORD; pub fn WlanRegisterVirtualStationNotification( hClientHandle: HANDLE, bRegister: BOOL, pReserved: PVOID, ) -> DWORD; } DEFINE_GUID!{GUID_DEVINTERFACE_WIFIDIRECT_DEVICE, 0x439b20af, 0x8955, 0x405b, 0x99, 0xf0, 0xa6, 0x2a, 0xf0, 0xc6, 0x8d, 0x43} DEFINE_GUID!{GUID_AEPSERVICE_WIFIDIRECT_DEVICE, 0xcc29827c, 0x9caf, 0x4928, 0x99, 0xa9, 0x18, 0xf7, 0xc2, 0x38, 0x13, 0x89} DEFINE_GUID!{GUID_DEVINTERFACE_ASP_INFRA_DEVICE, 0xff823995, 0x7a72, 0x4c80, 0x87, 0x57, 0xc6, 0x7e, 0xe1, 0x3d, 0x1a, 0x49} DEFINE_DEVPROPKEY!{DEVPKEY_WiFiDirect_DeviceAddress, 0x1506935d, 0xe3e7, 0x450f, 0x86, 0x37, 0x82, 0x23, 0x3e, 0xbe, 0x5f, 0x6e, 0x01} DEFINE_DEVPROPKEY!{DEVPKEY_WiFiDirect_InterfaceAddress, 0x1506935d, 0xe3e7, 0x450f, 0x86, 0x37, 0x82, 0x23, 0x3e, 0xbe, 0x5f, 0x6e, 0x02} DEFINE_DEVPROPKEY!{DEVPKEY_WiFiDirect_InterfaceGuid, 0x1506935d, 0xe3e7, 0x450f, 0x86, 0x37, 0x82, 0x23, 0x3e, 0xbe, 0x5f, 0x6e, 0x03} DEFINE_DEVPROPKEY!{DEVPKEY_WiFiDirect_GroupId, 0x1506935d, 0xe3e7, 0x450f, 0x86, 0x37, 0x82, 0x23, 0x3e, 0xbe, 0x5f, 0x6e, 0x04} DEFINE_DEVPROPKEY!{DEVPKEY_WiFiDirect_IsConnected, 0x1506935d, 0xe3e7, 0x450f, 0x86, 0x37, 0x82, 0x23, 0x3e, 0xbe, 0x5f, 0x6e, 0x05} DEFINE_DEVPROPKEY!{DEVPKEY_WiFiDirect_IsVisible, 0x1506935d, 0xe3e7, 0x450f, 0x86, 0x37, 0x82, 0x23, 0x3e, 0xbe, 0x5f, 0x6e, 0x06} DEFINE_DEVPROPKEY!{DEVPKEY_WiFiDirect_IsLegacyDevice, 0x1506935d, 0xe3e7, 0x450f, 0x86, 0x37, 0x82, 0x23, 0x3e, 0xbe, 0x5f, 0x6e, 0x07} DEFINE_DEVPROPKEY!{DEVPKEY_WiFiDirect_MiracastVersion, 0x1506935d, 0xe3e7, 0x450f, 0x86, 0x37, 0x82, 0x23, 0x3e, 0xbe, 0x5f, 0x6e, 0x08} DEFINE_DEVPROPKEY!{DEVPKEY_WiFiDirect_IsMiracastLCPSupported, 0x1506935d, 0xe3e7, 0x450f, 0x86, 0x37, 0x82, 0x23, 0x3e, 0xbe, 0x5f, 0x6e, 0x09} DEFINE_DEVPROPKEY!{DEVPKEY_WiFiDirect_Services, 0x1506935d, 0xe3e7, 0x450f, 0x86, 0x37, 0x82, 0x23, 0x3e, 0xbe, 0x5f, 0x6e, 0x0a} DEFINE_DEVPROPKEY!{DEVPKEY_WiFiDirect_SupportedChannelList, 0x1506935d, 0xe3e7, 0x450f, 0x86, 0x37, 0x82, 0x23, 0x3e, 0xbe, 0x5f, 0x6e, 0x0b} DEFINE_DEVPROPKEY!{DEVPKEY_WiFiDirect_InformationElements, 0x1506935d, 0xe3e7, 0x450f, 0x86, 0x37, 0x82, 0x23, 0x3e, 0xbe, 0x5f, 0x6e, 0x0c} DEFINE_DEVPROPKEY!{DEVPKEY_WiFiDirect_DeviceAddressCopy, 0x1506935d, 0xe3e7, 0x450f, 0x86, 0x37, 0x82, 0x23, 0x3e, 0xbe, 0x5f, 0x6e, 0x0d} DEFINE_DEVPROPKEY!{DEVPKEY_WiFiDirect_IsRecentlyAssociated, 0x1506935d, 0xe3e7, 0x450f, 0x86, 0x37, 0x82, 0x23, 0x3e, 0xbe, 0x5f, 0x6e, 0x0e} DEFINE_DEVPROPKEY!{DEVPKEY_WiFiDirect_Service_Aeps, 0x1506935d, 0xe3e7, 0x450f, 0x86, 0x37, 0x82, 0x23, 0x3e, 0xbe, 0x5f, 0x6e, 0x0f} DEFINE_DEVPROPKEY!{DEVPKEY_WiFiDirect_NoMiracastAutoProject, 0x1506935d, 0xe3e7, 0x450f, 0x86, 0x37, 0x82, 0x23, 0x3e, 0xbe, 0x5f, 0x6e, 0x10} DEFINE_DEVPROPKEY!{DEVPKEY_InfraCast_Supported, 0x1506935d, 0xe3e7, 0x450f, 0x86, 0x37, 0x82, 0x23, 0x3e, 0xbe, 0x5f, 0x6e, 0x11} DEFINE_DEVPROPKEY!{DEVPKEY_InfraCast_StreamSecuritySupported, 0x1506935d, 0xe3e7, 0x450f, 0x86, 0x37, 0x82, 0x23, 0x3e, 0xbe, 0x5f, 0x6e, 0x12} DEFINE_DEVPROPKEY!{DEVPKEY_InfraCast_AccessPointBssid, 0x1506935d, 0xe3e7, 0x450f, 0x86, 0x37, 0x82, 0x23, 0x3e, 0xbe, 0x5f, 0x6e, 0x13} DEFINE_DEVPROPKEY!{DEVPKEY_InfraCast_SinkHostName, 0x1506935d, 0xe3e7, 0x450f, 0x86, 0x37, 0x82, 0x23, 0x3e, 0xbe, 0x5f, 0x6e, 0x14} DEFINE_DEVPROPKEY!{DEVPKEY_InfraCast_ChallengeAep, 0x1506935d, 0xe3e7, 0x450f, 0x86, 0x37, 0x82, 0x23, 0x3e, 0xbe, 0x5f, 0x6e, 0x15} DEFINE_DEVPROPKEY!{DEVPKEY_WiFiDirect_IsDMGCapable, 0x1506935d, 0xe3e7, 0x450f, 0x86, 0x37, 0x82, 0x23, 0x3e, 0xbe, 0x5f, 0x6e, 0x16} DEFINE_DEVPROPKEY!{DEVPKEY_InfraCast_DevnodeAep, 0x1506935d, 0xe3e7, 0x450f, 0x86, 0x37, 0x82, 0x23, 0x3e, 0xbe, 0x5f, 0x6e, 0x17} DEFINE_DEVPROPKEY!{DEVPKEY_WiFiDirect_FoundWsbService, 0x1506935d, 0xe3e7, 0x450f, 0x86, 0x37, 0x82, 0x23, 0x3e, 0xbe, 0x5f, 0x6e, 0x18} DEFINE_DEVPROPKEY!{DEVPKEY_InfraCast_HostName_ResolutionMode, 0x1506935d, 0xe3e7, 0x450f, 0x86, 0x37, 0x82, 0x23, 0x3e, 0xbe, 0x5f, 0x6e, 0x19} DEFINE_DEVPROPKEY!{DEVPKEY_InfraCast_SinkIpAddress, 0x1506935d, 0xe3e7, 0x450f, 0x86, 0x37, 0x82, 0x23, 0x3e, 0xbe, 0x5f, 0x6e, 0x1a} DEFINE_DEVPROPKEY!{DEVPKEY_WiFiDirect_TransientAssociation, 0x1506935d, 0xe3e7, 0x450f, 0x86, 0x37, 0x82, 0x23, 0x3e, 0xbe, 0x5f, 0x6e, 0x1b} DEFINE_DEVPROPKEY!{DEVPKEY_WiFiDirectServices_ServiceAddress, 0x31b37743, 0x7c5e, 0x4005, 0x93, 0xe6, 0xe9, 0x53, 0xf9, 0x2b, 0x82, 0xe9, 0x02} DEFINE_DEVPROPKEY!{DEVPKEY_WiFiDirectServices_ServiceName, 0x31b37743, 0x7c5e, 0x4005, 0x93, 0xe6, 0xe9, 0x53, 0xf9, 0x2b, 0x82, 0xe9, 0x03} DEFINE_DEVPROPKEY!{DEVPKEY_WiFiDirectServices_ServiceInformation, 0x31b37743, 0x7c5e, 0x4005, 0x93, 0xe6, 0xe9, 0x53, 0xf9, 0x2b, 0x82, 0xe9, 0x04} DEFINE_DEVPROPKEY!{DEVPKEY_WiFiDirectServices_AdvertisementId, 0x31b37743, 0x7c5e, 0x4005, 0x93, 0xe6, 0xe9, 0x53, 0xf9, 0x2b, 0x82, 0xe9, 0x05} DEFINE_DEVPROPKEY!{DEVPKEY_WiFiDirectServices_ServiceConfigMethods, 0x31b37743, 0x7c5e, 0x4005, 0x93, 0xe6, 0xe9, 0x53, 0xf9, 0x2b, 0x82, 0xe9, 0x06} DEFINE_DEVPROPKEY!{DEVPKEY_WiFiDirectServices_RequestServiceInformation, 0x31b37743, 0x7c5e, 0x4005, 0x93, 0xe6, 0xe9, 0x53, 0xf9, 0x2b, 0x82, 0xe9, 0x07} extern "system" { pub fn WFDOpenHandle( dwClientVersion: DWORD, pdwNegotiatedVersion: PDWORD, phClientHandle: PHANDLE, ) -> DWORD; pub fn WFDCloseHandle( hClientHandle: HANDLE, ) -> DWORD; } FN!{stdcall WFD_OPEN_SESSION_COMPLETE_CALLBACK( hSessionHandle: HANDLE, pvContext: PVOID, guidSessionInterface: GUID, dwError: DWORD, dwReasonCode: DWORD, ) -> ()} extern "system" { pub fn WFDStartOpenSession( hClientHandle: HANDLE, pDeviceAddress: PDOT11_MAC_ADDRESS, pvContext: PVOID, pfnCallback: WFD_OPEN_SESSION_COMPLETE_CALLBACK, phSessionHandle: PHANDLE, ) -> DWORD; pub fn WFDCancelOpenSession( hSessionHandle: HANDLE, ) -> DWORD; pub fn WFDOpenLegacySession( hClientHandle: HANDLE, pLegacyMacAddress: PDOT11_MAC_ADDRESS, phSessionHandle: *mut HANDLE, pGuidSessionInterface: *mut GUID, ) -> DWORD; pub fn WFDCloseSession( hSessionHandle: HANDLE, ) -> DWORD; pub fn WFDUpdateDeviceVisibility( pDeviceAddress: PDOT11_MAC_ADDRESS, ) -> DWORD; } DEFINE_DEVPROPKEY!{DEVPKEY_WiFi_InterfaceGuid, 0xef1167eb, 0xcbfc, 0x4341, 0xa5, 0x68, 0xa7, 0xc9, 0x1a, 0x68, 0x98, 0x2c, 0x02}