1use shared::guiddef::GUID;
7use shared::minwindef::ULONG;
8use um::unknwnbase::{IUnknown, IUnknownVtbl};
9use um::winnt::{BOOLEAN, HRESULT, LONG, LPCWSTR, LPWSTR};
10ENUM!{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}}
16ENUM!{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}}
21ENUM!{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}}
28ENUM!{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}}
33RIDL!{#[uuid(0x8f10cc26, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)]
34interface 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}}
61RIDL!{#[uuid(0x8f10cc27, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)]
62interface 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}}
77RIDL!{#[uuid(0x8f10cc28, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)]
78interface 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}}
92RIDL!{#[uuid(0x8f10cc29, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)]
93interface 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}}
131RIDL!{#[uuid(0x8f10cc2a, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)]
132interface 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}}
141RIDL!{#[uuid(0x8f10cc2b, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)]
142interface 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}}
172RIDL!{#[uuid(0x8f10cc2c, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)]
173interface 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}}
187RIDL!{#[uuid(0x8f10cc2d, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)]
188interface 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}}
203RIDL!{#[uuid(0x8f10cc2e, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)]
204interface 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}}
212RIDL!{#[uuid(0x8f10cc2f, 0xcf0d, 0x42a0, 0xac, 0xbe, 0xe2, 0xde, 0x70, 0x07, 0x38, 0x4d)]
213interface IDot11AdHocInterfaceNotificationSink(IDot11AdHocInterfaceNotificationSinkVtbl):
214 IUnknown(IUnknownVtbl) {
215 fn OnConnectionStatusChange(
216 eStatus: DOT11_ADHOC_NETWORK_CONNECTION_STATUS,
217 ) -> HRESULT,
218}}
219RIDL!{#[uuid(0xdd06a84f, 0x83bd, 0x4d01, 0x8a, 0xb9, 0x23, 0x89, 0xfe, 0xa0, 0x86, 0x9e)]
220class Dot11AdHocManager;}