1 /**
2 * Windows API header module
3 *
4 * Translated from MinGW Windows headers
5 *
6 * Authors: Stewart Gordon
7 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
8 * Source: $(DRUNTIMESRC src/core/sys/windows/_wininet.d)
9 */
10 module core.sys.windows.wininet;
version(Windows)11 version (Windows):
12 @system:
13
14 version (ANSI) {} else version = Unicode;
15 pragma(lib, "wininet");
16
17 // FIXME: check types and grouping of constants
18
19 import core.sys.windows.winbase, core.sys.windows.windef;
20
21 // From Winineti.h
22 enum {
23 INTERNET_FLAG_BGUPDATE = 0x00000008,
24 }
25
26 enum {
27 INTERNET_INVALID_PORT_NUMBER = 0,
28 INTERNET_DEFAULT_FTP_PORT = 21,
29 INTERNET_DEFAULT_GOPHER_PORT = 70,
30 INTERNET_DEFAULT_HTTP_PORT = 80,
31 INTERNET_DEFAULT_HTTPS_PORT = 443,
32 INTERNET_DEFAULT_SOCKS_PORT = 1080
33 }
34
35 enum size_t
36 MAX_CACHE_ENTRY_INFO_SIZE = 4096,
37 INTERNET_MAX_HOST_NAME_LENGTH = 256,
38 INTERNET_MAX_USER_NAME_LENGTH = 128,
39 INTERNET_MAX_PASSWORD_LENGTH = 128,
40 INTERNET_MAX_PORT_NUMBER_LENGTH = 5,
41 INTERNET_MAX_PORT_NUMBER_VALUE = 65535,
42 INTERNET_MAX_PATH_LENGTH = 2048,
43 INTERNET_MAX_SCHEME_LENGTH = 32,
44 INTERNET_MAX_URL_LENGTH = INTERNET_MAX_SCHEME_LENGTH
45 + "://".length
46 + INTERNET_MAX_PATH_LENGTH;
47
48 enum : DWORD {
49 INTERNET_KEEP_ALIVE_UNKNOWN = DWORD.max,
50 INTERNET_KEEP_ALIVE_DISABLED = 0,
51 INTERNET_KEEP_ALIVE_ENABLED
52 }
53
54 enum {
55 INTERNET_REQFLAG_FROM_CACHE = 0x00000001,
56 INTERNET_REQFLAG_ASYNC = 0x00000002,
57 INTERNET_REQFLAG_VIA_PROXY = 0x00000004,
58 INTERNET_REQFLAG_NO_HEADERS = 0x00000008,
59 INTERNET_REQFLAG_PASSIVE = 0x00000010,
60 INTERNET_REQFLAG_CACHE_WRITE_DISABLED = 0x00000040,
61 INTERNET_REQFLAG_NET_TIMEOUT = 0x00000080,
62 }
63
64 enum {
65 INTERNET_FLAG_IDN_DIRECT = 0x00000001,
66 INTERNET_FLAG_IDN_PROXY = 0x00000002
67 }
68
69 enum DWORD
70 INTERNET_FLAG_RELOAD = 0x80000000,
71 INTERNET_FLAG_RAW_DATA = 0x40000000,
72 INTERNET_FLAG_EXISTING_CONNECT = 0x20000000,
73 INTERNET_FLAG_ASYNC = 0x10000000,
74 INTERNET_FLAG_PASSIVE = 0x08000000,
75 INTERNET_FLAG_NO_CACHE_WRITE = 0x04000000,
76 INTERNET_FLAG_DONT_CACHE = INTERNET_FLAG_NO_CACHE_WRITE,
77 INTERNET_FLAG_MAKE_PERSISTENT = 0x02000000,
78 INTERNET_FLAG_FROM_CACHE = 0x01000000,
79 INTERNET_FLAG_OFFLINE = INTERNET_FLAG_FROM_CACHE,
80 INTERNET_FLAG_SECURE = 0x00800000,
81 INTERNET_FLAG_KEEP_CONNECTION = 0x00400000,
82 INTERNET_FLAG_NO_AUTO_REDIRECT = 0x00200000,
83 INTERNET_FLAG_READ_PREFETCH = 0x00100000,
84 INTERNET_FLAG_NO_COOKIES = 0x00080000,
85 INTERNET_FLAG_NO_AUTH = 0x00040000,
86 INTERNET_FLAG_RESTRICTED_ZONE = 0x00020000,
87 INTERNET_FLAG_CACHE_IF_NET_FAIL = 0x00010000,
88 INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP = 0x00008000,
89 INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS = 0x00004000,
90 INTERNET_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000,
91 INTERNET_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000,
92 INTERNET_FLAG_RESYNCHRONIZE = 0x00000800,
93 INTERNET_FLAG_HYPERLINK = 0x00000400,
94 INTERNET_FLAG_NO_UI = 0x00000200,
95 INTERNET_FLAG_PRAGMA_NOCACHE = 0x00000100,
96 INTERNET_FLAG_CACHE_ASYNC = 0x00000080,
97 INTERNET_FLAG_FORMS_SUBMIT = 0x00000040,
98 INTERNET_FLAG_FWD_BACK = 0x00000020,
99 INTERNET_FLAG_NEED_FILE = 0x00000010,
100 INTERNET_FLAG_MUST_CACHE_REQUEST = INTERNET_FLAG_NEED_FILE,
101 INTERNET_FLAG_TRANSFER_ASCII = FTP_TRANSFER_TYPE_ASCII,
102 INTERNET_FLAG_TRANSFER_BINARY = FTP_TRANSFER_TYPE_BINARY,
103
104 SECURITY_INTERNET_MASK = INTERNET_FLAG_IGNORE_CERT_CN_INVALID |
105 INTERNET_FLAG_IGNORE_CERT_DATE_INVALID |
106 INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS |
107 INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP,
108
109 SECURITY_SET_MASK = SECURITY_INTERNET_MASK,
110
111 INTERNET_FLAGS_MASK = INTERNET_FLAG_RELOAD
112 | INTERNET_FLAG_RAW_DATA
113 | INTERNET_FLAG_EXISTING_CONNECT
114 | INTERNET_FLAG_ASYNC
115 | INTERNET_FLAG_PASSIVE
116 | INTERNET_FLAG_NO_CACHE_WRITE
117 | INTERNET_FLAG_MAKE_PERSISTENT
118 | INTERNET_FLAG_FROM_CACHE
119 | INTERNET_FLAG_SECURE
120 | INTERNET_FLAG_KEEP_CONNECTION
121 | INTERNET_FLAG_NO_AUTO_REDIRECT
122 | INTERNET_FLAG_READ_PREFETCH
123 | INTERNET_FLAG_NO_COOKIES
124 | INTERNET_FLAG_NO_AUTH
125 | INTERNET_FLAG_CACHE_IF_NET_FAIL
126 | SECURITY_INTERNET_MASK
127 | INTERNET_FLAG_RESYNCHRONIZE
128 | INTERNET_FLAG_HYPERLINK
129 | INTERNET_FLAG_NO_UI
130 | INTERNET_FLAG_PRAGMA_NOCACHE
131 | INTERNET_FLAG_CACHE_ASYNC
132 | INTERNET_FLAG_FORMS_SUBMIT
133 | INTERNET_FLAG_NEED_FILE
134 | INTERNET_FLAG_RESTRICTED_ZONE
135 | INTERNET_FLAG_TRANSFER_BINARY
136 | INTERNET_FLAG_TRANSFER_ASCII
137 | INTERNET_FLAG_FWD_BACK
138 | INTERNET_FLAG_BGUPDATE,
139
140 INTERNET_ERROR_MASK_INSERT_CDROM = 0x1,
141 INTERNET_ERROR_MASK_COMBINED_SEC_CERT = 0x2,
142 INTERNET_ERROR_MASK_NEED_MSN_SSPI_PKG = 0X4,
143 INTERNET_ERROR_MASK_LOGIN_FAILURE_DISPLAY_ENTITY_BODY = 0x8,
144
145 INTERNET_OPTIONS_MASK = ~INTERNET_FLAGS_MASK;
146
147 enum INTERNET_NO_CALLBACK = 0;
148 enum INTERNET_RFC1123_FORMAT = 0;
149 enum size_t INTERNET_RFC1123_BUFSIZE = 30;
150
151 enum DWORD
152 ICU_ESCAPE = 0x80000000,
153 ICU_USERNAME = 0x40000000,
154 ICU_NO_ENCODE = 0x20000000,
155 ICU_DECODE = 0x10000000,
156 ICU_NO_META = 0x08000000,
157 ICU_ENCODE_SPACES_ONLY = 0x04000000,
158 ICU_BROWSER_MODE = 0x02000000;
159
160 enum {
161 INTERNET_OPEN_TYPE_PRECONFIG = 0,
162 INTERNET_OPEN_TYPE_DIRECT = 1,
163 INTERNET_OPEN_TYPE_PROXY = 3,
164 PRE_CONFIG_INTERNET_ACCESS = INTERNET_OPEN_TYPE_PRECONFIG,
165 LOCAL_INTERNET_ACCESS = INTERNET_OPEN_TYPE_DIRECT,
166 GATEWAY_INTERNET_ACCESS = 2,
167 CERN_PROXY_INTERNET_ACCESS = INTERNET_OPEN_TYPE_PROXY,
168 }
169
170 enum ISO_GLOBAL = 1;
171 enum ISO_REGISTRY = 2;
172 enum ISO_VALID_FLAGS = ISO_GLOBAL | ISO_REGISTRY;
173
174 enum {
175 INTERNET_OPTION_CALLBACK = 1,
176 INTERNET_OPTION_CONNECT_TIMEOUT,
177 INTERNET_OPTION_CONNECT_RETRIES,
178 INTERNET_OPTION_CONNECT_BACKOFF,
179 INTERNET_OPTION_SEND_TIMEOUT,
180 INTERNET_OPTION_CONTROL_SEND_TIMEOUT = INTERNET_OPTION_SEND_TIMEOUT,
181 INTERNET_OPTION_RECEIVE_TIMEOUT,
182 INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT = INTERNET_OPTION_RECEIVE_TIMEOUT,
183 INTERNET_OPTION_DATA_SEND_TIMEOUT,
184 INTERNET_OPTION_DATA_RECEIVE_TIMEOUT,
185 INTERNET_OPTION_HANDLE_TYPE = 9,
186 INTERNET_OPTION_LISTEN_TIMEOUT = 11,
187 INTERNET_OPTION_READ_BUFFER_SIZE,
188 INTERNET_OPTION_WRITE_BUFFER_SIZE, // = 13
189 INTERNET_OPTION_ASYNC_ID = 15,
190 INTERNET_OPTION_ASYNC_PRIORITY, // = 16
191 INTERNET_OPTION_PARENT_HANDLE = 21,
192 INTERNET_OPTION_KEEP_CONNECTION,
193 INTERNET_OPTION_REQUEST_FLAGS,
194 INTERNET_OPTION_EXTENDED_ERROR, // = 24
195 INTERNET_OPTION_OFFLINE_MODE = 26,
196 INTERNET_OPTION_CACHE_STREAM_HANDLE,
197 INTERNET_OPTION_USERNAME,
198 INTERNET_OPTION_PASSWORD,
199 INTERNET_OPTION_ASYNC,
200 INTERNET_OPTION_SECURITY_FLAGS,
201 INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT,
202 INTERNET_OPTION_DATAFILE_NAME,
203 INTERNET_OPTION_URL,
204 INTERNET_OPTION_SECURITY_CERTIFICATE,
205 INTERNET_OPTION_SECURITY_KEY_BITNESS,
206 INTERNET_OPTION_REFRESH,
207 INTERNET_OPTION_PROXY,
208 INTERNET_OPTION_SETTINGS_CHANGED,
209 INTERNET_OPTION_VERSION,
210 INTERNET_OPTION_USER_AGENT,
211 INTERNET_OPTION_END_BROWSER_SESSION,
212 INTERNET_OPTION_PROXY_USERNAME,
213 INTERNET_OPTION_PROXY_PASSWORD, // = 44
214 INTERNET_OPTION_CONTEXT_VALUE = 45,
215 INTERNET_OPTION_CONNECT_LIMIT = 46,
216 INTERNET_OPTION_SECURITY_SELECT_CLIENT_CERT= 47,
217 INTERNET_OPTION_POLICY = 48,
218 INTERNET_OPTION_DISCONNECTED_TIMEOUT = 49,
219 INTERNET_OPTION_CONNECTED_STATE = 50,
220 INTERNET_OPTION_IDLE_STATE = 51,
221 INTERNET_OPTION_OFFLINE_SEMANTICS = 52,
222 INTERNET_OPTION_SECONDARY_CACHE_KEY = 53,
223 INTERNET_OPTION_CALLBACK_FILTER = 54,
224 INTERNET_OPTION_CONNECT_TIME = 55,
225 INTERNET_OPTION_SEND_THROUGHPUT = 56,
226 INTERNET_OPTION_RECEIVE_THROUGHPUT = 57,
227 INTERNET_OPTION_REQUEST_PRIORITY = 58,
228 INTERNET_OPTION_HTTP_VERSION = 59,
229 INTERNET_OPTION_RESET_URLCACHE_SESSION = 60,
230 INTERNET_OPTION_ERROR_MASK = 62,
231 INTERNET_OPTION_FROM_CACHE_TIMEOUT = 63,
232 INTERNET_OPTION_BYPASS_EDITED_ENTRY = 64,
233 INTERNET_OPTION_HTTP_DECODING = 65,
234 INTERNET_OPTION_DIAGNOSTIC_SOCKET_INFO = 67,
235 INTERNET_OPTION_CODEPAGE = 68,
236 INTERNET_OPTION_CACHE_TIMESTAMPS = 69,
237 INTERNET_OPTION_DISABLE_AUTODIAL = 70,
238 INTERNET_OPTION_MAX_CONNS_PER_SERVER = 73,
239 INTERNET_OPTION_MAX_CONNS_PER_1_0_SERVER= 74,
240 INTERNET_OPTION_PER_CONNECTION_OPTION = 75,
241 INTERNET_OPTION_DIGEST_AUTH_UNLOAD = 76,
242 INTERNET_OPTION_IGNORE_OFFLINE = 77,
243 INTERNET_OPTION_IDENTITY = 78,
244 INTERNET_OPTION_REMOVE_IDENTITY = 79,
245 INTERNET_OPTION_ALTER_IDENTITY = 80,
246 INTERNET_OPTION_SUPPRESS_BEHAVIOR = 81,
247 INTERNET_OPTION_AUTODIAL_MODE = 82,
248 INTERNET_OPTION_AUTODIAL_CONNECTION = 83,
249 INTERNET_OPTION_CLIENT_CERT_CONTEXT = 84,
250 INTERNET_OPTION_AUTH_FLAGS = 85,
251 INTERNET_OPTION_COOKIES_3RD_PARTY = 86,
252 INTERNET_OPTION_DISABLE_PASSPORT_AUTH = 87,
253 INTERNET_OPTION_SEND_UTF8_SERVERNAME_TO_PROXY = 88,
254 INTERNET_OPTION_EXEMPT_CONNECTION_LIMIT = 89,
255 INTERNET_OPTION_ENABLE_PASSPORT_AUTH = 90,
256 INTERNET_OPTION_HIBERNATE_INACTIVE_WORKER_THREADS = 91,
257 INTERNET_OPTION_ACTIVATE_WORKER_THREADS = 92,
258 INTERNET_OPTION_RESTORE_WORKER_THREAD_DEFAULTS = 93,
259 INTERNET_OPTION_SOCKET_SEND_BUFFER_LENGTH = 94,
260 INTERNET_OPTION_PROXY_SETTINGS_CHANGED = 95,
261 INTERNET_OPTION_DATAFILE_EXT = 96,
262 INTERNET_OPTION_CODEPAGE_PATH = 100,
263 INTERNET_OPTION_CODEPAGE_EXTRA = 101,
264 INTERNET_OPTION_IDN = 102,
265 INTERNET_OPTION_MAX_CONNS_PER_PROXY = 103,
266 INTERNET_OPTION_SUPPRESS_SERVER_AUTH = 104,
267 INTERNET_OPTION_SERVER_CERT_CHAIN_CONTEXT = 105,
268 INTERNET_OPTION_ENABLE_REDIRECT_CACHE_READ = 122,
269 INTERNET_OPTION_COMPRESSED_CONTENT_LENGTH = 147,
270 INTERNET_OPTION_ENABLE_HTTP_PROTOCOL = 148,
271 INTERNET_OPTION_HTTP_PROTOCOL_USED = 149,
272 INTERNET_OPTION_ENCODE_EXTRA = 155,
273 INTERNET_OPTION_HSTS = 157,
274 INTERNET_OPTION_ENTERPRISE_CONTEXT = 159,
275 INTERNET_OPTION_CONNECTION_FILTER = 162,
276 INTERNET_OPTION_REFERER_TOKEN_BINDING_HOSTNAME = 163,
277 INTERNET_OPTION_TOKEN_BINDING_PUBLIC_KEY = 181,
278 INTERNET_OPTION_COOKIES_SAME_SITE_LEVEL = 187,
279 INTERNET_FIRST_OPTION = INTERNET_OPTION_CALLBACK,
280 INTERNET_LAST_OPTION = INTERNET_OPTION_COOKIES_SAME_SITE_LEVEL,
281 }
282
283 enum INTERNET_PRIORITY_FOREGROUND = 1000;
284
285 enum {
286 INTERNET_HANDLE_TYPE_INTERNET = 1,
287 INTERNET_HANDLE_TYPE_CONNECT_FTP,
288 INTERNET_HANDLE_TYPE_CONNECT_GOPHER,
289 INTERNET_HANDLE_TYPE_CONNECT_HTTP,
290 INTERNET_HANDLE_TYPE_FTP_FIND,
291 INTERNET_HANDLE_TYPE_FTP_FIND_HTML,
292 INTERNET_HANDLE_TYPE_FTP_FILE,
293 INTERNET_HANDLE_TYPE_FTP_FILE_HTML,
294 INTERNET_HANDLE_TYPE_GOPHER_FIND,
295 INTERNET_HANDLE_TYPE_GOPHER_FIND_HTML,
296 INTERNET_HANDLE_TYPE_GOPHER_FILE,
297 INTERNET_HANDLE_TYPE_GOPHER_FILE_HTML,
298 INTERNET_HANDLE_TYPE_HTTP_REQUEST
299 }
300
301 enum DWORD
302 SECURITY_FLAG_SECURE = 0x00000001,
303 SECURITY_FLAG_SSL = 0x00000002,
304 SECURITY_FLAG_SSL3 = 0x00000004,
305 SECURITY_FLAG_PCT = 0x00000008,
306 SECURITY_FLAG_PCT4 = 0x00000010,
307 SECURITY_FLAG_IETFSSL4 = 0x00000020,
308 SECURITY_FLAG_IGNORE_REVOCATION = 0x00000080,
309 SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100,
310 SECURITY_FLAG_IGNORE_WRONG_USAGE = 0x00000200,
311 SECURITY_FLAG_40BIT = 0x10000000,
312 SECURITY_FLAG_128BIT = 0x20000000,
313 SECURITY_FLAG_56BIT = 0x40000000,
314 SECURITY_FLAG_UNKNOWNBIT = 0x80000000,
315 SECURITY_FLAG_NORMALBITNESS = SECURITY_FLAG_40BIT,
316 SECURITY_FLAG_IGNORE_CERT_CN_INVALID = INTERNET_FLAG_IGNORE_CERT_CN_INVALID,
317 SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = INTERNET_FLAG_IGNORE_CERT_DATE_INVALID,
318 SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTPS = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS,
319 SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTP = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP;
320
321 enum {
322 INTERNET_SERVICE_FTP = 1,
323 INTERNET_SERVICE_GOPHER,
324 INTERNET_SERVICE_HTTP
325 }
326
327 enum {
328 INTERNET_STATUS_RESOLVING_NAME = 10,
329 INTERNET_STATUS_NAME_RESOLVED = 11,
330 INTERNET_STATUS_CONNECTING_TO_SERVER = 20,
331 INTERNET_STATUS_CONNECTED_TO_SERVER = 21,
332 INTERNET_STATUS_SENDING_REQUEST = 30,
333 INTERNET_STATUS_REQUEST_SENT = 31,
334 INTERNET_STATUS_RECEIVING_RESPONSE = 40,
335 INTERNET_STATUS_RESPONSE_RECEIVED = 41,
336 INTERNET_STATUS_CTL_RESPONSE_RECEIVED = 42,
337 INTERNET_STATUS_PREFETCH = 43,
338 INTERNET_STATUS_CLOSING_CONNECTION = 50,
339 INTERNET_STATUS_CONNECTION_CLOSED = 51,
340 INTERNET_STATUS_HANDLE_CREATED = 60,
341 INTERNET_STATUS_HANDLE_CLOSING = 70,
342 INTERNET_STATUS_REQUEST_COMPLETE = 100,
343 INTERNET_STATUS_REDIRECT = 110
344 }
345
346 enum {
347 FTP_TRANSFER_TYPE_UNKNOWN = 0,
348 FTP_TRANSFER_TYPE_ASCII = 1,
349 FTP_TRANSFER_TYPE_BINARY = 2,
350 FTP_TRANSFER_TYPE_MASK = 3
351 }
352
353 enum size_t
354 MAX_GOPHER_DISPLAY_TEXT = 128,
355 MAX_GOPHER_SELECTOR_TEXT = 256,
356 MAX_GOPHER_HOST_NAME = INTERNET_MAX_HOST_NAME_LENGTH,
357 MAX_GOPHER_LOCATOR_LENGTH
358 = 1 + MAX_GOPHER_DISPLAY_TEXT + 1 + MAX_GOPHER_SELECTOR_TEXT + 1
359 + MAX_GOPHER_HOST_NAME + 1 + INTERNET_MAX_PORT_NUMBER_LENGTH + 4;
360
361 enum DWORD
362 GOPHER_TYPE_TEXT_FILE = 0x00000001,
363 GOPHER_TYPE_DIRECTORY = 0x00000002,
364 GOPHER_TYPE_CSO = 0x00000004,
365 GOPHER_TYPE_ERROR = 0x00000008,
366 GOPHER_TYPE_MAC_BINHEX = 0x00000010,
367 GOPHER_TYPE_DOS_ARCHIVE = 0x00000020,
368 GOPHER_TYPE_UNIX_UUENCODED = 0x00000040,
369 GOPHER_TYPE_INDEX_SERVER = 0x00000080,
370 GOPHER_TYPE_TELNET = 0x00000100,
371 GOPHER_TYPE_BINARY = 0x00000200,
372 GOPHER_TYPE_REDUNDANT = 0x00000400,
373 GOPHER_TYPE_TN3270 = 0x00000800,
374 GOPHER_TYPE_GIF = 0x00001000,
375 GOPHER_TYPE_IMAGE = 0x00002000,
376 GOPHER_TYPE_BITMAP = 0x00004000,
377 GOPHER_TYPE_MOVIE = 0x00008000,
378 GOPHER_TYPE_SOUND = 0x00010000,
379 GOPHER_TYPE_HTML = 0x00020000,
380 GOPHER_TYPE_PDF = 0x00040000,
381 GOPHER_TYPE_CALENDAR = 0x00080000,
382 GOPHER_TYPE_INLINE = 0x00100000,
383 GOPHER_TYPE_UNKNOWN = 0x20000000,
384 GOPHER_TYPE_ASK = 0x40000000,
385 GOPHER_TYPE_GOPHER_PLUS = 0x80000000,
386 GOPHER_TYPE_FILE_MASK = 0x001FF271;
387
IS_GOPHER_FILE(DWORD t)388 BOOL IS_GOPHER_FILE(DWORD t) {
389 return !!(t & GOPHER_TYPE_FILE_MASK);
390 }
391
IS_GOPHER_DIRECTORY(DWORD t)392 BOOL IS_GOPHER_DIRECTORY(DWORD t) {
393 return !!(t & GOPHER_TYPE_DIRECTORY);
394 }
395
IS_GOPHER_PHONE_SERVER(DWORD t)396 BOOL IS_GOPHER_PHONE_SERVER(DWORD t) {
397 return !!(t & GOPHER_TYPE_CSO);
398 }
399
IS_GOPHER_ERROR(DWORD t)400 BOOL IS_GOPHER_ERROR(DWORD t) {
401 return !!(t & GOPHER_TYPE_ERROR);
402 }
403
IS_GOPHER_INDEX_SERVER(DWORD t)404 BOOL IS_GOPHER_INDEX_SERVER(DWORD t) {
405 return !!(t & GOPHER_TYPE_INDEX_SERVER);
406 }
407
IS_GOPHER_TELNET_SESSION(DWORD t)408 BOOL IS_GOPHER_TELNET_SESSION(DWORD t) {
409 return !!(t & GOPHER_TYPE_TELNET);
410 }
411
IS_GOPHER_BACKUP_SERVER(DWORD t)412 BOOL IS_GOPHER_BACKUP_SERVER(DWORD t) {
413 return !!(t & GOPHER_TYPE_REDUNDANT);
414 }
415
IS_GOPHER_TN3270_SESSION(DWORD t)416 BOOL IS_GOPHER_TN3270_SESSION(DWORD t) {
417 return !!(t & GOPHER_TYPE_TN3270);
418 }
419
IS_GOPHER_ASK(DWORD t)420 BOOL IS_GOPHER_ASK(DWORD t) {
421 return !!(t & GOPHER_TYPE_ASK);
422 }
423
IS_GOPHER_PLUS(DWORD t)424 BOOL IS_GOPHER_PLUS(DWORD t) {
425 return !!(t & GOPHER_TYPE_GOPHER_PLUS);
426 }
427
IS_GOPHER_TYPE_KNOWN(DWORD t)428 BOOL IS_GOPHER_TYPE_KNOWN(DWORD t) {
429 return !(t & GOPHER_TYPE_UNKNOWN);
430 }
431
432 enum size_t
433 MAX_GOPHER_CATEGORY_NAME = 128,
434 MAX_GOPHER_ATTRIBUTE_NAME = 128,
435 MIN_GOPHER_ATTRIBUTE_LENGTH = 256;
436
437 const TCHAR[]
438 GOPHER_INFO_CATEGORY = "+INFO",
439 GOPHER_ADMIN_CATEGORY = "+ADMIN",
440 GOPHER_VIEWS_CATEGORY = "+VIEWS",
441 GOPHER_ABSTRACT_CATEGORY = "+ABSTRACT",
442 GOPHER_VERONICA_CATEGORY = "+VERONICA",
443 GOPHER_ADMIN_ATTRIBUTE = "Admin",
444 GOPHER_MOD_DATE_ATTRIBUTE = "Mod-Date",
445 GOPHER_TTL_ATTRIBUTE = "TTL",
446 GOPHER_SCORE_ATTRIBUTE = "Score",
447 GOPHER_RANGE_ATTRIBUTE = "Score-range",
448 GOPHER_SITE_ATTRIBUTE = "Site",
449 GOPHER_ORG_ATTRIBUTE = "Org",
450 GOPHER_LOCATION_ATTRIBUTE = "Loc",
451 GOPHER_GEOG_ATTRIBUTE = "Geog",
452 GOPHER_TIMEZONE_ATTRIBUTE = "TZ",
453 GOPHER_PROVIDER_ATTRIBUTE = "Provider",
454 GOPHER_VERSION_ATTRIBUTE = "Version",
455 GOPHER_ABSTRACT_ATTRIBUTE = "Abstract",
456 GOPHER_VIEW_ATTRIBUTE = "View",
457 GOPHER_TREEWALK_ATTRIBUTE = "treewalk";
458
459 enum : DWORD {
460 GOPHER_ATTRIBUTE_ID_BASE = 0xABCCCC00,
461 GOPHER_CATEGORY_ID_ALL,
462 GOPHER_CATEGORY_ID_INFO,
463 GOPHER_CATEGORY_ID_ADMIN,
464 GOPHER_CATEGORY_ID_VIEWS,
465 GOPHER_CATEGORY_ID_ABSTRACT,
466 GOPHER_CATEGORY_ID_VERONICA,
467 GOPHER_CATEGORY_ID_ASK,
468 GOPHER_CATEGORY_ID_UNKNOWN,
469 GOPHER_ATTRIBUTE_ID_ALL,
470 GOPHER_ATTRIBUTE_ID_ADMIN,
471 GOPHER_ATTRIBUTE_ID_MOD_DATE,
472 GOPHER_ATTRIBUTE_ID_TTL,
473 GOPHER_ATTRIBUTE_ID_SCORE,
474 GOPHER_ATTRIBUTE_ID_RANGE,
475 GOPHER_ATTRIBUTE_ID_SITE,
476 GOPHER_ATTRIBUTE_ID_ORG,
477 GOPHER_ATTRIBUTE_ID_LOCATION,
478 GOPHER_ATTRIBUTE_ID_GEOG,
479 GOPHER_ATTRIBUTE_ID_TIMEZONE,
480 GOPHER_ATTRIBUTE_ID_PROVIDER,
481 GOPHER_ATTRIBUTE_ID_VERSION,
482 GOPHER_ATTRIBUTE_ID_ABSTRACT,
483 GOPHER_ATTRIBUTE_ID_VIEW,
484 GOPHER_ATTRIBUTE_ID_TREEWALK,
485 GOPHER_ATTRIBUTE_ID_UNKNOWN
486 }
487
488 enum HTTP_MAJOR_VERSION = 1;
489 enum HTTP_MINOR_VERSION = 0;
490 const TCHAR[] HTTP_VERSION = "HTTP/1.0";
491
492 enum : DWORD {
493 HTTP_QUERY_MIME_VERSION,
494 HTTP_QUERY_CONTENT_TYPE,
495 HTTP_QUERY_CONTENT_TRANSFER_ENCODING,
496 HTTP_QUERY_CONTENT_ID,
497 HTTP_QUERY_CONTENT_DESCRIPTION,
498 HTTP_QUERY_CONTENT_LENGTH,
499 HTTP_QUERY_CONTENT_LANGUAGE,
500 HTTP_QUERY_ALLOW,
501 HTTP_QUERY_PUBLIC,
502 HTTP_QUERY_DATE,
503 HTTP_QUERY_EXPIRES,
504 HTTP_QUERY_LAST_MODIFIED,
505 HTTP_QUERY_MESSAGE_ID,
506 HTTP_QUERY_URI,
507 HTTP_QUERY_DERIVED_FROM,
508 HTTP_QUERY_COST,
509 HTTP_QUERY_LINK,
510 HTTP_QUERY_PRAGMA,
511 HTTP_QUERY_VERSION,
512 HTTP_QUERY_STATUS_CODE,
513 HTTP_QUERY_STATUS_TEXT,
514 HTTP_QUERY_RAW_HEADERS,
515 HTTP_QUERY_RAW_HEADERS_CRLF,
516 HTTP_QUERY_CONNECTION,
517 HTTP_QUERY_ACCEPT,
518 HTTP_QUERY_ACCEPT_CHARSET,
519 HTTP_QUERY_ACCEPT_ENCODING,
520 HTTP_QUERY_ACCEPT_LANGUAGE,
521 HTTP_QUERY_AUTHORIZATION,
522 HTTP_QUERY_CONTENT_ENCODING,
523 HTTP_QUERY_FORWARDED,
524 HTTP_QUERY_FROM,
525 HTTP_QUERY_IF_MODIFIED_SINCE,
526 HTTP_QUERY_LOCATION,
527 HTTP_QUERY_ORIG_URI,
528 HTTP_QUERY_REFERER,
529 HTTP_QUERY_RETRY_AFTER,
530 HTTP_QUERY_SERVER,
531 HTTP_QUERY_TITLE,
532 HTTP_QUERY_USER_AGENT,
533 HTTP_QUERY_WWW_AUTHENTICATE,
534 HTTP_QUERY_PROXY_AUTHENTICATE,
535 HTTP_QUERY_ACCEPT_RANGES,
536 HTTP_QUERY_SET_COOKIE,
537 HTTP_QUERY_COOKIE,
538 HTTP_QUERY_REQUEST_METHOD,
539 HTTP_QUERY_MAX = 45,
540 HTTP_QUERY_CUSTOM = 65535
541 }
542
543 enum DWORD
544 HTTP_QUERY_FLAG_REQUEST_HEADERS = 0x80000000,
545 HTTP_QUERY_FLAG_SYSTEMTIME = 0x40000000,
546 HTTP_QUERY_FLAG_NUMBER = 0x20000000,
547 HTTP_QUERY_FLAG_COALESCE = 0x10000000,
548 HTTP_QUERY_MODIFIER_FLAGS_MASK = 0xF0000000,
549 HTTP_QUERY_HEADER_MASK = ~HTTP_QUERY_MODIFIER_FLAGS_MASK;
550
551 enum {
552 HTTP_STATUS_OK = 200,
553 HTTP_STATUS_CREATED,
554 HTTP_STATUS_ACCEPTED,
555 HTTP_STATUS_PARTIAL,
556 HTTP_STATUS_NO_CONTENT, // = 204
557 HTTP_STATUS_AMBIGUOUS = 300,
558 HTTP_STATUS_MOVED,
559 HTTP_STATUS_REDIRECT,
560 HTTP_STATUS_REDIRECT_METHOD,
561 HTTP_STATUS_NOT_MODIFIED, // = 304
562 HTTP_STATUS_BAD_REQUEST = 400,
563 HTTP_STATUS_DENIED,
564 HTTP_STATUS_PAYMENT_REQ,
565 HTTP_STATUS_FORBIDDEN,
566 HTTP_STATUS_NOT_FOUND,
567 HTTP_STATUS_BAD_METHOD,
568 HTTP_STATUS_NONE_ACCEPTABLE,
569 HTTP_STATUS_PROXY_AUTH_REQ,
570 HTTP_STATUS_REQUEST_TIMEOUT,
571 HTTP_STATUS_CONFLICT,
572 HTTP_STATUS_GONE,
573 HTTP_STATUS_AUTH_REFUSED, // = 411
574 HTTP_STATUS_SERVER_ERROR = 500,
575 HTTP_STATUS_NOT_SUPPORTED,
576 HTTP_STATUS_BAD_GATEWAY,
577 HTTP_STATUS_SERVICE_UNAVAIL,
578 HTTP_STATUS_GATEWAY_TIMEOUT // = 504
579 }
580
581 enum {
582 INTERNET_PREFETCH_PROGRESS,
583 INTERNET_PREFETCH_COMPLETE,
584 INTERNET_PREFETCH_ABORTED
585 }
586
587 enum FLAGS_ERROR_UI_FILTER_FOR_ERRORS = 0x01;
588 enum FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS = 0x02;
589 enum FLAGS_ERROR_UI_FLAGS_GENERATE_DATA = 0x04;
590 enum FLAGS_ERROR_UI_FLAGS_NO_UI = 0x08;
591
592 enum DWORD
593 HTTP_ADDREQ_INDEX_MASK = 0x0000FFFF,
594 HTTP_ADDREQ_FLAGS_MASK = 0xFFFF0000,
595 HTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON = 0x01000000,
596 HTTP_ADDREQ_FLAG_ADD_IF_NEW = 0x10000000,
597 HTTP_ADDREQ_FLAG_ADD = 0x20000000,
598 HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA = 0x40000000,
599 HTTP_ADDREQ_FLAG_COALESCE = HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA,
600 HTTP_ADDREQ_FLAG_REPLACE = 0x80000000;
601
602 enum {
603 INTERNET_ERROR_BASE = 12000,
604 ERROR_INTERNET_OUT_OF_HANDLES,
605 ERROR_INTERNET_TIMEOUT,
606 ERROR_INTERNET_EXTENDED_ERROR,
607 ERROR_INTERNET_INTERNAL_ERROR,
608 ERROR_INTERNET_INVALID_URL,
609 ERROR_INTERNET_UNRECOGNIZED_SCHEME,
610 ERROR_INTERNET_NAME_NOT_RESOLVED,
611 ERROR_INTERNET_PROTOCOL_NOT_FOUND,
612 ERROR_INTERNET_INVALID_OPTION,
613 ERROR_INTERNET_BAD_OPTION_LENGTH,
614 ERROR_INTERNET_OPTION_NOT_SETTABLE,
615 ERROR_INTERNET_SHUTDOWN,
616 ERROR_INTERNET_INCORRECT_USER_NAME,
617 ERROR_INTERNET_INCORRECT_PASSWORD,
618 ERROR_INTERNET_LOGIN_FAILURE,
619 ERROR_INTERNET_INVALID_OPERATION,
620 ERROR_INTERNET_OPERATION_CANCELLED,
621 ERROR_INTERNET_INCORRECT_HANDLE_TYPE,
622 ERROR_INTERNET_INCORRECT_HANDLE_STATE,
623 ERROR_INTERNET_NOT_PROXY_REQUEST,
624 ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND,
625 ERROR_INTERNET_BAD_REGISTRY_PARAMETER,
626 ERROR_INTERNET_NO_DIRECT_ACCESS,
627 ERROR_INTERNET_NO_CONTEXT,
628 ERROR_INTERNET_NO_CALLBACK,
629 ERROR_INTERNET_REQUEST_PENDING,
630 ERROR_INTERNET_INCORRECT_FORMAT,
631 ERROR_INTERNET_ITEM_NOT_FOUND,
632 ERROR_INTERNET_CANNOT_CONNECT,
633 ERROR_INTERNET_CONNECTION_ABORTED,
634 ERROR_INTERNET_CONNECTION_RESET,
635 ERROR_INTERNET_FORCE_RETRY,
636 ERROR_INTERNET_INVALID_PROXY_REQUEST,
637 ERROR_INTERNET_NEED_UI, // = INTERNET_ERROR_BASE + 34
638 ERROR_INTERNET_HANDLE_EXISTS = INTERNET_ERROR_BASE + 36,
639 ERROR_INTERNET_SEC_CERT_DATE_INVALID,
640 ERROR_INTERNET_SEC_CERT_CN_INVALID,
641 ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR,
642 ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR,
643 ERROR_INTERNET_MIXED_SECURITY,
644 ERROR_INTERNET_CHG_POST_IS_NON_SECURE,
645 ERROR_INTERNET_POST_IS_NON_SECURE,
646 ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED,
647 ERROR_INTERNET_INVALID_CA,
648 ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP,
649 ERROR_INTERNET_ASYNC_THREAD_FAILED,
650 ERROR_INTERNET_REDIRECT_SCHEME_CHANGE, // = INTERNET_ERROR_BASE + 48
651
652 ERROR_FTP_TRANSFER_IN_PROGRESS = INTERNET_ERROR_BASE + 110,
653 ERROR_FTP_DROPPED, // = INTERNET_ERROR_BASE + 111
654 ERROR_GOPHER_PROTOCOL_ERROR = INTERNET_ERROR_BASE + 130,
655 ERROR_GOPHER_NOT_FILE,
656 ERROR_GOPHER_DATA_ERROR,
657 ERROR_GOPHER_END_OF_DATA,
658 ERROR_GOPHER_INVALID_LOCATOR,
659 ERROR_GOPHER_INCORRECT_LOCATOR_TYPE,
660 ERROR_GOPHER_NOT_GOPHER_PLUS,
661 ERROR_GOPHER_ATTRIBUTE_NOT_FOUND,
662 ERROR_GOPHER_UNKNOWN_LOCATOR, // = INTERNET_ERROR_BASE + 138,
663 ERROR_HTTP_HEADER_NOT_FOUND = INTERNET_ERROR_BASE + 150,
664 ERROR_HTTP_DOWNLEVEL_SERVER,
665 ERROR_HTTP_INVALID_SERVER_RESPONSE,
666 ERROR_HTTP_INVALID_HEADER,
667 ERROR_HTTP_INVALID_QUERY_REQUEST,
668 ERROR_HTTP_HEADER_ALREADY_EXISTS,
669 ERROR_HTTP_REDIRECT_FAILED,
670 ERROR_INTERNET_SECURITY_CHANNEL_ERROR,
671 ERROR_INTERNET_UNABLE_TO_CACHE_FILE,
672 ERROR_INTERNET_TCPIP_NOT_INSTALLED,
673 ERROR_HTTP_NOT_REDIRECTED, // = INTERNET_ERROR_BASE + 160
674 // why?
675 INTERNET_ERROR_LAST = ERROR_INTERNET_TCPIP_NOT_INSTALLED
676 }
677
678
679 enum NORMAL_CACHE_ENTRY = 0x000001;
680 enum STABLE_CACHE_ENTRY = 0x000002;
681 enum STICKY_CACHE_ENTRY = 0x000004;
682 enum SPARSE_CACHE_ENTRY = 0x010000;
683 enum OCX_CACHE_ENTRY = 0x020000;
684 enum COOKIE_CACHE_ENTRY = 0x100000;
685 enum URLHISTORY_CACHE_ENTRY = 0x200000;
686
687 enum CACHE_ENTRY_ATTRIBUTE_FC = 0x0004;
688 enum CACHE_ENTRY_HITRATE_FC = 0x0010;
689 enum CACHE_ENTRY_MODTIME_FC = 0x0040;
690 enum CACHE_ENTRY_EXPTIME_FC = 0x0080;
691 enum CACHE_ENTRY_ACCTIME_FC = 0x0100;
692 enum CACHE_ENTRY_SYNCTIME_FC = 0x0200;
693 enum CACHE_ENTRY_HEADERINFO_FC = 0x0400;
694
695 enum {
696 WININET_API_FLAG_ASYNC = 1,
697 WININET_API_FLAG_SYNC = 4,
698 WININET_API_FLAG_USE_CONTEXT = 8
699 }
700
701 // FIXME: how should these really be grouped?
702 enum {
703 IRF_ASYNC = WININET_API_FLAG_ASYNC,
704 IRF_SYNC = WININET_API_FLAG_SYNC,
705 IRF_USE_CONTEXT = WININET_API_FLAG_USE_CONTEXT,
706 }
707 enum IRF_NO_WAIT = 8;
708
709 enum {
710 HSR_ASYNC = WININET_API_FLAG_ASYNC,
711 HSR_SYNC = WININET_API_FLAG_SYNC,
712 HSR_USE_CONTEXT = WININET_API_FLAG_USE_CONTEXT,
713 }
714
715 enum HSR_INITIATE = 8;
716 enum HSR_DOWNLOAD = 16;
717 enum HSR_CHUNKED = 32;
718
719 enum INTERNET_DIAL_UNATTENDED = 0x8000;
720 enum INTERNET_DIALSTATE_DISCONNECTED = 1;
721 enum INTERENT_GOONLINE_REFRESH = 1;
722 enum INTERENT_GOONLINE_MASK = 1;
723 enum INTERNET_AUTODIAL_FORCE_ONLINE = 1;
724 enum INTERNET_AUTODIAL_FORCE_UNATTENDED = 2;
725 enum INTERNET_AUTODIAL_FAILIFSECURITYCHECK = 4;
726 enum INTERNET_CONNECTION_MODEM = 0x01;
727 enum INTERNET_CONNECTION_LAN = 0x02;
728 enum INTERNET_CONNECTION_PROXY = 0x04;
729 enum INTERNET_CONNECTION_MODEM_BUSY = 0x08;
730 enum INTERNET_RAS_INSTALLED = 0x10;
731 enum INTERNET_CONNECTION_OFFLINE = 0x20;
732 enum INTERNET_CONNECTION_CONFIGURED = 0x40;
733
734 enum {
735 CACHEGROUP_SEARCH_ALL = 0,
736 CACHEGROUP_SEARCH_BYURL = 1
737 }
738
739 enum {
740 INTERNET_CACHE_GROUP_ADD = 0,
741 INTERNET_CACHE_GROUP_REMOVE = 1
742 }
743
744 mixin DECLARE_HANDLE!("HINTERNET"); // doesn't work - bug
745 /*struct HINTERNET {
746 HANDLE h;
747 alias h this;
748 }*/
749 alias HINTERNET* LPHINTERNET;
750
751 alias LONGLONG GROUPID;
752 alias WORD INTERNET_PORT;
753 alias WORD* LPINTERNET_PORT;
754
755 enum INTERNET_SCHEME {
756 INTERNET_SCHEME_PARTIAL = -2,
757 INTERNET_SCHEME_UNKNOWN,
758 INTERNET_SCHEME_DEFAULT,
759 INTERNET_SCHEME_FTP,
760 INTERNET_SCHEME_GOPHER,
761 INTERNET_SCHEME_HTTP,
762 INTERNET_SCHEME_HTTPS,
763 INTERNET_SCHEME_FILE,
764 INTERNET_SCHEME_NEWS,
765 INTERNET_SCHEME_MAILTO,
766 INTERNET_SCHEME_SOCKS,
767 INTERNET_SCHEME_JAVASCRIPT,
768 INTERNET_SCHEME_VBSCRIPT,
769 INTERNET_SCHEME_RES,
770 INTERNET_SCHEME_FIRST = INTERNET_SCHEME_FTP,
771 INTERNET_SCHEME_LAST = INTERNET_SCHEME_RES
772 }
773 alias INTERNET_SCHEME* LPINTERNET_SCHEME;
774
775 struct INTERNET_ASYNC_RESULT {
776 DWORD_PTR dwResult;
777 DWORD dwError;
778 }
779 alias INTERNET_ASYNC_RESULT* LPINTERNET_ASYNC_RESULT;
780
781 struct INTERNET_DIAGNOSTIC_SOCKET_INFO {
782 DWORD_PTR Socket;
783 DWORD SourcePort;
784 DWORD DestPort;
785 DWORD Flags;
786 }
787 alias INTERNET_DIAGNOSTIC_SOCKET_INFO* LPINTERNET_DIAGNOSTIC_SOCKET_INFO;
788
789 struct INTERNET_PREFETCH_STATUS {
790 DWORD dwStatus;
791 DWORD dwSize;
792 }
793 alias INTERNET_PREFETCH_STATUS* LPINTERNET_PREFETCH_STATUS;
794
795 struct INTERNET_PROXY_INFO {
796 DWORD dwAccessType;
797 LPCTSTR lpszProxy;
798 LPCTSTR lpszProxyBypass;
799 }
800 alias INTERNET_PROXY_INFO* LPINTERNET_PROXY_INFO;
801
802 struct INTERNET_PER_CONN_OPTIONA {
803 DWORD dwOption;
804 union {
805 DWORD dwValue;
806 LPSTR pszValue;
807 FILETIME ftValue;
808 }
809 }
810 alias INTERNET_PER_CONN_OPTIONA* LPINTERNET_PER_CONN_OPTIONA;
811
812 struct INTERNET_PER_CONN_OPTIONW {
813 DWORD dwOption;
814 union {
815 DWORD dwValue;
816 LPWSTR pszValue;
817 FILETIME ftValue;
818 }
819 }
820 alias INTERNET_PER_CONN_OPTIONW* LPINTERNET_PER_CONN_OPTIONW;
821
822 struct INTERNET_PER_CONN_OPTION_LISTA {
823 DWORD dwSize;
824 LPSTR pszConnection;
825 DWORD dwOptionCount;
826 DWORD dwOptionError;
827 LPINTERNET_PER_CONN_OPTIONA pOptions;
828 }
829 alias INTERNET_PER_CONN_OPTION_LISTA* LPINTERNET_PER_CONN_OPTION_LISTA;
830
831 struct INTERNET_PER_CONN_OPTION_LISTW {
832 DWORD dwSize;
833 LPWSTR pszConnection;
834 DWORD dwOptionCount;
835 DWORD dwOptionError;
836 LPINTERNET_PER_CONN_OPTIONW pOptions;
837 }
838 alias INTERNET_PER_CONN_OPTION_LISTW* LPINTERNET_PER_CONN_OPTION_LISTW;
839
840 enum {
841 INTERNET_PER_CONN_FLAGS = 1,
842 INTERNET_PER_CONN_PROXY_SERVER = 2,
843 INTERNET_PER_CONN_PROXY_BYPASS = 3,
844 INTERNET_PER_CONN_AUTOCONFIG_URL = 4,
845 INTERNET_PER_CONN_AUTODISCOVERY_FLAGS = 5,
846 INTERNET_PER_CONN_AUTOCONFIG_SECONDARY_URL = 6,
847 INTERNET_PER_CONN_AUTOCONFIG_RELOAD_DELAY_MINS = 7,
848 INTERNET_PER_CONN_AUTOCONFIG_LAST_DETECT_TIME = 8,
849 INTERNET_PER_CONN_AUTOCONFIG_LAST_DETECT_URL = 9,
850 INTERNET_PER_CONN_FLAGS_UI = 10,
851 }
852
853 enum {
854 PROXY_TYPE_DIRECT = 0x00000001,
855 PROXY_TYPE_PROXY = 0x00000002,
856 PROXY_TYPE_AUTO_PROXY_URL = 0x00000004,
857 PROXY_TYPE_AUTO_DETECT = 0x00000008,
858 }
859
860 enum {
861 AUTO_PROXY_FLAG_USER_SET = 0x00000001,
862 AUTO_PROXY_FLAG_ALWAYS_DETECT = 0x00000002,
863 AUTO_PROXY_FLAG_DETECTION_RUN = 0x00000004,
864 AUTO_PROXY_FLAG_MIGRATED = 0x00000008,
865 AUTO_PROXY_FLAG_DONT_CACHE_PROXY_RESULT = 0x00000010,
866 AUTO_PROXY_FLAG_CACHE_INIT_RUN = 0x00000020,
867 AUTO_PROXY_FLAG_DETECTION_SUSPECT = 0x00000040,
868 }
869
870 struct INTERNET_VERSION_INFO {
871 DWORD dwMajorVersion;
872 DWORD dwMinorVersion;
873 }
874 alias INTERNET_VERSION_INFO* LPINTERNET_VERSION_INFO;
875
876 struct URL_COMPONENTSA {
877 DWORD dwStructSize = URL_COMPONENTSA.sizeof;
878 LPSTR lpszScheme;
879 DWORD dwSchemeLength;
880 INTERNET_SCHEME nScheme;
881 LPSTR lpszHostName;
882 DWORD dwHostNameLength;
883 INTERNET_PORT nPort;
884 LPSTR lpszUserName;
885 DWORD dwUserNameLength;
886 LPSTR lpszPassword;
887 DWORD dwPasswordLength;
888 LPSTR lpszUrlPath;
889 DWORD dwUrlPathLength;
890 LPSTR lpszExtraInfo;
891 DWORD dwExtraInfoLength;
892 }
893 alias URL_COMPONENTSA* LPURL_COMPONENTSA;
894
895 struct URL_COMPONENTSW {
896 DWORD dwStructSize = URL_COMPONENTSW.sizeof;
897 LPWSTR lpszScheme;
898 DWORD dwSchemeLength;
899 INTERNET_SCHEME nScheme;
900 LPWSTR lpszHostName;
901 DWORD dwHostNameLength;
902 INTERNET_PORT nPort;
903 LPWSTR lpszUserName;
904 DWORD dwUserNameLength;
905 LPWSTR lpszPassword;
906 DWORD dwPasswordLength;
907 LPWSTR lpszUrlPath;
908 DWORD dwUrlPathLength;
909 LPWSTR lpszExtraInfo;
910 DWORD dwExtraInfoLength;
911 }
912 alias URL_COMPONENTSW* LPURL_COMPONENTSW;
913
914 struct INTERNET_CERTIFICATE_INFO {
915 FILETIME ftExpiry;
916 FILETIME ftStart;
917 LPTSTR lpszSubjectInfo;
918 LPTSTR lpszIssuerInfo;
919 LPTSTR lpszProtocolName;
920 LPTSTR lpszSignatureAlgName;
921 LPTSTR lpszEncryptionAlgName;
922 DWORD dwKeySize;
923 }
924 alias INTERNET_CERTIFICATE_INFO* LPINTERNET_CERTIFICATE_INFO;
925
926 extern (Windows) alias void function(HINTERNET, DWORD_PTR, DWORD, PVOID, DWORD)
927 INTERNET_STATUS_CALLBACK;
928 alias INTERNET_STATUS_CALLBACK* LPINTERNET_STATUS_CALLBACK;
929
930 enum INTERNET_INVALID_STATUS_CALLBACK
931 = cast(INTERNET_STATUS_CALLBACK) -1;
932
933 struct GOPHER_FIND_DATAA {
934 CHAR[MAX_GOPHER_DISPLAY_TEXT+1] DisplayString = 0;
935 DWORD GopherType;
936 DWORD SizeLow;
937 DWORD SizeHigh;
938 FILETIME LastModificationTime;
939 CHAR[MAX_GOPHER_LOCATOR_LENGTH+1] Locator = 0;
940 }
941 alias GOPHER_FIND_DATAA* LPGOPHER_FIND_DATAA;
942
943 struct GOPHER_FIND_DATAW {
944 WCHAR[MAX_GOPHER_DISPLAY_TEXT+1] DisplayString = 0;
945 DWORD GopherType;
946 DWORD SizeLow;
947 DWORD SizeHigh;
948 FILETIME LastModificationTime;
949 WCHAR[MAX_GOPHER_LOCATOR_LENGTH+1] Locator = 0;
950 }
951 alias GOPHER_FIND_DATAW* LPGOPHER_FIND_DATAW;
952
953 struct GOPHER_ADMIN_ATTRIBUTE_TYPE {
954 LPCTSTR Comment;
955 LPCTSTR EmailAddress;
956 }
957 alias GOPHER_ADMIN_ATTRIBUTE_TYPE* LPGOPHER_ADMIN_ATTRIBUTE_TYPE;
958
959 struct GOPHER_MOD_DATE_ATTRIBUTE_TYPE {
960 FILETIME DateAndTime;
961 }
962 alias GOPHER_MOD_DATE_ATTRIBUTE_TYPE* LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE;
963
964 struct GOPHER_TTL_ATTRIBUTE_TYPE {
965 DWORD Ttl;
966 }
967 alias GOPHER_TTL_ATTRIBUTE_TYPE* LPGOPHER_TTL_ATTRIBUTE_TYPE;
968
969 struct GOPHER_SCORE_ATTRIBUTE_TYPE {
970 INT Score;
971 }
972 alias GOPHER_SCORE_ATTRIBUTE_TYPE* LPGOPHER_SCORE_ATTRIBUTE_TYPE;
973
974 struct GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE {
975 INT LowerBound;
976 INT UpperBound;
977 }
978 alias GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE* LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE;
979
980 struct GOPHER_SITE_ATTRIBUTE_TYPE {
981 LPCTSTR Site;
982 }
983 alias GOPHER_SITE_ATTRIBUTE_TYPE* LPGOPHER_SITE_ATTRIBUTE_TYPE;
984
985 struct GOPHER_ORGANIZATION_ATTRIBUTE_TYPE {
986 LPCTSTR Organization;
987 }
988 alias GOPHER_ORGANIZATION_ATTRIBUTE_TYPE* LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPE;
989
990 struct GOPHER_LOCATION_ATTRIBUTE_TYPE {
991 LPCTSTR Location;
992 }
993 alias GOPHER_LOCATION_ATTRIBUTE_TYPE* LPGOPHER_LOCATION_ATTRIBUTE_TYPE;
994
995 struct GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE {
996 INT DegreesNorth;
997 INT MinutesNorth;
998 INT SecondsNorth;
999 INT DegreesEast;
1000 INT MinutesEast;
1001 INT SecondsEast;
1002 }
1003 alias GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE*
1004 LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE;
1005
1006 struct GOPHER_TIMEZONE_ATTRIBUTE_TYPE {
1007 INT Zone;
1008 }
1009 alias GOPHER_TIMEZONE_ATTRIBUTE_TYPE* LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE;
1010
1011 struct GOPHER_PROVIDER_ATTRIBUTE_TYPE {
1012 LPCTSTR Provider;
1013 }
1014 alias GOPHER_PROVIDER_ATTRIBUTE_TYPE* LPGOPHER_PROVIDER_ATTRIBUTE_TYPE;
1015
1016 struct GOPHER_VERSION_ATTRIBUTE_TYPE {
1017 LPCTSTR Version;
1018 }
1019 alias GOPHER_VERSION_ATTRIBUTE_TYPE* LPGOPHER_VERSION_ATTRIBUTE_TYPE;
1020
1021 struct GOPHER_ABSTRACT_ATTRIBUTE_TYPE {
1022 LPCTSTR ShortAbstract;
1023 LPCTSTR AbstractFile;
1024 }
1025 alias GOPHER_ABSTRACT_ATTRIBUTE_TYPE* LPGOPHER_ABSTRACT_ATTRIBUTE_TYPE;
1026
1027 struct GOPHER_VIEW_ATTRIBUTE_TYPE {
1028 LPCTSTR ContentType;
1029 LPCTSTR Language;
1030 DWORD Size;
1031 }
1032 alias GOPHER_VIEW_ATTRIBUTE_TYPE* LPGOPHER_VIEW_ATTRIBUTE_TYPE;
1033
1034 struct GOPHER_VERONICA_ATTRIBUTE_TYPE {
1035 BOOL TreeWalk;
1036 }
1037 alias GOPHER_VERONICA_ATTRIBUTE_TYPE* LPGOPHER_VERONICA_ATTRIBUTE_TYPE;
1038
1039 struct GOPHER_ASK_ATTRIBUTE_TYPE {
1040 LPCTSTR QuestionType;
1041 LPCTSTR QuestionText;
1042 }
1043 alias GOPHER_ASK_ATTRIBUTE_TYPE* LPGOPHER_ASK_ATTRIBUTE_TYPE;
1044
1045 struct GOPHER_UNKNOWN_ATTRIBUTE_TYPE {
1046 LPCTSTR Text;
1047 }
1048 alias GOPHER_UNKNOWN_ATTRIBUTE_TYPE* LPGOPHER_UNKNOWN_ATTRIBUTE_TYPE;
1049
1050 struct GOPHER_ATTRIBUTE_TYPE {
1051 DWORD CategoryId;
1052 DWORD AttributeId;
1053 union {
1054 GOPHER_ADMIN_ATTRIBUTE_TYPE Admin;
1055 GOPHER_MOD_DATE_ATTRIBUTE_TYPE ModDate;
1056 GOPHER_TTL_ATTRIBUTE_TYPE Ttl;
1057 GOPHER_SCORE_ATTRIBUTE_TYPE Score;
1058 GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE ScoreRange;
1059 GOPHER_SITE_ATTRIBUTE_TYPE Site;
1060 GOPHER_ORGANIZATION_ATTRIBUTE_TYPE Organization;
1061 GOPHER_LOCATION_ATTRIBUTE_TYPE Location;
1062 GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE GeographicalLocation;
1063 GOPHER_TIMEZONE_ATTRIBUTE_TYPE TimeZone;
1064 GOPHER_PROVIDER_ATTRIBUTE_TYPE Provider;
1065 GOPHER_VERSION_ATTRIBUTE_TYPE Version;
1066 GOPHER_ABSTRACT_ATTRIBUTE_TYPE Abstract;
1067 GOPHER_VIEW_ATTRIBUTE_TYPE View;
1068 GOPHER_VERONICA_ATTRIBUTE_TYPE Veronica;
1069 GOPHER_ASK_ATTRIBUTE_TYPE Ask;
1070 GOPHER_UNKNOWN_ATTRIBUTE_TYPE Unknown;
1071 } /+AttributeType;+/
1072 }
1073 alias GOPHER_ATTRIBUTE_TYPE* LPGOPHER_ATTRIBUTE_TYPE;
1074
1075 extern (Windows)
1076 alias BOOL function(LPGOPHER_ATTRIBUTE_TYPE, DWORD)
1077 GOPHER_ATTRIBUTE_ENUMERATOR;
1078
1079 struct INTERNET_CACHE_ENTRY_INFOA {
1080 DWORD dwStructSize = INTERNET_CACHE_ENTRY_INFOA.sizeof;
1081 LPSTR lpszSourceUrlName;
1082 LPSTR lpszLocalFileName;
1083 DWORD CacheEntryType;
1084 DWORD dwUseCount;
1085 DWORD dwHitRate;
1086 DWORD dwSizeLow;
1087 DWORD dwSizeHigh;
1088 FILETIME LastModifiedTime;
1089 FILETIME ExpireTime;
1090 FILETIME LastAccessTime;
1091 FILETIME LastSyncTime;
1092 PBYTE lpHeaderInfo;
1093 DWORD dwHeaderInfoSize;
1094 LPSTR lpszFileExtension;
1095 DWORD dwReserved;
1096 }
1097 alias INTERNET_CACHE_ENTRY_INFOA* LPINTERNET_CACHE_ENTRY_INFOA;
1098
1099 struct INTERNET_CACHE_ENTRY_INFOW {
1100 DWORD dwStructSize = INTERNET_CACHE_ENTRY_INFOW.sizeof;
1101 LPWSTR lpszSourceUrlName;
1102 LPWSTR lpszLocalFileName;
1103 DWORD CacheEntryType;
1104 DWORD dwUseCount;
1105 DWORD dwHitRate;
1106 DWORD dwSizeLow;
1107 DWORD dwSizeHigh;
1108 FILETIME LastModifiedTime;
1109 FILETIME ExpireTime;
1110 FILETIME LastAccessTime;
1111 FILETIME LastSyncTime;
1112 PBYTE lpHeaderInfo;
1113 DWORD dwHeaderInfoSize;
1114 LPWSTR lpszFileExtension;
1115 DWORD dwReserved;
1116 }
1117 alias INTERNET_CACHE_ENTRY_INFOW* LPINTERNET_CACHE_ENTRY_INFOW;
1118
1119 struct INTERNET_BUFFERSA {
1120 DWORD dwStructSize = INTERNET_BUFFERSA.sizeof;
1121 INTERNET_BUFFERSA* Next;
1122 LPCSTR lpcszHeader;
1123 DWORD dwHeadersLength;
1124 DWORD dwHeadersTotal;
1125 LPVOID lpvBuffer;
1126 DWORD dwBufferLength;
1127 DWORD dwBufferTotal;
1128 DWORD dwOffsetLow;
1129 DWORD dwOffsetHigh;
1130 }
1131 alias INTERNET_BUFFERSA* LPINTERNET_BUFFERSA;
1132
1133 struct INTERNET_BUFFERSW {
1134 DWORD dwStructSize = INTERNET_BUFFERSW.sizeof;
1135 INTERNET_BUFFERSW* Next;
1136 LPCWSTR lpcszHeader;
1137 DWORD dwHeadersLength;
1138 DWORD dwHeadersTotal;
1139 LPVOID lpvBuffer;
1140 DWORD dwBufferLength;
1141 DWORD dwBufferTotal;
1142 DWORD dwOffsetLow;
1143 DWORD dwOffsetHigh;
1144 }
1145 alias INTERNET_BUFFERSW* LPINTERNET_BUFFERSW;
1146
1147 enum size_t
1148 GROUP_OWNER_STORAGE_SIZE = 4,
1149 GROUPNAME_MAX_LENGTH = 120;
1150
1151 struct INTERNET_CACHE_GROUP_INFOA {
1152 DWORD dwGroupSize;
1153 DWORD dwGroupFlags;
1154 DWORD dwGroupType;
1155 DWORD dwDiskUsage;
1156 DWORD dwDiskQuota;
1157 DWORD[GROUP_OWNER_STORAGE_SIZE] dwOwnerStorage;
1158 CHAR[GROUPNAME_MAX_LENGTH] szGroupName = 0;
1159 }
1160 alias INTERNET_CACHE_GROUP_INFOA* LPINTERNET_CACHE_GROUP_INFOA;
1161
1162 struct INTERNET_CACHE_GROUP_INFOW {
1163 DWORD dwGroupSize;
1164 DWORD dwGroupFlags;
1165 DWORD dwGroupType;
1166 DWORD dwDiskUsage;
1167 DWORD dwDiskQuota;
1168 DWORD[GROUP_OWNER_STORAGE_SIZE] dwOwnerStorage;
1169 WCHAR[GROUPNAME_MAX_LENGTH] szGroupName = 0;
1170 }
1171 alias INTERNET_CACHE_GROUP_INFOW* LPINTERNET_CACHE_GROUP_INFOW;
1172
1173 extern (Windows) {
1174 BOOL InternetTimeFromSystemTime(SYSTEMTIME*, DWORD, LPSTR, DWORD);
1175 BOOL InternetTimeToSystemTime(LPCSTR, SYSTEMTIME*, DWORD);
1176 BOOL InternetDebugGetLocalTime(SYSTEMTIME*, PDWORD);
1177 BOOL InternetCrackUrlA(LPCSTR, DWORD, DWORD, LPURL_COMPONENTSA);
1178 BOOL InternetCrackUrlW(LPCWSTR, DWORD, DWORD, LPURL_COMPONENTSW);
1179 BOOL InternetCreateUrlA(LPURL_COMPONENTSA, DWORD, LPSTR, PDWORD);
1180 BOOL InternetCreateUrlW(LPURL_COMPONENTSW, DWORD, LPWSTR, PDWORD);
1181 BOOL InternetCanonicalizeUrlA(LPCSTR, LPSTR, PDWORD, DWORD);
1182 BOOL InternetCanonicalizeUrlW(LPCWSTR, LPWSTR, PDWORD, DWORD);
1183 BOOL InternetCheckConnectionA(LPCSTR, DWORD, DWORD);
1184 BOOL InternetCheckConnectionW(LPCWSTR, DWORD, DWORD);
1185 BOOL InternetCombineUrlA(LPCSTR, LPCSTR, LPSTR, PDWORD, DWORD);
1186 BOOL InternetCombineUrlW(LPCWSTR, LPCWSTR, LPWSTR, PDWORD, DWORD);
1187 HINTERNET InternetOpenA(LPCSTR, DWORD, LPCSTR, LPCSTR, DWORD);
1188 HINTERNET InternetOpenW(LPCWSTR, DWORD, LPCWSTR, LPCWSTR, DWORD);
1189 BOOL InternetCloseHandle(HINTERNET);
1190 HINTERNET InternetConnectA(HINTERNET, LPCSTR, INTERNET_PORT, LPCSTR,
1191 LPCSTR, DWORD, DWORD, DWORD_PTR);
1192 HINTERNET InternetConnectW(HINTERNET, LPCWSTR, INTERNET_PORT, LPCWSTR,
1193 LPCWSTR, DWORD, DWORD, DWORD_PTR);
1194 HINTERNET InternetOpenUrlA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD,
1195 DWORD_PTR);
1196 HINTERNET InternetOpenUrlW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD,
1197 DWORD_PTR);
1198 BOOL InternetReadFile(HINTERNET, PVOID, DWORD, PDWORD);
1199 DWORD InternetSetFilePointer(HINTERNET, LONG, PVOID, DWORD, DWORD_PTR);
1200 BOOL InternetWriteFile(HINTERNET, LPCVOID, DWORD, PDWORD);
1201 BOOL InternetQueryDataAvailable(HINTERNET, PDWORD, DWORD, DWORD_PTR);
1202 BOOL InternetFindNextFileA(HINTERNET, PVOID);
1203 BOOL InternetFindNextFileW(HINTERNET, PVOID);
1204 BOOL InternetQueryOptionA(HINTERNET, DWORD, PVOID, PDWORD);
1205 BOOL InternetQueryOptionW(HINTERNET, DWORD, PVOID, PDWORD);
1206 BOOL InternetSetOptionA(HINTERNET, DWORD, PVOID, DWORD);
1207 BOOL InternetSetOptionW(HINTERNET, DWORD, PVOID, DWORD);
1208 BOOL InternetSetOptionExA(HINTERNET, DWORD, PVOID, DWORD, DWORD);
1209 BOOL InternetSetOptionExW(HINTERNET, DWORD, PVOID, DWORD, DWORD);
1210 BOOL InternetGetLastResponseInfoA(PDWORD, LPSTR, PDWORD);
1211 BOOL InternetGetLastResponseInfoW(PDWORD, LPWSTR, PDWORD);
1212 INTERNET_STATUS_CALLBACK InternetSetStatusCallback(HINTERNET,
1213 INTERNET_STATUS_CALLBACK);
1214 DWORD FtpGetFileSize(HINTERNET, LPDWORD);
1215 HINTERNET FtpFindFirstFileA(HINTERNET, LPCSTR, LPWIN32_FIND_DATAA, DWORD,
1216 DWORD_PTR);
1217 HINTERNET FtpFindFirstFileW(HINTERNET, LPCWSTR, LPWIN32_FIND_DATAW, DWORD,
1218 DWORD_PTR);
1219 BOOL FtpGetFileA(HINTERNET, LPCSTR, LPCSTR, BOOL, DWORD, DWORD, DWORD_PTR);
1220 BOOL FtpGetFileW(HINTERNET, LPCWSTR, LPCWSTR, BOOL, DWORD, DWORD, DWORD_PTR);
1221 BOOL FtpPutFileA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD_PTR);
1222 BOOL FtpPutFileW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD_PTR);
1223 BOOL FtpDeleteFileA(HINTERNET, LPCSTR);
1224 BOOL FtpDeleteFileW(HINTERNET, LPCWSTR);
1225 BOOL FtpRenameFileA(HINTERNET, LPCSTR, LPCSTR);
1226 BOOL FtpRenameFileW(HINTERNET, LPCWSTR, LPCWSTR);
1227 HINTERNET FtpOpenFileA(HINTERNET, LPCSTR, DWORD, DWORD, DWORD_PTR);
1228 HINTERNET FtpOpenFileW(HINTERNET, LPCWSTR, DWORD, DWORD, DWORD_PTR);
1229 BOOL FtpCreateDirectoryA(HINTERNET, LPCSTR);
1230 BOOL FtpCreateDirectoryW(HINTERNET, LPCWSTR);
1231 BOOL FtpRemoveDirectoryA(HINTERNET, LPCSTR);
1232 BOOL FtpRemoveDirectoryW(HINTERNET, LPCWSTR);
1233 BOOL FtpSetCurrentDirectoryA(HINTERNET, LPCSTR);
1234 BOOL FtpSetCurrentDirectoryW(HINTERNET, LPCWSTR);
1235 BOOL FtpGetCurrentDirectoryA(HINTERNET, LPSTR, PDWORD);
1236 BOOL FtpGetCurrentDirectoryW(HINTERNET, LPWSTR, PDWORD);
1237 BOOL FtpCommandA(HINTERNET, BOOL, DWORD, LPCSTR, DWORD_PTR, HINTERNET*);
1238 BOOL FtpCommandW(HINTERNET, BOOL, DWORD, LPCWSTR, DWORD_PTR, HINTERNET*);
1239 BOOL GopherCreateLocatorA(LPCSTR, INTERNET_PORT, LPCSTR, LPCSTR, DWORD,
1240 LPSTR, PDWORD);
1241 BOOL GopherCreateLocatorW(LPCWSTR, INTERNET_PORT, LPCWSTR, LPCWSTR, DWORD,
1242 LPWSTR, PDWORD);
1243 BOOL GopherGetLocatorTypeA(LPCSTR, PDWORD);
1244 BOOL GopherGetLocatorTypeW(LPCWSTR, PDWORD);
1245 HINTERNET GopherFindFirstFileA(HINTERNET, LPCSTR, LPCSTR,
1246 LPGOPHER_FIND_DATAA, DWORD, DWORD_PTR);
1247 HINTERNET GopherFindFirstFileW(HINTERNET, LPCWSTR, LPCWSTR,
1248 LPGOPHER_FIND_DATAW, DWORD, DWORD_PTR);
1249 HINTERNET GopherOpenFileA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD_PTR);
1250 HINTERNET GopherOpenFileW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD_PTR);
1251 BOOL GopherGetAttributeA(HINTERNET, LPCSTR, LPCSTR, LPBYTE, DWORD,
1252 PDWORD, GOPHER_ATTRIBUTE_ENUMERATOR, DWORD_PTR);
1253 BOOL GopherGetAttributeW(HINTERNET, LPCWSTR, LPCWSTR, LPBYTE, DWORD,
1254 PDWORD, GOPHER_ATTRIBUTE_ENUMERATOR, DWORD_PTR);
1255 HINTERNET HttpOpenRequestA(HINTERNET, LPCSTR, LPCSTR, LPCSTR, LPCSTR,
1256 LPCSTR*, DWORD, DWORD_PTR);
1257 HINTERNET HttpOpenRequestW(HINTERNET, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR,
1258 LPCWSTR*, DWORD, DWORD_PTR);
1259 BOOL HttpAddRequestHeadersA(HINTERNET, LPCSTR, DWORD, DWORD);
1260 BOOL HttpAddRequestHeadersW(HINTERNET, LPCWSTR, DWORD, DWORD);
1261 BOOL HttpSendRequestA(HINTERNET, LPCSTR, DWORD, PVOID, DWORD);
1262 BOOL HttpSendRequestW(HINTERNET, LPCWSTR, DWORD, PVOID, DWORD);
1263 BOOL HttpQueryInfoA(HINTERNET, DWORD, PVOID, PDWORD, PDWORD);
1264 BOOL HttpQueryInfoW(HINTERNET, DWORD, PVOID, PDWORD, PDWORD);
1265 BOOL InternetSetCookieA(LPCSTR, LPCSTR, LPCSTR);
1266 BOOL InternetSetCookieW(LPCWSTR, LPCWSTR, LPCWSTR);
1267 BOOL InternetGetCookieA(LPCSTR, LPCSTR, LPSTR, PDWORD);
1268 BOOL InternetGetCookieW(LPCWSTR, LPCWSTR, LPWSTR, PDWORD);
1269 DWORD InternetAttemptConnect(DWORD);
1270 DWORD InternetErrorDlg(HWND, HINTERNET, DWORD, DWORD, PVOID*);
1271 DWORD InternetConfirmZoneCrossing(HWND, LPSTR, LPSTR, BOOL);
1272 BOOL CreateUrlCacheEntryA(LPCSTR, DWORD, LPCSTR, LPSTR, DWORD);
1273 BOOL CreateUrlCacheEntryW(LPCWSTR, DWORD, LPCWSTR, LPWSTR, DWORD);
1274 BOOL CommitUrlCacheEntryA(LPCSTR, LPCSTR, FILETIME, FILETIME, DWORD,
1275 LPBYTE, DWORD, LPCSTR, DWORD);
1276 BOOL CommitUrlCacheEntryW(LPCWSTR, LPCWSTR, FILETIME, FILETIME, DWORD,
1277 LPBYTE, DWORD, LPCWSTR, DWORD);
1278 BOOL RetrieveUrlCacheEntryFileA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA,
1279 PDWORD, DWORD);
1280 BOOL RetrieveUrlCacheEntryFileW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW,
1281 PDWORD, DWORD);
1282 BOOL UnlockUrlCacheEntryFile(LPCSTR, DWORD);
1283 HANDLE RetrieveUrlCacheEntryStreamA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA,
1284 PDWORD, BOOL, DWORD);
1285 HANDLE RetrieveUrlCacheEntryStreamW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW,
1286 PDWORD, BOOL, DWORD);
1287 BOOL ReadUrlCacheEntryStream(HANDLE, DWORD, PVOID, PDWORD, DWORD);
1288 BOOL UnlockUrlCacheEntryStream(HANDLE, DWORD);
1289 BOOL GetUrlCacheEntryInfoA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, PDWORD);
1290 BOOL GetUrlCacheEntryInfoW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, PDWORD);
1291 BOOL SetUrlCacheEntryInfoA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, DWORD);
1292 BOOL SetUrlCacheEntryInfoW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW, DWORD);
1293 HANDLE FindFirstUrlCacheEntryA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA,
1294 PDWORD);
1295 HANDLE FindFirstUrlCacheEntryW(LPCWSTR, LPINTERNET_CACHE_ENTRY_INFOW,
1296 PDWORD);
1297 BOOL FindNextUrlCacheEntryA(HANDLE, LPINTERNET_CACHE_ENTRY_INFOA, PDWORD);
1298 BOOL FindNextUrlCacheEntryW(HANDLE, LPINTERNET_CACHE_ENTRY_INFOW, PDWORD);
1299 BOOL FindCloseUrlCache(HANDLE);
1300 BOOL DeleteUrlCacheEntry(LPCSTR);
1301 DWORD AuthenticateUser(PVOID*, LPSTR, LPSTR, DWORD, LPSTR, DWORD, LPSTR,
1302 LPSTR);
1303 BOOL HttpSendRequestExA(HINTERNET, LPINTERNET_BUFFERSA,
1304 LPINTERNET_BUFFERSA, DWORD, DWORD_PTR);
1305 BOOL HttpSendRequestExW(HINTERNET, LPINTERNET_BUFFERSW,
1306 LPINTERNET_BUFFERSW, DWORD, DWORD_PTR);
1307 BOOL HttpEndRequestA(HINTERNET, LPINTERNET_BUFFERSA, DWORD, DWORD_PTR);
1308 BOOL HttpEndRequestW(HINTERNET, LPINTERNET_BUFFERSW, DWORD, DWORD_PTR);
1309 DWORD InternetDial(HWND, LPTSTR, DWORD, LPDWORD, DWORD);
1310 DWORD InternetHangUp(DWORD_PTR, DWORD);
1311 BOOL InternetGoOnline(LPTSTR, HWND, DWORD);
1312 BOOL InternetAutodial(DWORD, DWORD);
1313 BOOL InternetAutodialHangup(DWORD);
1314 BOOL InternetGetConnectedState(LPDWORD, DWORD);
1315 BOOL InternetSetDialState(LPCTSTR, DWORD, DWORD);
1316 BOOL InternetReadFileExA(HINTERNET, LPINTERNET_BUFFERSA, DWORD, DWORD_PTR);
1317 BOOL InternetReadFileExW(HINTERNET, LPINTERNET_BUFFERSW, DWORD, DWORD_PTR);
1318 GROUPID CreateUrlCacheGroup(DWORD, LPVOID);
1319 BOOL DeleteUrlCacheGroup(GROUPID, DWORD, LPVOID);
1320 HANDLE FindFirstUrlCacheGroup(DWORD, DWORD, LPVOID, DWORD, GROUPID*,
1321 LPVOID);
1322 BOOL FindNextUrlCacheGroup(HANDLE, GROUPID*, LPVOID);
1323 BOOL GetUrlCacheGroupAttributeA(GROUPID, DWORD, DWORD,
1324 LPINTERNET_CACHE_GROUP_INFOA, LPDWORD, LPVOID);
1325 BOOL GetUrlCacheGroupAttributeW(GROUPID, DWORD, DWORD,
1326 LPINTERNET_CACHE_GROUP_INFOW, LPDWORD, LPVOID);
1327 BOOL SetUrlCacheGroupAttributeA(GROUPID, DWORD, DWORD,
1328 LPINTERNET_CACHE_GROUP_INFOA, LPVOID);
1329 BOOL SetUrlCacheGroupAttributeW(GROUPID, DWORD, DWORD,
1330 LPINTERNET_CACHE_GROUP_INFOW, LPVOID);
1331 }
1332
1333 version (Unicode) {
1334 alias INTERNET_PER_CONN_OPTIONW INTERNET_PER_CONN_OPTION;
1335 alias LPINTERNET_PER_CONN_OPTIONW LPINTERNET_PER_CONN_OPTION;
1336 alias INTERNET_PER_CONN_OPTION_LISTW INTERNET_PER_CONN_OPTION_LIST;
1337 alias LPINTERNET_PER_CONN_OPTION_LISTW LPINTERNET_PER_CONN_OPTION_LIST;
1338 alias URL_COMPONENTSW URL_COMPONENTS;
1339 alias LPURL_COMPONENTSW LPURL_COMPONENTS;
1340 alias GOPHER_FIND_DATAW GOPHER_FIND_DATA;
1341 alias LPGOPHER_FIND_DATAW LPGOPHER_FIND_DATA;
1342 alias INTERNET_CACHE_ENTRY_INFOW INTERNET_CACHE_ENTRY_INFO;
1343 alias LPINTERNET_CACHE_ENTRY_INFOW LPINTERNET_CACHE_ENTRY_INFO;
1344 alias INTERNET_BUFFERSW INTERNET_BUFFERS;
1345 alias INTERNET_CACHE_GROUP_INFOW INTERNET_CACHE_GROUP_INFO;
1346 alias LPINTERNET_CACHE_GROUP_INFOW LPINTERNET_CACHE_GROUP_INFO;
1347 alias InternetCrackUrlW InternetCrackUrl;
1348 alias InternetCreateUrlW InternetCreateUrl;
1349 alias InternetCanonicalizeUrlW InternetCanonicalizeUrl;
1350 alias InternetCheckConnectionW InternetCheckConnection;
1351 alias InternetCombineUrlW InternetCombineUrl;
1352 alias InternetOpenW InternetOpen;
1353 alias InternetConnectW InternetConnect;
1354 alias InternetOpenUrlW InternetOpenUrl;
1355 alias InternetFindNextFileW InternetFindNextFile;
1356 alias InternetQueryOptionW InternetQueryOption;
1357 alias InternetSetOptionW InternetSetOption;
1358 alias InternetSetOptionExW InternetSetOptionEx;
1359 alias InternetGetLastResponseInfoW InternetGetLastResponseInfo;
1360 alias InternetReadFileExW InternetReadFileEx;
1361 alias FtpFindFirstFileW FtpFindFirstFile;
1362 alias FtpGetFileW FtpGetFile;
1363 alias FtpPutFileW FtpPutFile;
1364 alias FtpDeleteFileW FtpDeleteFile;
1365 alias FtpRenameFileW FtpRenameFile;
1366 alias FtpOpenFileW FtpOpenFile;
1367 alias FtpCreateDirectoryW FtpCreateDirectory;
1368 alias FtpRemoveDirectoryW FtpRemoveDirectory;
1369 alias FtpSetCurrentDirectoryW FtpSetCurrentDirectory;
1370 alias FtpGetCurrentDirectoryW FtpGetCurrentDirectory;
1371 alias FtpCommandW FtpCommand;
1372 alias GopherGetLocatorTypeW GopherGetLocatorType;
1373 alias GopherCreateLocatorW GopherCreateLocator;
1374 alias GopherFindFirstFileW GopherFindFirstFile;
1375 alias GopherOpenFileW GopherOpenFile;
1376 alias GopherGetAttributeW GopherGetAttribute;
1377 alias HttpSendRequestW HttpSendRequest;
1378 alias HttpOpenRequestW HttpOpenRequest;
1379 alias HttpAddRequestHeadersW HttpAddRequestHeaders;
1380 alias HttpQueryInfoW HttpQueryInfo;
1381 alias InternetSetCookieW InternetSetCookie;
1382 alias InternetGetCookieW InternetGetCookie;
1383 alias CreateUrlCacheEntryW CreateUrlCacheEntry;
1384 alias RetrieveUrlCacheEntryStreamW RetrieveUrlCacheEntryStream;
1385 alias FindNextUrlCacheEntryW FindNextUrlCacheEntry;
1386 alias CommitUrlCacheEntryW CommitUrlCacheEntry;
1387 alias GetUrlCacheEntryInfoW GetUrlCacheEntryInfo;
1388 alias SetUrlCacheEntryInfoW SetUrlCacheEntryInfo;
1389 alias FindFirstUrlCacheEntryW FindFirstUrlCacheEntry;
1390 alias RetrieveUrlCacheEntryFileW RetrieveUrlCacheEntryFile;
1391 alias HttpSendRequestExW HttpSendRequestEx;
1392 alias HttpEndRequestW HttpEndRequest;
1393 alias GetUrlCacheGroupAttributeW GetUrlCacheGroupAttribute;
1394 alias SetUrlCacheGroupAttributeW SetUrlCacheGroupAttribute;
1395 } else {
1396 alias INTERNET_PER_CONN_OPTIONA INTERNET_PER_CONN_OPTION;
1397 alias LPINTERNET_PER_CONN_OPTIONA LPINTERNET_PER_CONN_OPTION;
1398 alias INTERNET_PER_CONN_OPTION_LISTA INTERNET_PER_CONN_OPTION_LIST;
1399 alias LPINTERNET_PER_CONN_OPTION_LISTA LPINTERNET_PER_CONN_OPTION_LIST;
1400 alias URL_COMPONENTSA URL_COMPONENTS;
1401 alias LPURL_COMPONENTSA LPURL_COMPONENTS;
1402 alias GOPHER_FIND_DATAA GOPHER_FIND_DATA;
1403 alias LPGOPHER_FIND_DATAA LPGOPHER_FIND_DATA;
1404 alias INTERNET_CACHE_ENTRY_INFOA INTERNET_CACHE_ENTRY_INFO;
1405 alias LPINTERNET_CACHE_ENTRY_INFOA LPINTERNET_CACHE_ENTRY_INFO;
1406 alias INTERNET_BUFFERSA INTERNET_BUFFERS;
1407 alias INTERNET_CACHE_GROUP_INFOA INTERNET_CACHE_GROUP_INFO;
1408 alias LPINTERNET_CACHE_GROUP_INFOA LPINTERNET_CACHE_GROUP_INFO;
1409 alias GopherGetAttributeA GopherGetAttribute;
1410 alias InternetCrackUrlA InternetCrackUrl;
1411 alias InternetCreateUrlA InternetCreateUrl;
1412 alias InternetCanonicalizeUrlA InternetCanonicalizeUrl;
1413 alias InternetCheckConnectionA InternetCheckConnection;
1414 alias InternetCombineUrlA InternetCombineUrl;
1415 alias InternetOpenA InternetOpen;
1416 alias InternetConnectA InternetConnect;
1417 alias InternetOpenUrlA InternetOpenUrl;
1418 alias InternetFindNextFileA InternetFindNextFile;
1419 alias InternetQueryOptionA InternetQueryOption;
1420 alias InternetSetOptionA InternetSetOption;
1421 alias InternetSetOptionExA InternetSetOptionEx;
1422 alias InternetGetLastResponseInfoA InternetGetLastResponseInfo;
1423 alias InternetReadFileExA InternetReadFileEx;
1424 alias FtpFindFirstFileA FtpFindFirstFile;
1425 alias FtpGetFileA FtpGetFile;
1426 alias FtpPutFileA FtpPutFile;
1427 alias FtpDeleteFileA FtpDeleteFile;
1428 alias FtpRenameFileA FtpRenameFile;
1429 alias FtpOpenFileA FtpOpenFile;
1430 alias FtpCreateDirectoryA FtpCreateDirectory;
1431 alias FtpRemoveDirectoryA FtpRemoveDirectory;
1432 alias FtpSetCurrentDirectoryA FtpSetCurrentDirectory;
1433 alias FtpGetCurrentDirectoryA FtpGetCurrentDirectory;
1434 alias FtpCommandA FtpCommand;
1435 alias GopherGetLocatorTypeA GopherGetLocatorType;
1436 alias GopherCreateLocatorA GopherCreateLocator;
1437 alias GopherFindFirstFileA GopherFindFirstFile;
1438 alias GopherOpenFileA GopherOpenFile;
1439 alias HttpSendRequestA HttpSendRequest;
1440 alias HttpOpenRequestA HttpOpenRequest;
1441 alias HttpAddRequestHeadersA HttpAddRequestHeaders;
1442 alias HttpQueryInfoA HttpQueryInfo;
1443 alias InternetSetCookieA InternetSetCookie;
1444 alias InternetGetCookieA InternetGetCookie;
1445 alias CreateUrlCacheEntryA CreateUrlCacheEntry;
1446 alias RetrieveUrlCacheEntryStreamA RetrieveUrlCacheEntryStream;
1447 alias FindNextUrlCacheEntryA FindNextUrlCacheEntry;
1448 alias CommitUrlCacheEntryA CommitUrlCacheEntry;
1449 alias GetUrlCacheEntryInfoA GetUrlCacheEntryInfo;
1450 alias SetUrlCacheEntryInfoA SetUrlCacheEntryInfo;
1451 alias FindFirstUrlCacheEntryA FindFirstUrlCacheEntry;
1452 alias RetrieveUrlCacheEntryFileA RetrieveUrlCacheEntryFile;
1453 alias HttpSendRequestExA HttpSendRequestEx;
1454 alias HttpEndRequestA HttpEndRequest;
1455 alias GetUrlCacheGroupAttributeA GetUrlCacheGroupAttribute;
1456 alias SetUrlCacheGroupAttributeA SetUrlCacheGroupAttribute;
1457 }
1458
1459 alias INTERNET_BUFFERS* LPINTERNET_BUFFERS;
1460