// 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. use shared::guiddef::GUID; use shared::minwindef::ULONG; use um::unknwnbase::{IUnknown, IUnknownVtbl}; use um::winnt::{BOOLEAN, HRESULT, LONG, LPCWSTR, LPWSTR}; ENUM!{enum DOT11_ADHOC_CIPHER_ALGORITHM { DOT11_ADHOC_CIPHER_ALGO_INVALID = -1i32 as u32, DOT11_ADHOC_CIPHER_ALGO_NONE = 0, DOT11_ADHOC_CIPHER_ALGO_CCMP = 0x4, DOT11_ADHOC_CIPHER_ALGO_WEP = 0x101, }} ENUM!{enum DOT11_ADHOC_AUTH_ALGORITHM { DOT11_ADHOC_AUTH_ALGO_INVALID = -1i32 as u32, DOT11_ADHOC_AUTH_ALGO_80211_OPEN = 1, DOT11_ADHOC_AUTH_ALGO_RSNA_PSK = 7, }} ENUM!{enum DOT11_ADHOC_NETWORK_CONNECTION_STATUS { DOT11_ADHOC_NETWORK_CONNECTION_STATUS_INVALID = 0, DOT11_ADHOC_NETWORK_CONNECTION_STATUS_DISCONNECTED = 11, DOT11_ADHOC_NETWORK_CONNECTION_STATUS_CONNECTING = 12, DOT11_ADHOC_NETWORK_CONNECTION_STATUS_CONNECTED = 13, DOT11_ADHOC_NETWORK_CONNECTION_STATUS_FORMED = 14, }} ENUM!{enum DOT11_ADHOC_CONNECT_FAIL_REASON { DOT11_ADHOC_CONNECT_FAIL_DOMAIN_MISMATCH = 0, DOT11_ADHOC_CONNECT_FAIL_PASSPHRASE_MISMATCH = 1, DOT11_ADHOC_CONNECT_FAIL_OTHER = 2, }} RIDL!{#[uuid(0x8f10cc26, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)] interface IDot11AdHocManager(IDot11AdHocManagerVtbl): IUnknown(IUnknownVtbl) { fn CreateNetwork( Name: LPCWSTR, Password: LPCWSTR, GeographicalId: LONG, pInterface: *mut IDot11AdHocInterface, pSecurity: *mut IDot11AdHocSecuritySettings, pContextGuid: *mut GUID, pIAdHoc: *mut *mut IDot11AdHocNetwork, ) -> HRESULT, fn CommitCreatedNetwork( pIAdHoc: *mut IDot11AdHocNetwork, fSaveProfile: BOOLEAN, fMakeSavedProfileUserSpecific: BOOLEAN, ) -> HRESULT, fn GetIEnumDot11AdHocNetworks( pContextGuid: *mut GUID, ppEnum: *mut *mut IEnumDot11AdHocNetworks, ) -> HRESULT, fn GetIEnumDot11AdHocInterfaces( ppEnum: *mut *mut IEnumDot11AdHocInterfaces, ) -> HRESULT, fn GetNetwork( NetworkSignature: *mut GUID, pNetwork: *mut *mut IDot11AdHocNetwork, ) -> HRESULT, }} RIDL!{#[uuid(0x8f10cc27, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)] interface IDot11AdHocManagerNotificationSink(IDot11AdHocManagerNotificationSinkVtbl): IUnknown(IUnknownVtbl) { fn OnNetworkAdd( pIAdHocNetwork: *mut IDot11AdHocNetwork, ) -> HRESULT, fn OnNetworkRemove( Signature: *mut GUID, ) -> HRESULT, fn OnInterfaceAdd( pIAdHocInterface: *mut IDot11AdHocInterface, ) -> HRESULT, fn OnInterfaceRemove( Signature: *mut GUID, ) -> HRESULT, }} RIDL!{#[uuid(0x8f10cc28, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)] interface IEnumDot11AdHocNetworks(IEnumDot11AdHocNetworksVtbl): IUnknown(IUnknownVtbl) { fn Next( cElt: ULONG, rgElt: *mut *mut IDot11AdHocNetwork, pcEltFetched: *mut ULONG, ) -> HRESULT, fn Skip( cElt: ULONG, ) -> HRESULT, fn Reset() -> HRESULT, fn Clone( ppEnum: *mut *mut IEnumDot11AdHocNetworks, ) -> HRESULT, }} RIDL!{#[uuid(0x8f10cc29, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)] interface IDot11AdHocNetwork(IDot11AdHocNetworkVtbl): IUnknown(IUnknownVtbl) { fn GetStatus( eStatus: *mut DOT11_ADHOC_NETWORK_CONNECTION_STATUS, ) -> HRESULT, fn GetSSID( ppszwSSID: *mut LPWSTR, ) -> HRESULT, fn HasProfile( pf11d: *mut BOOLEAN, ) -> HRESULT, fn GetProfileName( ppszwProfileName: *mut LPWSTR, ) -> HRESULT, fn DeleteProfile() -> HRESULT, fn GetSignalQuality( puStrengthValue: *mut ULONG, puStrengthMax: *mut ULONG, ) -> HRESULT, fn GetSecuritySetting( pAdHocSecuritySetting: *mut *mut IDot11AdHocSecuritySettings, ) -> HRESULT, fn GetContextGuid( pContextGuid: *mut GUID, ) -> HRESULT, fn GetSignature( pSignature: *mut GUID, ) -> HRESULT, fn GetInterface( pAdHocInterface: *mut *mut IDot11AdHocInterface, ) -> HRESULT, fn Connect( Passphrase: LPCWSTR, GeographicalId: LONG, fSaveProfile: BOOLEAN, fMakeSavedProfileUserSpecific: BOOLEAN, ) -> HRESULT, fn Disconnect() -> HRESULT, }} RIDL!{#[uuid(0x8f10cc2a, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)] interface IDot11AdHocNetworkNotificationSink(IDot11AdHocNetworkNotificationSinkVtbl): IUnknown(IUnknownVtbl) { fn OnStatusChange( eStatus: DOT11_ADHOC_NETWORK_CONNECTION_STATUS, ) -> HRESULT, fn OnConnectFail( eFailReason: DOT11_ADHOC_CONNECT_FAIL_REASON, ) -> HRESULT, }} RIDL!{#[uuid(0x8f10cc2b, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)] interface IDot11AdHocInterface(IDot11AdHocInterfaceVtbl): IUnknown(IUnknownVtbl) { fn GetDeviceSignature( pSignature: *mut GUID, ) -> HRESULT, fn GetFriendlyName( ppszName: *mut LPWSTR, ) -> HRESULT, fn IsDot11d( pf11d: *mut BOOLEAN, ) -> HRESULT, fn IsAdHocCapable( pfAdHocCapable: *mut BOOLEAN, ) -> HRESULT, fn IsRadioOn( pfIsRadioOn: *mut BOOLEAN, ) -> HRESULT, fn GetActiveNetwork( ppNetwork: *mut *mut IDot11AdHocNetwork, ) -> HRESULT, fn GetIEnumSecuritySettings( ppEnum: *mut *mut IEnumDot11AdHocSecuritySettings, ) -> HRESULT, fn GetIEnumDot11AdHocNetworks( pFilterGuid: *mut GUID, ppEnum: *mut *mut IEnumDot11AdHocNetworks, ) -> HRESULT, fn GetStatus( pState: *mut DOT11_ADHOC_NETWORK_CONNECTION_STATUS, ) -> HRESULT, }} RIDL!{#[uuid(0x8f10cc2c, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)] interface IEnumDot11AdHocInterfaces(IEnumDot11AdHocInterfacesVtbl): IUnknown(IUnknownVtbl) { fn Next( cElt: ULONG, rgElt: *mut *mut IDot11AdHocInterface, pcEltFetched: *mut ULONG, ) -> HRESULT, fn Skip( cElt: ULONG, ) -> HRESULT, fn Reset() -> HRESULT, fn Clone( ppEnum: *mut *mut IEnumDot11AdHocInterfaces, ) -> HRESULT, }} RIDL!{#[uuid(0x8f10cc2d, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)] interface IEnumDot11AdHocSecuritySettings(IEnumDot11AdHocSecuritySettingsVtbl): IUnknown(IUnknownVtbl) { fn Next( cElt: ULONG, rgElt: *mut *mut IDot11AdHocSecuritySettings, pcEltFetched: *mut ULONG, ) -> HRESULT, fn Skip( cElt: ULONG, ) -> HRESULT, fn Reset() -> HRESULT, fn Clone( ppEnum: *mut *mut IEnumDot11AdHocSecuritySettings, ) -> HRESULT, }} RIDL!{#[uuid(0x8f10cc2e, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)] interface IDot11AdHocSecuritySettings(IDot11AdHocSecuritySettingsVtbl): IUnknown(IUnknownVtbl) { fn GetDot11AuthAlgorithm( pAuth: *mut DOT11_ADHOC_AUTH_ALGORITHM, ) -> HRESULT, fn GetDot11CipherAlgorithm( pCipher: *mut DOT11_ADHOC_CIPHER_ALGORITHM, ) -> HRESULT, }} RIDL!{#[uuid(0x8f10cc2f, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)] interface IDot11AdHocInterfaceNotificationSink(IDot11AdHocInterfaceNotificationSinkVtbl): IUnknown(IUnknownVtbl) { fn OnConnectionStatusChange( eStatus: DOT11_ADHOC_NETWORK_CONNECTION_STATUS, ) -> HRESULT, }} RIDL!{#[uuid(0xdd06a84f, 0x83bd, 0x4d01, 0x8a, 0xb9, 0x23, 0x89, 0xfe, 0xa0, 0x86, 0x9e)] class Dot11AdHocManager;}