root/trunk/win32/wininet.d

Revision 343, 44.3 kB (checked in by CyberShadow, 2 years ago)

wininet Unicode fixes

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