1 // Licensed under the Apache License, Version 2.0
2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4 // All files in the project carrying such notice may not be copied, modified, or distributed
5 // except according to those terms.
6 use shared::guiddef::GUID;
7 use shared::minwindef::ULONG;
8 use um::unknwnbase::{IUnknown, IUnknownVtbl};
9 use um::winnt::{BOOLEAN, HRESULT, LONG, LPCWSTR, LPWSTR};
10 ENUM!{enum DOT11_ADHOC_CIPHER_ALGORITHM {
11     DOT11_ADHOC_CIPHER_ALGO_INVALID = -1i32 as u32,
12     DOT11_ADHOC_CIPHER_ALGO_NONE = 0,
13     DOT11_ADHOC_CIPHER_ALGO_CCMP = 0x4,
14     DOT11_ADHOC_CIPHER_ALGO_WEP = 0x101,
15 }}
16 ENUM!{enum DOT11_ADHOC_AUTH_ALGORITHM {
17     DOT11_ADHOC_AUTH_ALGO_INVALID = -1i32 as u32,
18     DOT11_ADHOC_AUTH_ALGO_80211_OPEN = 1,
19     DOT11_ADHOC_AUTH_ALGO_RSNA_PSK = 7,
20 }}
21 ENUM!{enum DOT11_ADHOC_NETWORK_CONNECTION_STATUS {
22     DOT11_ADHOC_NETWORK_CONNECTION_STATUS_INVALID = 0,
23     DOT11_ADHOC_NETWORK_CONNECTION_STATUS_DISCONNECTED = 11,
24     DOT11_ADHOC_NETWORK_CONNECTION_STATUS_CONNECTING = 12,
25     DOT11_ADHOC_NETWORK_CONNECTION_STATUS_CONNECTED = 13,
26     DOT11_ADHOC_NETWORK_CONNECTION_STATUS_FORMED = 14,
27 }}
28 ENUM!{enum DOT11_ADHOC_CONNECT_FAIL_REASON {
29     DOT11_ADHOC_CONNECT_FAIL_DOMAIN_MISMATCH = 0,
30     DOT11_ADHOC_CONNECT_FAIL_PASSPHRASE_MISMATCH = 1,
31     DOT11_ADHOC_CONNECT_FAIL_OTHER = 2,
32 }}
33 RIDL!{#[uuid(0x8f10cc26, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)]
34 interface IDot11AdHocManager(IDot11AdHocManagerVtbl): IUnknown(IUnknownVtbl) {
35     fn CreateNetwork(
36         Name: LPCWSTR,
37         Password: LPCWSTR,
38         GeographicalId: LONG,
39         pInterface: *mut IDot11AdHocInterface,
40         pSecurity: *mut IDot11AdHocSecuritySettings,
41         pContextGuid: *mut GUID,
42         pIAdHoc: *mut *mut IDot11AdHocNetwork,
43     ) -> HRESULT,
44     fn CommitCreatedNetwork(
45         pIAdHoc: *mut IDot11AdHocNetwork,
46         fSaveProfile: BOOLEAN,
47         fMakeSavedProfileUserSpecific: BOOLEAN,
48     ) -> HRESULT,
49     fn GetIEnumDot11AdHocNetworks(
50         pContextGuid: *mut GUID,
51         ppEnum: *mut *mut IEnumDot11AdHocNetworks,
52     ) -> HRESULT,
53     fn GetIEnumDot11AdHocInterfaces(
54         ppEnum: *mut *mut IEnumDot11AdHocInterfaces,
55     ) -> HRESULT,
56     fn GetNetwork(
57         NetworkSignature: *mut GUID,
58         pNetwork: *mut *mut IDot11AdHocNetwork,
59     ) -> HRESULT,
60 }}
61 RIDL!{#[uuid(0x8f10cc27, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)]
62 interface IDot11AdHocManagerNotificationSink(IDot11AdHocManagerNotificationSinkVtbl):
63     IUnknown(IUnknownVtbl) {
64     fn OnNetworkAdd(
65         pIAdHocNetwork: *mut IDot11AdHocNetwork,
66     ) -> HRESULT,
67     fn OnNetworkRemove(
68         Signature: *mut GUID,
69     ) -> HRESULT,
70     fn OnInterfaceAdd(
71         pIAdHocInterface: *mut IDot11AdHocInterface,
72     ) -> HRESULT,
73     fn OnInterfaceRemove(
74         Signature: *mut GUID,
75     ) -> HRESULT,
76 }}
77 RIDL!{#[uuid(0x8f10cc28, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)]
78 interface IEnumDot11AdHocNetworks(IEnumDot11AdHocNetworksVtbl): IUnknown(IUnknownVtbl) {
79     fn Next(
80         cElt: ULONG,
81         rgElt: *mut *mut IDot11AdHocNetwork,
82         pcEltFetched: *mut ULONG,
83     ) -> HRESULT,
84     fn Skip(
85         cElt: ULONG,
86     ) -> HRESULT,
87     fn Reset() -> HRESULT,
88     fn Clone(
89         ppEnum: *mut *mut IEnumDot11AdHocNetworks,
90     ) -> HRESULT,
91 }}
92 RIDL!{#[uuid(0x8f10cc29, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)]
93 interface IDot11AdHocNetwork(IDot11AdHocNetworkVtbl): IUnknown(IUnknownVtbl) {
94     fn GetStatus(
95         eStatus: *mut DOT11_ADHOC_NETWORK_CONNECTION_STATUS,
96     ) -> HRESULT,
97     fn GetSSID(
98         ppszwSSID: *mut LPWSTR,
99     ) -> HRESULT,
100     fn HasProfile(
101         pf11d: *mut BOOLEAN,
102     ) -> HRESULT,
103     fn GetProfileName(
104         ppszwProfileName: *mut LPWSTR,
105     ) -> HRESULT,
106     fn DeleteProfile() -> HRESULT,
107     fn GetSignalQuality(
108         puStrengthValue: *mut ULONG,
109         puStrengthMax: *mut ULONG,
110     ) -> HRESULT,
111     fn GetSecuritySetting(
112         pAdHocSecuritySetting: *mut *mut IDot11AdHocSecuritySettings,
113     ) -> HRESULT,
114     fn GetContextGuid(
115         pContextGuid: *mut GUID,
116     ) -> HRESULT,
117     fn GetSignature(
118         pSignature: *mut GUID,
119     ) -> HRESULT,
120     fn GetInterface(
121         pAdHocInterface: *mut *mut IDot11AdHocInterface,
122     ) -> HRESULT,
123     fn Connect(
124         Passphrase: LPCWSTR,
125         GeographicalId: LONG,
126         fSaveProfile: BOOLEAN,
127         fMakeSavedProfileUserSpecific: BOOLEAN,
128     ) -> HRESULT,
129     fn Disconnect() -> HRESULT,
130 }}
131 RIDL!{#[uuid(0x8f10cc2a, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)]
132 interface IDot11AdHocNetworkNotificationSink(IDot11AdHocNetworkNotificationSinkVtbl):
133     IUnknown(IUnknownVtbl) {
134     fn OnStatusChange(
135         eStatus: DOT11_ADHOC_NETWORK_CONNECTION_STATUS,
136     ) -> HRESULT,
137     fn OnConnectFail(
138         eFailReason: DOT11_ADHOC_CONNECT_FAIL_REASON,
139     ) -> HRESULT,
140 }}
141 RIDL!{#[uuid(0x8f10cc2b, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)]
142 interface IDot11AdHocInterface(IDot11AdHocInterfaceVtbl): IUnknown(IUnknownVtbl) {
143     fn GetDeviceSignature(
144         pSignature: *mut GUID,
145     ) -> HRESULT,
146     fn GetFriendlyName(
147         ppszName: *mut LPWSTR,
148     ) -> HRESULT,
149     fn IsDot11d(
150         pf11d: *mut BOOLEAN,
151     ) -> HRESULT,
152     fn IsAdHocCapable(
153         pfAdHocCapable: *mut BOOLEAN,
154     ) -> HRESULT,
155     fn IsRadioOn(
156         pfIsRadioOn: *mut BOOLEAN,
157     ) -> HRESULT,
158     fn GetActiveNetwork(
159         ppNetwork: *mut *mut IDot11AdHocNetwork,
160     ) -> HRESULT,
161     fn GetIEnumSecuritySettings(
162         ppEnum: *mut *mut IEnumDot11AdHocSecuritySettings,
163     ) -> HRESULT,
164     fn GetIEnumDot11AdHocNetworks(
165         pFilterGuid: *mut GUID,
166         ppEnum: *mut *mut IEnumDot11AdHocNetworks,
167     ) -> HRESULT,
168     fn GetStatus(
169         pState: *mut DOT11_ADHOC_NETWORK_CONNECTION_STATUS,
170     ) -> HRESULT,
171 }}
172 RIDL!{#[uuid(0x8f10cc2c, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)]
173 interface IEnumDot11AdHocInterfaces(IEnumDot11AdHocInterfacesVtbl): IUnknown(IUnknownVtbl) {
174     fn Next(
175         cElt: ULONG,
176         rgElt: *mut *mut IDot11AdHocInterface,
177         pcEltFetched: *mut ULONG,
178     ) -> HRESULT,
179     fn Skip(
180         cElt: ULONG,
181     ) -> HRESULT,
182     fn Reset() -> HRESULT,
183     fn Clone(
184         ppEnum: *mut *mut IEnumDot11AdHocInterfaces,
185     ) -> HRESULT,
186 }}
187 RIDL!{#[uuid(0x8f10cc2d, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)]
188 interface IEnumDot11AdHocSecuritySettings(IEnumDot11AdHocSecuritySettingsVtbl):
189     IUnknown(IUnknownVtbl) {
190     fn Next(
191         cElt: ULONG,
192         rgElt: *mut *mut IDot11AdHocSecuritySettings,
193         pcEltFetched: *mut ULONG,
194     ) -> HRESULT,
195     fn Skip(
196         cElt: ULONG,
197     ) -> HRESULT,
198     fn Reset() -> HRESULT,
199     fn Clone(
200         ppEnum: *mut *mut IEnumDot11AdHocSecuritySettings,
201     ) -> HRESULT,
202 }}
203 RIDL!{#[uuid(0x8f10cc2e, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)]
204 interface IDot11AdHocSecuritySettings(IDot11AdHocSecuritySettingsVtbl): IUnknown(IUnknownVtbl) {
205     fn GetDot11AuthAlgorithm(
206         pAuth: *mut DOT11_ADHOC_AUTH_ALGORITHM,
207     ) -> HRESULT,
208     fn GetDot11CipherAlgorithm(
209         pCipher: *mut DOT11_ADHOC_CIPHER_ALGORITHM,
210     ) -> HRESULT,
211 }}
212 RIDL!{#[uuid(0x8f10cc2f, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)]
213 interface IDot11AdHocInterfaceNotificationSink(IDot11AdHocInterfaceNotificationSinkVtbl):
214     IUnknown(IUnknownVtbl) {
215     fn OnConnectionStatusChange(
216         eStatus: DOT11_ADHOC_NETWORK_CONNECTION_STATUS,
217     ) -> HRESULT,
218 }}
219 RIDL!{#[uuid(0xdd06a84f, 0x83bd, 0x4d01, 0x8a, 0xb9, 0x23, 0x89, 0xfe, 0xa0, 0x86, 0x9e)]
220 class Dot11AdHocManager;}
221