1 // Copyright © 2015-2017 winapi-rs developers
2 // Licensed under the Apache License, Version 2.0
3 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
4 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
5 // All files in the project carrying such notice may not be copied, modified, or distributed
6 // except according to those terms.
7 //! Windows HTTP Services API constant definitions and macros
8 use ctypes::c_int;
9 use shared::basetsd::DWORD_PTR;
10 use shared::minwindef::{BOOL, DWORD, LPCVOID, LPDWORD, LPVOID, USHORT, WORD};
11 use um::minwinbase::SYSTEMTIME;
12 use um::winnt::{LPCWSTR, LPWSTR, PCWSTR, PVOID, PWSTR};
13 pub type HINTERNET = LPVOID;
14 pub type LPHINTERNET = *mut HINTERNET;
15 pub type INTERNET_PORT = WORD;
16 pub type LPINTERNET_PORT = *mut INTERNET_PORT;
17 pub const INTERNET_DEFAULT_PORT: INTERNET_PORT = 0;
18 pub const INTERNET_DEFAULT_HTTP_PORT: INTERNET_PORT = 80;
19 pub const INTERNET_DEFAULT_HTTPS_PORT: INTERNET_PORT = 443;
20 pub const WINHTTP_FLAG_ASYNC: DWORD = 0x10000000;
21 pub const WINHTTP_FLAG_SECURE: DWORD = 0x00800000;
22 pub const WINHTTP_FLAG_ESCAPE_PERCENT: DWORD = 0x00000004;
23 pub const WINHTTP_FLAG_NULL_CODEPAGE: DWORD = 0x00000008;
24 pub const WINHTTP_FLAG_BYPASS_PROXY_CACHE: DWORD = 0x00000100;
25 pub const WINHTTP_FLAG_REFRESH: DWORD = WINHTTP_FLAG_BYPASS_PROXY_CACHE;
26 pub const WINHTTP_FLAG_ESCAPE_DISABLE: DWORD = 0x00000040;
27 pub const WINHTTP_FLAG_ESCAPE_DISABLE_QUERY: DWORD = 0x00000080;
28 STRUCT!{struct WINHTTP_ASYNC_RESULT {
29     dwResult: DWORD_PTR,
30     dwError: DWORD,
31 }}
32 pub type LPWINHTTP_ASYNC_RESULT = *mut WINHTTP_ASYNC_RESULT;
33 pub type INTERNET_SCHEME = c_int;
34 pub type LPINTERNET_SCHEME = *mut c_int;
35 pub const INTERNET_SCHEME_HTTP: INTERNET_SCHEME = 1;
36 pub const INTERNET_SCHEME_HTTPS: INTERNET_SCHEME = 2;
37 pub const INTERNET_SCHEME_FTP: INTERNET_SCHEME = 3;
38 pub const INTERNET_SCHEME_SOCKS: INTERNET_SCHEME = 4;
39 STRUCT!{struct URL_COMPONENTS {
40     dwStructSize: DWORD,
41     lpszScheme: LPWSTR,
42     dwSchemeLength: DWORD,
43     nScheme: INTERNET_SCHEME,
44     lpszHostName: LPWSTR,
45     dwHostNameLength: DWORD,
46     nPort: INTERNET_PORT,
47     lpszUserName: LPWSTR,
48     dwUserNameLength: DWORD,
49     lpszPassword: LPWSTR,
50     dwPasswordLength: DWORD,
51     lpszUrlPath: LPWSTR,
52     dwUrlPathLength: DWORD,
53     lpszExtraInfo: LPWSTR,
54     dwExtraInfoLength: DWORD,
55 }}
56 pub type LPURL_COMPONENTS = *mut URL_COMPONENTS;
57 pub type URL_COMPONENTSW = URL_COMPONENTS;
58 pub type LPURL_COMPONENTSW = LPURL_COMPONENTS;
59 STRUCT!{struct WINHTTP_PROXY_INFO {
60     dwAccessType: DWORD,
61     lpszProxy: LPWSTR,
62     lpszProxyBypass: LPWSTR,
63 }}
64 pub type LPWINHTTP_PROXY_INFO = *mut WINHTTP_PROXY_INFO;
65 pub type WINHTTP_PROXY_INFOW = WINHTTP_PROXY_INFO;
66 pub type LPWINHTTP_PROXY_INFOW = LPWINHTTP_PROXY_INFO;
67 STRUCT!{struct WINHTTP_AUTOPROXY_OPTIONS {
68     dwFlags: DWORD,
69     dwAutoDetectFlags: DWORD,
70     lpszAutoConfigUrl: LPCWSTR,
71     lpvReserved: LPVOID,
72     dwReserved: DWORD,
73     fAutoLogonIfChallenged: BOOL,
74 }}
75 pub const WINHTTP_AUTOPROXY_AUTO_DETECT: DWORD = 0x00000001;
76 pub const WINHTTP_AUTOPROXY_CONFIG_URL: DWORD = 0x00000002;
77 pub const WINHTTP_AUTOPROXY_HOST_KEEPCASE: DWORD = 0x00000004;
78 pub const WINHTTP_AUTOPROXY_HOST_LOWERCASE: DWORD = 0x00000008;
79 pub const WINHTTP_AUTOPROXY_RUN_INPROCESS: DWORD = 0x00010000;
80 pub const WINHTTP_AUTOPROXY_RUN_OUTPROCESS_ONLY: DWORD = 0x00020000;
81 pub const WINHTTP_AUTOPROXY_NO_DIRECTACCESS: DWORD = 0x00040000;
82 pub const WINHTTP_AUTOPROXY_NO_CACHE_CLIENT: DWORD = 0x00080000;
83 pub const WINHTTP_AUTOPROXY_NO_CACHE_SVC: DWORD = 0x00100000;
84 pub const WINHTTP_AUTOPROXY_SORT_RESULTS: DWORD = 0x00400000;
85 pub const WINHTTP_AUTO_DETECT_TYPE_DHCP: DWORD = 0x00000001;
86 pub const WINHTTP_AUTO_DETECT_TYPE_DNS_A: DWORD = 0x00000002;
87 STRUCT!{struct WINHTTP_PROXY_RESULT_ENTRY {
88     fProxy: BOOL,
89     fBypass: BOOL,
90     ProxyScheme: INTERNET_SCHEME,
91     pwszProxy: PWSTR,
92     ProxyPort: INTERNET_PORT,
93 }}
94 STRUCT!{struct WINHTTP_PROXY_RESULT {
95     cEntries: DWORD,
96     pEntries: *mut WINHTTP_PROXY_RESULT_ENTRY,
97 }}
98 pub const WINHTTP_FIRST_OPTION: DWORD = WINHTTP_OPTION_CALLBACK;
99 pub const WINHTTP_OPTION_CALLBACK: DWORD = 1;
100 pub const WINHTTP_OPTION_RESOLVE_TIMEOUT: DWORD = 2;
101 pub const WINHTTP_OPTION_CONNECT_TIMEOUT: DWORD = 3;
102 pub const WINHTTP_OPTION_CONNECT_RETRIES: DWORD = 4;
103 pub const WINHTTP_OPTION_SEND_TIMEOUT: DWORD = 5;
104 pub const WINHTTP_OPTION_RECEIVE_TIMEOUT: DWORD = 6;
105 pub const WINHTTP_OPTION_RECEIVE_RESPONSE_TIMEOUT: DWORD = 7;
106 pub const WINHTTP_OPTION_HANDLE_TYPE: DWORD = 9;
107 pub const WINHTTP_OPTION_READ_BUFFER_SIZE: DWORD = 12;
108 pub const WINHTTP_OPTION_WRITE_BUFFER_SIZE: DWORD = 13;
109 pub const WINHTTP_OPTION_PARENT_HANDLE: DWORD = 21;
110 pub const WINHTTP_OPTION_EXTENDED_ERROR: DWORD = 24;
111 pub const WINHTTP_OPTION_SECURITY_FLAGS: DWORD = 31;
112 pub const WINHTTP_OPTION_SECURITY_CERTIFICATE_STRUCT: DWORD = 32;
113 pub const WINHTTP_OPTION_URL: DWORD = 34;
114 pub const WINHTTP_OPTION_SECURITY_KEY_BITNESS: DWORD = 36;
115 pub const WINHTTP_OPTION_PROXY: DWORD = 38;
116 pub const WINHTTP_OPTION_PROXY_RESULT_ENTRY: DWORD = 39;
117 pub const WINHTTP_OPTION_USER_AGENT: DWORD = 41;
118 pub const WINHTTP_OPTION_CONTEXT_VALUE: DWORD = 45;
119 pub const WINHTTP_OPTION_CLIENT_CERT_CONTEXT: DWORD = 47;
120 pub const WINHTTP_OPTION_REQUEST_PRIORITY: DWORD = 58;
121 pub const WINHTTP_OPTION_HTTP_VERSION: DWORD = 59;
122 pub const WINHTTP_OPTION_DISABLE_FEATURE: DWORD = 63;
123 pub const WINHTTP_OPTION_CODEPAGE: DWORD = 68;
124 pub const WINHTTP_OPTION_MAX_CONNS_PER_SERVER: DWORD = 73;
125 pub const WINHTTP_OPTION_MAX_CONNS_PER_1_0_SERVER: DWORD = 74;
126 pub const WINHTTP_OPTION_AUTOLOGON_POLICY: DWORD = 77;
127 pub const WINHTTP_OPTION_SERVER_CERT_CONTEXT: DWORD = 78;
128 pub const WINHTTP_OPTION_ENABLE_FEATURE: DWORD = 79;
129 pub const WINHTTP_OPTION_WORKER_THREAD_COUNT: DWORD = 80;
130 pub const WINHTTP_OPTION_PASSPORT_COBRANDING_TEXT: DWORD = 81;
131 pub const WINHTTP_OPTION_PASSPORT_COBRANDING_URL: DWORD = 82;
132 pub const WINHTTP_OPTION_CONFIGURE_PASSPORT_AUTH: DWORD = 83;
133 pub const WINHTTP_OPTION_SECURE_PROTOCOLS: DWORD = 84;
134 pub const WINHTTP_OPTION_ENABLETRACING: DWORD = 85;
135 pub const WINHTTP_OPTION_PASSPORT_SIGN_OUT: DWORD = 86;
136 pub const WINHTTP_OPTION_PASSPORT_RETURN_URL: DWORD = 87;
137 pub const WINHTTP_OPTION_REDIRECT_POLICY: DWORD = 88;
138 pub const WINHTTP_OPTION_MAX_HTTP_AUTOMATIC_REDIRECTS: DWORD = 89;
139 pub const WINHTTP_OPTION_MAX_HTTP_STATUS_CONTINUE: DWORD = 90;
140 pub const WINHTTP_OPTION_MAX_RESPONSE_HEADER_SIZE: DWORD = 91;
141 pub const WINHTTP_OPTION_MAX_RESPONSE_DRAIN_SIZE: DWORD = 92;
142 pub const WINHTTP_OPTION_CONNECTION_INFO: DWORD = 93;
143 pub const WINHTTP_OPTION_CLIENT_CERT_ISSUER_LIST: DWORD = 94;
144 pub const WINHTTP_OPTION_SPN: DWORD = 96;
145 pub const WINHTTP_OPTION_GLOBAL_PROXY_CREDS: DWORD = 97;
146 pub const WINHTTP_OPTION_GLOBAL_SERVER_CREDS: DWORD = 98;
147 pub const WINHTTP_OPTION_UNLOAD_NOTIFY_EVENT: DWORD = 99;
148 pub const WINHTTP_OPTION_REJECT_USERPWD_IN_URL: DWORD = 100;
149 pub const WINHTTP_OPTION_USE_GLOBAL_SERVER_CREDENTIALS: DWORD = 101;
150 pub const WINHTTP_OPTION_RECEIVE_PROXY_CONNECT_RESPONSE: DWORD = 103;
151 pub const WINHTTP_OPTION_IS_PROXY_CONNECT_RESPONSE: DWORD = 104;
152 pub const WINHTTP_OPTION_SERVER_SPN_USED: DWORD = 106;
153 pub const WINHTTP_OPTION_PROXY_SPN_USED: DWORD = 107;
154 pub const WINHTTP_OPTION_SERVER_CBT: DWORD = 108;
155 pub const WINHTTP_OPTION_UNSAFE_HEADER_PARSING: DWORD = 110;
156 pub const WINHTTP_OPTION_ASSURED_NON_BLOCKING_CALLBACKS: DWORD = 111;
157 pub const WINHTTP_OPTION_UPGRADE_TO_WEB_SOCKET: DWORD = 114;
158 pub const WINHTTP_OPTION_WEB_SOCKET_CLOSE_TIMEOUT: DWORD = 115;
159 pub const WINHTTP_OPTION_WEB_SOCKET_KEEPALIVE_INTERVAL: DWORD = 116;
160 pub const WINHTTP_OPTION_DECOMPRESSION: DWORD = 118;
161 pub const WINHTTP_OPTION_WEB_SOCKET_RECEIVE_BUFFER_SIZE: DWORD = 122;
162 pub const WINHTTP_OPTION_WEB_SOCKET_SEND_BUFFER_SIZE: DWORD = 123;
163 pub const WINHTTP_LAST_OPTION: DWORD = WINHTTP_OPTION_WEB_SOCKET_SEND_BUFFER_SIZE;
164 pub const WINHTTP_OPTION_USERNAME: DWORD = 0x1000;
165 pub const WINHTTP_OPTION_PASSWORD: DWORD = 0x1001;
166 pub const WINHTTP_OPTION_PROXY_USERNAME: DWORD = 0x1002;
167 pub const WINHTTP_OPTION_PROXY_PASSWORD: DWORD = 0x1003;
168 //569
169 FN!{stdcall WINHTTP_STATUS_CALLBACK(
170     hInternet: HINTERNET,
171     dwContext: DWORD_PTR,
172     dwInternetStatus: DWORD,
173     lpvStatusInformation: LPVOID,
174     dwStatusInformationLength: DWORD,
175 ) -> ()}
176 pub type LPWINHTTP_STATUS_CALLBACK = *mut WINHTTP_STATUS_CALLBACK;
177 pub const WINHTTP_CALLBACK_STATUS_RESOLVING_NAME: DWORD = 0x00000001;
178 pub const WINHTTP_CALLBACK_STATUS_NAME_RESOLVED: DWORD = 0x00000002;
179 pub const WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER: DWORD = 0x00000004;
180 pub const WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER: DWORD = 0x00000008;
181 pub const WINHTTP_CALLBACK_STATUS_SENDING_REQUEST: DWORD = 0x00000010;
182 pub const WINHTTP_CALLBACK_STATUS_REQUEST_SENT: DWORD = 0x00000020;
183 pub const WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE: DWORD = 0x00000040;
184 pub const WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED: DWORD = 0x00000080;
185 pub const WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION: DWORD = 0x00000100;
186 pub const WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED: DWORD = 0x00000200;
187 pub const WINHTTP_CALLBACK_STATUS_HANDLE_CREATED: DWORD = 0x00000400;
188 pub const WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING: DWORD = 0x00000800;
189 pub const WINHTTP_CALLBACK_STATUS_DETECTING_PROXY: DWORD = 0x00001000;
190 pub const WINHTTP_CALLBACK_STATUS_REDIRECT: DWORD = 0x00004000;
191 pub const WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE: DWORD = 0x00008000;
192 pub const WINHTTP_CALLBACK_STATUS_SECURE_FAILURE: DWORD = 0x00010000;
193 pub const WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE: DWORD = 0x00020000;
194 pub const WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE: DWORD = 0x00040000;
195 pub const WINHTTP_CALLBACK_STATUS_READ_COMPLETE: DWORD = 0x00080000;
196 pub const WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE: DWORD = 0x00100000;
197 pub const WINHTTP_CALLBACK_STATUS_REQUEST_ERROR: DWORD = 0x00200000;
198 pub const WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE: DWORD = 0x00400000;
199 pub const WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE: DWORD = 0x01000000;
200 pub const WINHTTP_CALLBACK_STATUS_CLOSE_COMPLETE: DWORD = 0x02000000;
201 pub const WINHTTP_CALLBACK_STATUS_SHUTDOWN_COMPLETE: DWORD = 0x04000000;
202 pub const WINHTTP_CALLBACK_FLAG_RESOLVE_NAME: DWORD = WINHTTP_CALLBACK_STATUS_RESOLVING_NAME
203     | WINHTTP_CALLBACK_STATUS_NAME_RESOLVED;
204 pub const WINHTTP_CALLBACK_FLAG_CONNECT_TO_SERVER: DWORD =
205     WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER | WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER;
206 pub const WINHTTP_CALLBACK_FLAG_SEND_REQUEST: DWORD =
207     WINHTTP_CALLBACK_STATUS_SENDING_REQUEST | WINHTTP_CALLBACK_STATUS_REQUEST_SENT;
208 pub const WINHTTP_CALLBACK_FLAG_RECEIVE_RESPONSE: DWORD =
209     WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE | WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED;
210 pub const WINHTTP_CALLBACK_FLAG_CLOSE_CONNECTION: DWORD =
211     WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION | WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED;
212 pub const WINHTTP_CALLBACK_FLAG_HANDLES: DWORD =
213     WINHTTP_CALLBACK_STATUS_HANDLE_CREATED | WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING;
214 pub const WINHTTP_CALLBACK_FLAG_DETECTING_PROXY: DWORD = WINHTTP_CALLBACK_STATUS_DETECTING_PROXY;
215 pub const WINHTTP_CALLBACK_FLAG_REDIRECT: DWORD = WINHTTP_CALLBACK_STATUS_REDIRECT;
216 pub const WINHTTP_CALLBACK_FLAG_INTERMEDIATE_RESPONSE: DWORD =
217     WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE;
218 pub const WINHTTP_CALLBACK_FLAG_SECURE_FAILURE: DWORD = WINHTTP_CALLBACK_STATUS_SECURE_FAILURE;
219 pub const WINHTTP_CALLBACK_FLAG_SENDREQUEST_COMPLETE: DWORD =
220     WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE;
221 pub const WINHTTP_CALLBACK_FLAG_HEADERS_AVAILABLE: DWORD =
222     WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE;
223 pub const WINHTTP_CALLBACK_FLAG_DATA_AVAILABLE: DWORD = WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE;
224 pub const WINHTTP_CALLBACK_FLAG_READ_COMPLETE: DWORD = WINHTTP_CALLBACK_STATUS_READ_COMPLETE;
225 pub const WINHTTP_CALLBACK_FLAG_WRITE_COMPLETE: DWORD = WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE;
226 pub const WINHTTP_CALLBACK_FLAG_REQUEST_ERROR: DWORD = WINHTTP_CALLBACK_STATUS_REQUEST_ERROR;
227 pub const WINHTTP_CALLBACK_FLAG_GETPROXYFORURL_COMPLETE: DWORD =
228     WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE;
229 pub const WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS: DWORD =
230     WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE | WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE
231     | WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE | WINHTTP_CALLBACK_STATUS_READ_COMPLETE
232     | WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE | WINHTTP_CALLBACK_STATUS_REQUEST_ERROR
233     | WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE;
234 pub const WINHTTP_CALLBACK_FLAG_ALL_NOTIFICATIONS: DWORD = 0xffffffff;
235 pub const WINHTTP_QUERY_MIME_VERSION: DWORD = 0;
236 pub const WINHTTP_QUERY_CONTENT_TYPE: DWORD = 1;
237 pub const WINHTTP_QUERY_CONTENT_TRANSFER_ENCODING: DWORD = 2;
238 pub const WINHTTP_QUERY_CONTENT_ID: DWORD = 3;
239 pub const WINHTTP_QUERY_CONTENT_DESCRIPTION: DWORD = 4;
240 pub const WINHTTP_QUERY_CONTENT_LENGTH: DWORD = 5;
241 pub const WINHTTP_QUERY_CONTENT_LANGUAGE: DWORD = 6;
242 pub const WINHTTP_QUERY_ALLOW: DWORD = 7;
243 pub const WINHTTP_QUERY_PUBLIC: DWORD = 8;
244 pub const WINHTTP_QUERY_DATE: DWORD = 9;
245 pub const WINHTTP_QUERY_EXPIRES: DWORD = 10;
246 pub const WINHTTP_QUERY_LAST_MODIFIED: DWORD = 11;
247 pub const WINHTTP_QUERY_MESSAGE_ID: DWORD = 12;
248 pub const WINHTTP_QUERY_URI: DWORD = 13;
249 pub const WINHTTP_QUERY_DERIVED_FROM: DWORD = 14;
250 pub const WINHTTP_QUERY_COST: DWORD = 15;
251 pub const WINHTTP_QUERY_LINK: DWORD = 16;
252 pub const WINHTTP_QUERY_PRAGMA: DWORD = 17;
253 pub const WINHTTP_QUERY_VERSION: DWORD = 18;
254 pub const WINHTTP_QUERY_STATUS_CODE: DWORD = 19;
255 pub const WINHTTP_QUERY_STATUS_TEXT: DWORD = 20;
256 pub const WINHTTP_QUERY_RAW_HEADERS: DWORD = 21;
257 pub const WINHTTP_QUERY_RAW_HEADERS_CRLF: DWORD = 22;
258 pub const WINHTTP_QUERY_CONNECTION: DWORD = 23;
259 pub const WINHTTP_QUERY_ACCEPT: DWORD = 24;
260 pub const WINHTTP_QUERY_ACCEPT_CHARSET: DWORD = 25;
261 pub const WINHTTP_QUERY_ACCEPT_ENCODING: DWORD = 26;
262 pub const WINHTTP_QUERY_ACCEPT_LANGUAGE: DWORD = 27;
263 pub const WINHTTP_QUERY_AUTHORIZATION: DWORD = 28;
264 pub const WINHTTP_QUERY_CONTENT_ENCODING: DWORD = 29;
265 pub const WINHTTP_QUERY_FORWARDED: DWORD = 30;
266 pub const WINHTTP_QUERY_FROM: DWORD = 31;
267 pub const WINHTTP_QUERY_IF_MODIFIED_SINCE: DWORD = 32;
268 pub const WINHTTP_QUERY_LOCATION: DWORD = 33;
269 pub const WINHTTP_QUERY_ORIG_URI: DWORD = 34;
270 pub const WINHTTP_QUERY_REFERER: DWORD = 35;
271 pub const WINHTTP_QUERY_RETRY_AFTER: DWORD = 36;
272 pub const WINHTTP_QUERY_SERVER: DWORD = 37;
273 pub const WINHTTP_QUERY_TITLE: DWORD = 38;
274 pub const WINHTTP_QUERY_USER_AGENT: DWORD = 39;
275 pub const WINHTTP_QUERY_WWW_AUTHENTICATE: DWORD = 40;
276 pub const WINHTTP_QUERY_PROXY_AUTHENTICATE: DWORD = 41;
277 pub const WINHTTP_QUERY_ACCEPT_RANGES: DWORD = 42;
278 pub const WINHTTP_QUERY_SET_COOKIE: DWORD = 43;
279 pub const WINHTTP_QUERY_COOKIE: DWORD = 44;
280 pub const WINHTTP_QUERY_REQUEST_METHOD: DWORD = 45;
281 pub const WINHTTP_QUERY_REFRESH: DWORD = 46;
282 pub const WINHTTP_QUERY_CONTENT_DISPOSITION: DWORD = 47;
283 pub const WINHTTP_QUERY_AGE: DWORD = 48;
284 pub const WINHTTP_QUERY_CACHE_CONTROL: DWORD = 49;
285 pub const WINHTTP_QUERY_CONTENT_BASE: DWORD = 50;
286 pub const WINHTTP_QUERY_CONTENT_LOCATION: DWORD = 51;
287 pub const WINHTTP_QUERY_CONTENT_MD5: DWORD = 52;
288 pub const WINHTTP_QUERY_CONTENT_RANGE: DWORD = 53;
289 pub const WINHTTP_QUERY_ETAG: DWORD = 54;
290 pub const WINHTTP_QUERY_HOST: DWORD = 55;
291 pub const WINHTTP_QUERY_IF_MATCH: DWORD = 56;
292 pub const WINHTTP_QUERY_IF_NONE_MATCH: DWORD = 57;
293 pub const WINHTTP_QUERY_IF_RANGE: DWORD = 58;
294 pub const WINHTTP_QUERY_IF_UNMODIFIED_SINCE: DWORD = 59;
295 pub const WINHTTP_QUERY_MAX_FORWARDS: DWORD = 60;
296 pub const WINHTTP_QUERY_PROXY_AUTHORIZATION: DWORD = 61;
297 pub const WINHTTP_QUERY_RANGE: DWORD = 62;
298 pub const WINHTTP_QUERY_TRANSFER_ENCODING: DWORD = 63;
299 pub const WINHTTP_QUERY_UPGRADE: DWORD = 64;
300 pub const WINHTTP_QUERY_VARY: DWORD = 65;
301 pub const WINHTTP_QUERY_VIA: DWORD = 66;
302 pub const WINHTTP_QUERY_WARNING: DWORD = 67;
303 pub const WINHTTP_QUERY_EXPECT: DWORD = 68;
304 pub const WINHTTP_QUERY_PROXY_CONNECTION: DWORD = 69;
305 pub const WINHTTP_QUERY_UNLESS_MODIFIED_SINCE: DWORD = 70;
306 pub const WINHTTP_QUERY_PROXY_SUPPORT: DWORD = 75;
307 pub const WINHTTP_QUERY_AUTHENTICATION_INFO: DWORD = 76;
308 pub const WINHTTP_QUERY_PASSPORT_URLS: DWORD = 77;
309 pub const WINHTTP_QUERY_PASSPORT_CONFIG: DWORD = 78;
310 pub const WINHTTP_QUERY_MAX: DWORD = 78;
311 pub const WINHTTP_QUERY_CUSTOM: DWORD = 65535;
312 pub const WINHTTP_QUERY_FLAG_REQUEST_HEADERS: DWORD = 0x80000000;
313 pub const WINHTTP_QUERY_FLAG_SYSTEMTIME: DWORD = 0x40000000;
314 pub const WINHTTP_QUERY_FLAG_NUMBER: DWORD = 0x20000000;
315 pub const HTTP_STATUS_CONTINUE: DWORD = 100;
316 pub const HTTP_STATUS_SWITCH_PROTOCOLS: DWORD = 101;
317 pub const HTTP_STATUS_OK: DWORD = 200;
318 pub const HTTP_STATUS_CREATED: DWORD = 201;
319 pub const HTTP_STATUS_ACCEPTED: DWORD = 202;
320 pub const HTTP_STATUS_PARTIAL: DWORD = 203;
321 pub const HTTP_STATUS_NO_CONTENT: DWORD = 204;
322 pub const HTTP_STATUS_RESET_CONTENT: DWORD = 205;
323 pub const HTTP_STATUS_PARTIAL_CONTENT: DWORD = 206;
324 pub const HTTP_STATUS_WEBDAV_MULTI_STATUS: DWORD = 207;
325 pub const HTTP_STATUS_AMBIGUOUS: DWORD = 300;
326 pub const HTTP_STATUS_MOVED: DWORD = 301;
327 pub const HTTP_STATUS_REDIRECT: DWORD = 302;
328 pub const HTTP_STATUS_REDIRECT_METHOD: DWORD = 303;
329 pub const HTTP_STATUS_NOT_MODIFIED: DWORD = 304;
330 pub const HTTP_STATUS_USE_PROXY: DWORD = 305;
331 pub const HTTP_STATUS_REDIRECT_KEEP_VERB: DWORD = 307;
332 pub const HTTP_STATUS_BAD_REQUEST: DWORD = 400;
333 pub const HTTP_STATUS_DENIED: DWORD = 401;
334 pub const HTTP_STATUS_PAYMENT_REQ: DWORD = 402;
335 pub const HTTP_STATUS_FORBIDDEN: DWORD = 403;
336 pub const HTTP_STATUS_NOT_FOUND: DWORD = 404;
337 pub const HTTP_STATUS_BAD_METHOD: DWORD = 405;
338 pub const HTTP_STATUS_NONE_ACCEPTABLE: DWORD = 406;
339 pub const HTTP_STATUS_PROXY_AUTH_REQ: DWORD = 407;
340 pub const HTTP_STATUS_REQUEST_TIMEOUT: DWORD = 408;
341 pub const HTTP_STATUS_CONFLICT: DWORD = 409;
342 pub const HTTP_STATUS_GONE: DWORD = 410;
343 pub const HTTP_STATUS_LENGTH_REQUIRED: DWORD = 411;
344 pub const HTTP_STATUS_PRECOND_FAILED: DWORD = 412;
345 pub const HTTP_STATUS_REQUEST_TOO_LARGE: DWORD = 413;
346 pub const HTTP_STATUS_URI_TOO_LONG: DWORD = 414;
347 pub const HTTP_STATUS_UNSUPPORTED_MEDIA: DWORD = 415;
348 pub const HTTP_STATUS_RETRY_WITH: DWORD = 449;
349 pub const HTTP_STATUS_SERVER_ERROR: DWORD = 500;
350 pub const HTTP_STATUS_NOT_SUPPORTED: DWORD = 501;
351 pub const HTTP_STATUS_BAD_GATEWAY: DWORD = 502;
352 pub const HTTP_STATUS_SERVICE_UNAVAIL: DWORD = 503;
353 pub const HTTP_STATUS_GATEWAY_TIMEOUT: DWORD = 504;
354 pub const HTTP_STATUS_VERSION_NOT_SUP: DWORD = 505;
355 pub const HTTP_STATUS_FIRST: DWORD = HTTP_STATUS_CONTINUE;
356 pub const HTTP_STATUS_LAST: DWORD = HTTP_STATUS_VERSION_NOT_SUP;
357 pub const WINHTTP_ACCESS_TYPE_DEFAULT_PROXY: DWORD = 0;
358 pub const WINHTTP_ACCESS_TYPE_NO_PROXY: DWORD = 1;
359 pub const WINHTTP_ACCESS_TYPE_NAMED_PROXY: DWORD = 3;
360 pub const WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY: DWORD = 4;
361 STRUCT!{struct WINHTTP_CURRENT_USER_IE_PROXY_CONFIG {
362     fAutoDetect: BOOL,
363     lpszAutoConfigUrl: LPWSTR,
364     lpszProxy: LPWSTR,
365     lpszProxyBypass: LPWSTR,
366 }}
367 pub const WINHTTP_ERROR_BASE: DWORD = 12000;
368 pub const ERROR_WINHTTP_OUT_OF_HANDLES: DWORD = WINHTTP_ERROR_BASE + 1;
369 pub const ERROR_WINHTTP_TIMEOUT: DWORD = WINHTTP_ERROR_BASE + 2;
370 pub const ERROR_WINHTTP_INTERNAL_ERROR: DWORD = WINHTTP_ERROR_BASE + 4;
371 pub const ERROR_WINHTTP_INVALID_URL: DWORD = WINHTTP_ERROR_BASE + 5;
372 pub const ERROR_WINHTTP_UNRECOGNIZED_SCHEME: DWORD = WINHTTP_ERROR_BASE + 6;
373 pub const ERROR_WINHTTP_NAME_NOT_RESOLVED: DWORD = WINHTTP_ERROR_BASE + 7;
374 pub const ERROR_WINHTTP_INVALID_OPTION: DWORD = WINHTTP_ERROR_BASE + 9;
375 pub const ERROR_WINHTTP_OPTION_NOT_SETTABLE: DWORD = WINHTTP_ERROR_BASE + 11;
376 pub const ERROR_WINHTTP_SHUTDOWN: DWORD = WINHTTP_ERROR_BASE + 12;
377 pub const ERROR_WINHTTP_LOGIN_FAILURE: DWORD = WINHTTP_ERROR_BASE + 15;
378 pub const ERROR_WINHTTP_OPERATION_CANCELLED: DWORD = WINHTTP_ERROR_BASE + 17;
379 pub const ERROR_WINHTTP_INCORRECT_HANDLE_TYPE: DWORD = WINHTTP_ERROR_BASE + 18;
380 pub const ERROR_WINHTTP_INCORRECT_HANDLE_STATE: DWORD = WINHTTP_ERROR_BASE + 19;
381 pub const ERROR_WINHTTP_CANNOT_CONNECT: DWORD = WINHTTP_ERROR_BASE + 29;
382 pub const ERROR_WINHTTP_CONNECTION_ERROR: DWORD = WINHTTP_ERROR_BASE + 30;
383 pub const ERROR_WINHTTP_RESEND_REQUEST: DWORD = WINHTTP_ERROR_BASE + 32;
384 pub const ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED: DWORD = WINHTTP_ERROR_BASE + 44;
385 pub const ERROR_WINHTTP_CANNOT_CALL_BEFORE_OPEN: DWORD = WINHTTP_ERROR_BASE + 100;
386 pub const ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND: DWORD = WINHTTP_ERROR_BASE + 101;
387 pub const ERROR_WINHTTP_CANNOT_CALL_AFTER_SEND: DWORD = WINHTTP_ERROR_BASE + 102;
388 pub const ERROR_WINHTTP_CANNOT_CALL_AFTER_OPEN: DWORD = WINHTTP_ERROR_BASE + 103;
389 pub const ERROR_WINHTTP_HEADER_NOT_FOUND: DWORD = WINHTTP_ERROR_BASE + 150;
390 pub const ERROR_WINHTTP_INVALID_SERVER_RESPONSE: DWORD = WINHTTP_ERROR_BASE + 152;
391 pub const ERROR_WINHTTP_INVALID_HEADER: DWORD = WINHTTP_ERROR_BASE + 153;
392 pub const ERROR_WINHTTP_INVALID_QUERY_REQUEST: DWORD = WINHTTP_ERROR_BASE + 154;
393 pub const ERROR_WINHTTP_HEADER_ALREADY_EXISTS: DWORD = WINHTTP_ERROR_BASE + 155;
394 pub const ERROR_WINHTTP_REDIRECT_FAILED: DWORD = WINHTTP_ERROR_BASE + 156;
395 pub const ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERROR: DWORD = WINHTTP_ERROR_BASE + 178;
396 pub const ERROR_WINHTTP_BAD_AUTO_PROXY_SCRIPT: DWORD = WINHTTP_ERROR_BASE + 166;
397 pub const ERROR_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPT: DWORD = WINHTTP_ERROR_BASE + 167;
398 pub const ERROR_WINHTTP_UNHANDLED_SCRIPT_TYPE: DWORD = WINHTTP_ERROR_BASE + 176;
399 pub const ERROR_WINHTTP_SCRIPT_EXECUTION_ERROR: DWORD = WINHTTP_ERROR_BASE + 177;
400 pub const ERROR_WINHTTP_NOT_INITIALIZED: DWORD = WINHTTP_ERROR_BASE + 172;
401 pub const ERROR_WINHTTP_SECURE_FAILURE: DWORD = WINHTTP_ERROR_BASE + 175;
402 pub const ERROR_WINHTTP_SECURE_CERT_DATE_INVALID: DWORD = WINHTTP_ERROR_BASE + 37;
403 pub const ERROR_WINHTTP_SECURE_CERT_CN_INVALID: DWORD = WINHTTP_ERROR_BASE + 38;
404 pub const ERROR_WINHTTP_SECURE_INVALID_CA: DWORD = WINHTTP_ERROR_BASE + 45;
405 pub const ERROR_WINHTTP_SECURE_CERT_REV_FAILED: DWORD = WINHTTP_ERROR_BASE + 57;
406 pub const ERROR_WINHTTP_SECURE_CHANNEL_ERROR: DWORD = WINHTTP_ERROR_BASE + 157;
407 pub const ERROR_WINHTTP_SECURE_INVALID_CERT: DWORD = WINHTTP_ERROR_BASE + 169;
408 pub const ERROR_WINHTTP_SECURE_CERT_REVOKED: DWORD = WINHTTP_ERROR_BASE + 170;
409 pub const ERROR_WINHTTP_SECURE_CERT_WRONG_USAGE: DWORD = WINHTTP_ERROR_BASE + 179;
410 pub const ERROR_WINHTTP_AUTODETECTION_FAILED: DWORD = WINHTTP_ERROR_BASE + 180;
411 pub const ERROR_WINHTTP_HEADER_COUNT_EXCEEDED: DWORD = WINHTTP_ERROR_BASE + 181;
412 pub const ERROR_WINHTTP_HEADER_SIZE_OVERFLOW: DWORD = WINHTTP_ERROR_BASE + 182;
413 pub const ERROR_WINHTTP_CHUNKED_ENCODING_HEADER_SIZE_OVERFLOW: DWORD = WINHTTP_ERROR_BASE + 183;
414 pub const ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW: DWORD = WINHTTP_ERROR_BASE + 184;
415 pub const ERROR_WINHTTP_CLIENT_CERT_NO_PRIVATE_KEY: DWORD = WINHTTP_ERROR_BASE + 185;
416 pub const ERROR_WINHTTP_CLIENT_CERT_NO_ACCESS_PRIVATE_KEY: DWORD = WINHTTP_ERROR_BASE + 186;
417 pub const WINHTTP_ERROR_LAST: DWORD = WINHTTP_ERROR_BASE + 186;
418 pub const WINHTTP_RESET_STATE: DWORD = 0x00000001;
419 pub const WINHTTP_RESET_SWPAD_CURRENT_NETWORK: DWORD = 0x00000002;
420 pub const WINHTTP_RESET_SWPAD_ALL: DWORD = 0x00000004;
421 pub const WINHTTP_RESET_SCRIPT_CACHE: DWORD = 0x00000008;
422 pub const WINHTTP_RESET_ALL: DWORD = 0x0000FFFF;
423 pub const WINHTTP_RESET_NOTIFY_NETWORK_CHANGED: DWORD = 0x00010000;
424 pub const WINHTTP_RESET_OUT_OF_PROC: DWORD = 0x00020000;
425 extern "system" {
WinHttpSetStatusCallback( hInternet: HINTERNET, lpfnInternetCallback: WINHTTP_STATUS_CALLBACK, dwNotificationFlags: DWORD, dwReserved: DWORD_PTR, ) -> WINHTTP_STATUS_CALLBACK426     pub fn WinHttpSetStatusCallback(
427         hInternet: HINTERNET,
428         lpfnInternetCallback: WINHTTP_STATUS_CALLBACK,
429         dwNotificationFlags: DWORD,
430         dwReserved: DWORD_PTR,
431     ) -> WINHTTP_STATUS_CALLBACK;
WinHttpTimeFromSystemTime( pst: *const SYSTEMTIME, pwszTime: LPWSTR, ) -> BOOL432     pub fn WinHttpTimeFromSystemTime(
433         pst: *const SYSTEMTIME,
434         pwszTime: LPWSTR,
435     ) -> BOOL;
WinHttpTimeToSystemTime( pwszTime: LPCWSTR, pst: *mut SYSTEMTIME ) -> BOOL436     pub fn WinHttpTimeToSystemTime(
437         pwszTime: LPCWSTR,
438         pst: *mut SYSTEMTIME
439     ) -> BOOL;
WinHttpCrackUrl( pwszUrl: LPCWSTR, dwUrlLength: DWORD, dwFlags: DWORD, lpUrlComponents: LPURL_COMPONENTS, ) -> BOOL440     pub fn WinHttpCrackUrl(
441         pwszUrl: LPCWSTR,
442         dwUrlLength: DWORD,
443         dwFlags: DWORD,
444         lpUrlComponents: LPURL_COMPONENTS,
445     ) -> BOOL;
WinHttpCreateUrl( lpUrlComponents: LPURL_COMPONENTS, dwFlags: DWORD, pwszUrl: LPWSTR, pdwUrlLength: LPDWORD, ) -> BOOL446     pub fn WinHttpCreateUrl(
447         lpUrlComponents: LPURL_COMPONENTS,
448         dwFlags: DWORD,
449         pwszUrl: LPWSTR,
450         pdwUrlLength: LPDWORD,
451     ) -> BOOL;
WinHttpCheckPlatform() -> BOOL452     pub fn WinHttpCheckPlatform() -> BOOL;
WinHttpGetDefaultProxyConfiguration( pProxyInfo: *mut WINHTTP_PROXY_INFO, ) -> BOOL453     pub fn WinHttpGetDefaultProxyConfiguration(
454         pProxyInfo: *mut WINHTTP_PROXY_INFO,
455     ) -> BOOL;
WinHttpSetDefaultProxyConfiguration( pProxyInfo: *mut WINHTTP_PROXY_INFO, ) -> BOOL456     pub fn WinHttpSetDefaultProxyConfiguration(
457         pProxyInfo: *mut WINHTTP_PROXY_INFO,
458     ) -> BOOL;
WinHttpOpen( pszAgentW: LPCWSTR, dwAccessType: DWORD, pszProxyW: LPCWSTR, pszProxyBypassW: LPCWSTR, dwFlags: DWORD, ) -> HINTERNET459     pub fn WinHttpOpen(
460         pszAgentW: LPCWSTR,
461         dwAccessType: DWORD,
462         pszProxyW: LPCWSTR,
463         pszProxyBypassW: LPCWSTR,
464         dwFlags: DWORD,
465     ) -> HINTERNET;
WinHttpCloseHandle( hInternet: HINTERNET, ) -> BOOL466     pub fn WinHttpCloseHandle(
467         hInternet: HINTERNET,
468     ) -> BOOL;
WinHttpConnect( hSession: HINTERNET, pswzServerName: LPCWSTR, nServerPort: INTERNET_PORT, dwReserved: DWORD, ) -> HINTERNET469     pub fn WinHttpConnect(
470         hSession: HINTERNET,
471         pswzServerName: LPCWSTR,
472         nServerPort: INTERNET_PORT,
473         dwReserved: DWORD,
474     ) -> HINTERNET;
WinHttpReadData( hRequest: HINTERNET, lpBuffer: LPVOID, dwNumberOfBytesToRead: DWORD, lpdwNumberOfBytesRead: LPDWORD, ) -> BOOL475     pub fn WinHttpReadData(
476         hRequest: HINTERNET,
477         lpBuffer: LPVOID,
478         dwNumberOfBytesToRead: DWORD,
479         lpdwNumberOfBytesRead: LPDWORD,
480     ) -> BOOL;
WinHttpWriteData( hRequest: HINTERNET, lpBuffer: LPCVOID, dwNumberOfBytesToWrite: DWORD, lpdwNumberOfBytesWritten: LPDWORD, ) -> BOOL481     pub fn WinHttpWriteData(
482         hRequest: HINTERNET,
483         lpBuffer: LPCVOID,
484         dwNumberOfBytesToWrite: DWORD,
485         lpdwNumberOfBytesWritten: LPDWORD,
486     ) -> BOOL;
WinHttpQueryDataAvailable( hRequest: HINTERNET, lpdwNumberOfBytesAvailable: LPDWORD, ) -> BOOL487     pub fn WinHttpQueryDataAvailable(
488         hRequest: HINTERNET,
489         lpdwNumberOfBytesAvailable: LPDWORD,
490     ) -> BOOL;
WinHttpQueryOption( hInternet: HINTERNET, dwOption: DWORD, lpBuffer: LPVOID, lpdwBufferLength: LPDWORD, ) -> BOOL491     pub fn WinHttpQueryOption(
492         hInternet: HINTERNET,
493         dwOption: DWORD,
494         lpBuffer: LPVOID,
495         lpdwBufferLength: LPDWORD,
496     ) -> BOOL;
WinHttpSetOption( hInternet: HINTERNET, dwOption: DWORD, lpBuffer: LPVOID, dwBufferLength: DWORD, ) -> BOOL497     pub fn WinHttpSetOption(
498         hInternet: HINTERNET,
499         dwOption: DWORD,
500         lpBuffer: LPVOID,
501         dwBufferLength: DWORD,
502     ) -> BOOL;
WinHttpSetTimeouts( hInternet: HINTERNET, nResolveTimeout: c_int, nConnectTimeout: c_int, nSendTimeout: c_int, nReceiveTimeout: c_int, ) -> BOOL503     pub fn WinHttpSetTimeouts(
504         hInternet: HINTERNET,
505         nResolveTimeout: c_int,
506         nConnectTimeout: c_int,
507         nSendTimeout: c_int,
508         nReceiveTimeout: c_int,
509     ) -> BOOL;
WinHttpOpenRequest( hConnect: HINTERNET, pwszVerb: LPCWSTR, pwszObjectName: LPCWSTR, pwszVersion: LPCWSTR, pwszReferrer: LPCWSTR, ppwszAcceptTypes: *mut LPCWSTR, dwFlags: DWORD, ) -> HINTERNET510     pub fn WinHttpOpenRequest(
511         hConnect: HINTERNET,
512         pwszVerb: LPCWSTR,
513         pwszObjectName: LPCWSTR,
514         pwszVersion: LPCWSTR,
515         pwszReferrer: LPCWSTR,
516         ppwszAcceptTypes: *mut LPCWSTR,
517         dwFlags: DWORD,
518     ) -> HINTERNET;
WinHttpAddRequestHeaders( hRequest: HINTERNET, lpszHeaders: LPCWSTR, dwHeadersLength: DWORD, dwModifiers: DWORD, ) -> BOOL519     pub fn WinHttpAddRequestHeaders(
520         hRequest: HINTERNET,
521         lpszHeaders: LPCWSTR,
522         dwHeadersLength: DWORD,
523         dwModifiers: DWORD,
524     ) -> BOOL;
WinHttpSendRequest( hRequest: HINTERNET, lpszHeaders: LPCWSTR, dwHeadersLength: DWORD, lpOptional: LPVOID, dwOptionalLength: DWORD, dwTotalLength: DWORD, dwContext: DWORD_PTR, ) -> BOOL525     pub fn WinHttpSendRequest(
526         hRequest: HINTERNET,
527         lpszHeaders: LPCWSTR,
528         dwHeadersLength: DWORD,
529         lpOptional: LPVOID,
530         dwOptionalLength: DWORD,
531         dwTotalLength: DWORD,
532         dwContext: DWORD_PTR,
533     ) -> BOOL;
WinHttpSetCredentials( hRequest: HINTERNET, AuthTargets: DWORD, AuthScheme: DWORD, pwszUserName: LPCWSTR, pwszPassword: LPCWSTR, pAuthParams: LPVOID, ) -> BOOL534     pub fn WinHttpSetCredentials(
535         hRequest: HINTERNET,
536         AuthTargets: DWORD,
537         AuthScheme: DWORD,
538         pwszUserName: LPCWSTR,
539         pwszPassword: LPCWSTR,
540         pAuthParams: LPVOID,
541     ) -> BOOL;
WinHttpQueryAuthSchemes( hRequest: HINTERNET, lpdwSupportedSchemes: LPDWORD, lpdwFirstScheme: LPDWORD, pdwAuthTarget: LPDWORD, ) -> BOOL542     pub fn WinHttpQueryAuthSchemes(
543         hRequest: HINTERNET,
544         lpdwSupportedSchemes: LPDWORD,
545         lpdwFirstScheme: LPDWORD,
546         pdwAuthTarget: LPDWORD,
547     ) -> BOOL;
WinHttpReceiveResponse( hRequest: HINTERNET, lpReserved: LPVOID, ) -> BOOL548     pub fn WinHttpReceiveResponse(
549         hRequest: HINTERNET,
550         lpReserved: LPVOID,
551     ) -> BOOL;
WinHttpQueryHeaders( hRequest: HINTERNET, dwInfoLevel: DWORD, pwszName: LPCWSTR, lpBuffer: LPVOID, lpdwBufferLength: LPDWORD, lpdwIndex: LPDWORD, ) -> BOOL552     pub fn WinHttpQueryHeaders(
553         hRequest: HINTERNET,
554         dwInfoLevel: DWORD,
555         pwszName: LPCWSTR,
556         lpBuffer: LPVOID,
557         lpdwBufferLength: LPDWORD,
558         lpdwIndex: LPDWORD,
559     ) -> BOOL;
WinHttpDetectAutoProxyConfigUrl( dwAutoDetectFlags: DWORD, ppwstrAutoConfigUrl: *mut LPWSTR, ) -> BOOL560     pub fn WinHttpDetectAutoProxyConfigUrl(
561         dwAutoDetectFlags: DWORD,
562         ppwstrAutoConfigUrl: *mut LPWSTR,
563     ) -> BOOL;
WinHttpGetProxyForUrl( hSession: HINTERNET, lpcwszUrl: LPCWSTR, pAutoProxyOptions: *mut WINHTTP_AUTOPROXY_OPTIONS, pProxyInfo: *mut WINHTTP_PROXY_INFO, ) -> BOOL564     pub fn WinHttpGetProxyForUrl(
565         hSession: HINTERNET,
566         lpcwszUrl: LPCWSTR,
567         pAutoProxyOptions: *mut WINHTTP_AUTOPROXY_OPTIONS,
568         pProxyInfo: *mut WINHTTP_PROXY_INFO,
569     ) -> BOOL;
WinHttpCreateProxyResolver( hSession: HINTERNET, phResolver: *mut HINTERNET, ) -> DWORD570     pub fn WinHttpCreateProxyResolver(
571         hSession: HINTERNET,
572         phResolver: *mut HINTERNET,
573     ) -> DWORD;
WinHttpGetProxyForUrlEx( hResolver: HINTERNET, pcwszUrl: PCWSTR, pAutoProxyOptions: *mut WINHTTP_AUTOPROXY_OPTIONS, pContext: DWORD_PTR, ) -> DWORD574     pub fn WinHttpGetProxyForUrlEx(
575         hResolver: HINTERNET,
576         pcwszUrl: PCWSTR,
577         pAutoProxyOptions: *mut WINHTTP_AUTOPROXY_OPTIONS,
578         pContext: DWORD_PTR,
579     ) -> DWORD;
WinHttpGetProxyResult( hResolver: HINTERNET, pProxyResult: *mut WINHTTP_PROXY_RESULT, ) -> DWORD580     pub fn WinHttpGetProxyResult(
581         hResolver: HINTERNET,
582         pProxyResult: *mut WINHTTP_PROXY_RESULT,
583     ) -> DWORD;
WinHttpFreeProxyResult( pProxyResult: *mut WINHTTP_PROXY_RESULT, )584     pub fn WinHttpFreeProxyResult(
585         pProxyResult: *mut WINHTTP_PROXY_RESULT,
586     );
WinHttpResetAutoProxy( hSession: HINTERNET, dwFlags: DWORD, ) -> DWORD587     pub fn WinHttpResetAutoProxy(
588         hSession: HINTERNET,
589         dwFlags: DWORD,
590     ) -> DWORD;
WinHttpGetIEProxyConfigForCurrentUser( pProxyConfig: *mut WINHTTP_CURRENT_USER_IE_PROXY_CONFIG, ) -> BOOL591     pub fn WinHttpGetIEProxyConfigForCurrentUser(
592         pProxyConfig: *mut WINHTTP_CURRENT_USER_IE_PROXY_CONFIG,
593     ) -> BOOL;
594 }
595 ENUM!{enum WINHTTP_WEB_SOCKET_OPERATION {
596     WINHTTP_WEB_SOCKET_SEND_OPERATION = 0,
597     WINHTTP_WEB_SOCKET_RECEIVE_OPERATION = 1,
598     WINHTTP_WEB_SOCKET_CLOSE_OPERATION = 2,
599     WINHTTP_WEB_SOCKET_SHUTDOWN_OPERATION = 3,
600 }}
601 ENUM!{enum WINHTTP_WEB_SOCKET_BUFFER_TYPE {
602     WINHTTP_WEB_SOCKET_BINARY_MESSAGE_BUFFER_TYPE = 0,
603     WINHTTP_WEB_SOCKET_BINARY_FRAGMENT_BUFFER_TYPE = 1,
604     WINHTTP_WEB_SOCKET_UTF8_MESSAGE_BUFFER_TYPE = 2,
605     WINHTTP_WEB_SOCKET_UTF8_FRAGMENT_BUFFER_TYPE = 3,
606     WINHTTP_WEB_SOCKET_CLOSE_BUFFER_TYPE = 4,
607 }}
608 ENUM!{enum WINHTTP_WEB_SOCKET_CLOSE_STATUS {
609     WINHTTP_WEB_SOCKET_SUCCESS_CLOSE_STATUS = 1000,
610     WINHTTP_WEB_SOCKET_ENDPOINT_TERMINATED_CLOSE_STATUS = 1001,
611     WINHTTP_WEB_SOCKET_PROTOCOL_ERROR_CLOSE_STATUS = 1002,
612     WINHTTP_WEB_SOCKET_INVALID_DATA_TYPE_CLOSE_STATUS = 1003,
613     WINHTTP_WEB_SOCKET_EMPTY_CLOSE_STATUS = 1005,
614     WINHTTP_WEB_SOCKET_ABORTED_CLOSE_STATUS = 1006,
615     WINHTTP_WEB_SOCKET_INVALID_PAYLOAD_CLOSE_STATUS = 1007,
616     WINHTTP_WEB_SOCKET_POLICY_VIOLATION_CLOSE_STATUS = 1008,
617     WINHTTP_WEB_SOCKET_MESSAGE_TOO_BIG_CLOSE_STATUS = 1009,
618     WINHTTP_WEB_SOCKET_UNSUPPORTED_EXTENSIONS_CLOSE_STATUS = 1010,
619     WINHTTP_WEB_SOCKET_SERVER_ERROR_CLOSE_STATUS = 1011,
620     WINHTTP_WEB_SOCKET_SECURE_HANDSHAKE_ERROR_CLOSE_STATUS = 1015,
621 }}
622 extern "system" {
WinHttpWebSocketCompleteUpgrade( hRequest: HINTERNET, pContext: DWORD_PTR, ) -> HINTERNET623     pub fn WinHttpWebSocketCompleteUpgrade(
624         hRequest: HINTERNET,
625         pContext: DWORD_PTR,
626     ) -> HINTERNET;
WinHttpWebSocketSend( hWebSocket: HINTERNET, eBufferType: WINHTTP_WEB_SOCKET_BUFFER_TYPE, pvBuffer: PVOID, dwBufferLength: DWORD, ) -> DWORD627     pub fn WinHttpWebSocketSend(
628         hWebSocket: HINTERNET,
629         eBufferType: WINHTTP_WEB_SOCKET_BUFFER_TYPE,
630         pvBuffer: PVOID,
631         dwBufferLength: DWORD,
632     ) -> DWORD;
WinHttpWebSocketReceive( hWebSocket: HINTERNET, pvBuffer: PVOID, dwBufferLength: DWORD, pdwBytesRead: *mut DWORD, peBufferType: *mut WINHTTP_WEB_SOCKET_BUFFER_TYPE, ) -> DWORD633     pub fn WinHttpWebSocketReceive(
634         hWebSocket: HINTERNET,
635         pvBuffer: PVOID,
636         dwBufferLength: DWORD,
637         pdwBytesRead: *mut DWORD,
638         peBufferType: *mut WINHTTP_WEB_SOCKET_BUFFER_TYPE,
639     ) -> DWORD;
WinHttpWebSocketShutdown( hWebSocket: HINTERNET, usStatus: USHORT, pvReason: PVOID, dwReasonLength: DWORD, ) -> DWORD640     pub fn WinHttpWebSocketShutdown(
641         hWebSocket: HINTERNET,
642         usStatus: USHORT,
643         pvReason: PVOID,
644         dwReasonLength: DWORD,
645     ) -> DWORD;
WinHttpWebSocketClose( hWebSocket: HINTERNET, usStatus: USHORT, pvReason: PVOID, dwReasonLength: DWORD, ) -> DWORD646     pub fn WinHttpWebSocketClose(
647         hWebSocket: HINTERNET,
648         usStatus: USHORT,
649         pvReason: PVOID,
650         dwReasonLength: DWORD,
651     ) -> DWORD;
WinHttpWebSocketQueryCloseStatus( hWebSocket: HINTERNET, pusStatus: *mut USHORT, pvReason: PVOID, dwReasonLength: DWORD, pdwReasonLengthConsumed: *mut DWORD, ) -> DWORD652     pub fn WinHttpWebSocketQueryCloseStatus(
653         hWebSocket: HINTERNET,
654         pusStatus: *mut USHORT,
655         pvReason: PVOID,
656         dwReasonLength: DWORD,
657         pdwReasonLengthConsumed: *mut DWORD,
658     ) -> DWORD;
659 }
660