diff win32/wininet.d @ 1:4a9dcbd9e54f

-files of 0.13 beta -fixes so that it now compiles with the current dmd version
author marton@basel.hu
date Tue, 05 Apr 2011 20:44:01 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/win32/wininet.d	Tue Apr 05 20:44:01 2011 +0200
@@ -0,0 +1,1241 @@
+/***********************************************************************\
+*                               wininet.d                               *
+*                                                                       *
+*                       Windows API header module                       *
+*                                                                       *
+*                 Translated from MinGW Windows headers                 *
+*                           by Stewart Gordon                           *
+*                                                                       *
+*                       Placed into public domain                       *
+\***********************************************************************/
+module win32.wininet;
+
+// FIXME: check types and grouping of constants
+
+import win32.windows;
+
+enum {
+	INTERNET_INVALID_PORT_NUMBER =    0,
+	INTERNET_DEFAULT_FTP_PORT    =   21,
+	INTERNET_DEFAULT_GOPHER_PORT =   70,
+	INTERNET_DEFAULT_HTTP_PORT   =   80,
+	INTERNET_DEFAULT_HTTPS_PORT  =  443,
+	INTERNET_DEFAULT_SOCKS_PORT  = 1080
+}
+
+const size_t
+	MAX_CACHE_ENTRY_INFO_SIZE       =  4096,
+	INTERNET_MAX_HOST_NAME_LENGTH   =   256,
+	INTERNET_MAX_USER_NAME_LENGTH   =   128,
+	INTERNET_MAX_PASSWORD_LENGTH    =   128,
+	INTERNET_MAX_PORT_NUMBER_LENGTH =     5,
+	INTERNET_MAX_PORT_NUMBER_VALUE  = 65535,
+	INTERNET_MAX_PATH_LENGTH        =  2048,
+	INTERNET_MAX_SCHEME_LENGTH      =    32,
+	INTERNET_MAX_URL_LENGTH         = INTERNET_MAX_SCHEME_LENGTH
+	                                  + "://".length
+	                                  + INTERNET_MAX_PATH_LENGTH;
+
+enum : DWORD {
+	INTERNET_KEEP_ALIVE_UNKNOWN  = DWORD.max,
+	INTERNET_KEEP_ALIVE_DISABLED = 0,
+	INTERNET_KEEP_ALIVE_ENABLED
+}
+
+enum {
+	INTERNET_REQFLAG_FROM_CACHE = 1,
+	INTERNET_REQFLAG_ASYNC      = 2
+}
+
+const DWORD
+	INTERNET_FLAG_RELOAD                   = 0x80000000,
+	INTERNET_FLAG_RAW_DATA                 = 0x40000000,
+	INTERNET_FLAG_EXISTING_CONNECT         = 0x20000000,
+	INTERNET_FLAG_ASYNC                    = 0x10000000,
+	INTERNET_FLAG_PASSIVE                  = 0x08000000,
+	INTERNET_FLAG_NO_CACHE_WRITE           = 0x04000000,
+	INTERNET_FLAG_DONT_CACHE               = INTERNET_FLAG_NO_CACHE_WRITE,
+	INTERNET_FLAG_MAKE_PERSISTENT          = 0x02000000,
+	INTERNET_FLAG_OFFLINE                  = 0x01000000,
+	INTERNET_FLAG_SECURE                   = 0x00800000,
+	INTERNET_FLAG_KEEP_CONNECTION          = 0x00400000,
+	INTERNET_FLAG_NO_AUTO_REDIRECT         = 0x00200000,
+	INTERNET_FLAG_READ_PREFETCH            = 0x00100000,
+	INTERNET_FLAG_NO_COOKIES               = 0x00080000,
+	INTERNET_FLAG_NO_AUTH                  = 0x00040000,
+	INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP  = 0x00008000,
+	INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS = 0x00004000,
+	INTERNET_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000,
+	INTERNET_FLAG_IGNORE_CERT_CN_INVALID   = 0x00001000,
+	INTERNET_FLAG_RESYNCHRONIZE            = 0x00000800,
+	INTERNET_FLAG_HYPERLINK                = 0x00000400,
+	INTERNET_FLAG_NO_UI                    = 0x00000200,
+	INTERNET_FLAG_PRAGMA_NOCACHE           = 0x00000100,
+	INTERNET_FLAG_MUST_CACHE_REQUEST       = 0x00000010,
+	INTERNET_FLAG_TRANSFER_ASCII           = FTP_TRANSFER_TYPE_ASCII,
+	INTERNET_FLAG_TRANSFER_BINARY          = FTP_TRANSFER_TYPE_BINARY,
+
+	SECURITY_INTERNET_MASK                 = 0x0000F000,
+	SECURITY_SET_MASK                      = SECURITY_INTERNET_MASK,
+
+	INTERNET_FLAGS_MASK                    = 0xFFFCFE13,
+	INTERNET_OPTIONS_MASK                  = ~INTERNET_FLAGS_MASK;
+
+const INTERNET_NO_CALLBACK = 0;
+const INTERNET_RFC1123_FORMAT = 0;
+const size_t INTERNET_RFC1123_BUFSIZE = 30;
+
+const DWORD
+	ICU_ESCAPE             = 0x80000000,
+	ICU_USERNAME           = 0x40000000,
+	ICU_NO_ENCODE          = 0x20000000,
+	ICU_DECODE             = 0x10000000,
+	ICU_NO_META            = 0x08000000,
+	ICU_ENCODE_SPACES_ONLY = 0x04000000,
+	ICU_BROWSER_MODE       = 0x02000000;
+
+enum {
+	INTERNET_OPEN_TYPE_PRECONFIG = 0,
+	INTERNET_OPEN_TYPE_DIRECT    = 1,
+	INTERNET_OPEN_TYPE_PROXY     = 3,
+	PRE_CONFIG_INTERNET_ACCESS   = INTERNET_OPEN_TYPE_PRECONFIG,
+	LOCAL_INTERNET_ACCESS        = INTERNET_OPEN_TYPE_DIRECT,
+	GATEWAY_INTERNET_ACCESS      = 2,
+	CERN_PROXY_INTERNET_ACCESS   = INTERNET_OPEN_TYPE_PROXY,
+}
+
+const ISO_GLOBAL      = 1;
+const ISO_REGISTRY    = 2;
+const ISO_VALID_FLAGS = ISO_GLOBAL | ISO_REGISTRY;
+
+enum {
+	INTERNET_OPTION_CALLBACK                    =  1,
+	INTERNET_OPTION_CONNECT_TIMEOUT,
+	INTERNET_OPTION_CONNECT_RETRIES,
+	INTERNET_OPTION_CONNECT_BACKOFF,
+	INTERNET_OPTION_SEND_TIMEOUT,
+	INTERNET_OPTION_CONTROL_SEND_TIMEOUT        = INTERNET_OPTION_SEND_TIMEOUT,
+	INTERNET_OPTION_RECEIVE_TIMEOUT,
+	INTERNET_OPTION_CONTROL_RECEIVE_TIMEOUT  = INTERNET_OPTION_RECEIVE_TIMEOUT,
+	INTERNET_OPTION_DATA_SEND_TIMEOUT,
+	INTERNET_OPTION_DATA_RECEIVE_TIMEOUT,
+	INTERNET_OPTION_HANDLE_TYPE,
+	INTERNET_OPTION_CONTEXT_VALUE,
+	INTERNET_OPTION_LISTEN_TIMEOUT,
+	INTERNET_OPTION_READ_BUFFER_SIZE,
+	INTERNET_OPTION_WRITE_BUFFER_SIZE,       // = 13
+	INTERNET_OPTION_ASYNC_ID                    = 15,
+	INTERNET_OPTION_ASYNC_PRIORITY,          // = 16
+	INTERNET_OPTION_PARENT_HANDLE               = 21,
+	INTERNET_OPTION_KEEP_CONNECTION,
+	INTERNET_OPTION_REQUEST_FLAGS,
+	INTERNET_OPTION_EXTENDED_ERROR,          // = 24
+	INTERNET_OPTION_OFFLINE_MODE                = 26,
+	INTERNET_OPTION_CACHE_STREAM_HANDLE,
+	INTERNET_OPTION_USERNAME,
+	INTERNET_OPTION_PASSWORD,
+	INTERNET_OPTION_ASYNC,
+	INTERNET_OPTION_SECURITY_FLAGS,
+	INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT,
+	INTERNET_OPTION_DATAFILE_NAME,
+	INTERNET_OPTION_URL,
+	INTERNET_OPTION_SECURITY_CERTIFICATE,
+	INTERNET_OPTION_SECURITY_KEY_BITNESS,
+	INTERNET_OPTION_REFRESH,
+	INTERNET_OPTION_PROXY,
+	INTERNET_OPTION_SETTINGS_CHANGED,
+	INTERNET_OPTION_VERSION,
+	INTERNET_OPTION_USER_AGENT,
+	INTERNET_OPTION_END_BROWSER_SESSION,
+	INTERNET_OPTION_PROXY_USERNAME,
+	INTERNET_OPTION_PROXY_PASSWORD,          // = 44
+	INTERNET_FIRST_OPTION                       = INTERNET_OPTION_CALLBACK,
+	// why?
+	INTERNET_LAST_OPTION                        = INTERNET_OPTION_USER_AGENT
+}
+
+const INTERNET_PRIORITY_FOREGROUND = 1000;
+
+enum {
+	INTERNET_HANDLE_TYPE_INTERNET = 1,
+	INTERNET_HANDLE_TYPE_CONNECT_FTP,
+	INTERNET_HANDLE_TYPE_CONNECT_GOPHER,
+	INTERNET_HANDLE_TYPE_CONNECT_HTTP,
+	INTERNET_HANDLE_TYPE_FTP_FIND,
+	INTERNET_HANDLE_TYPE_FTP_FIND_HTML,
+	INTERNET_HANDLE_TYPE_FTP_FILE,
+	INTERNET_HANDLE_TYPE_FTP_FILE_HTML,
+	INTERNET_HANDLE_TYPE_GOPHER_FIND,
+	INTERNET_HANDLE_TYPE_GOPHER_FIND_HTML,
+	INTERNET_HANDLE_TYPE_GOPHER_FILE,
+	INTERNET_HANDLE_TYPE_GOPHER_FILE_HTML,
+	INTERNET_HANDLE_TYPE_HTTP_REQUEST
+}
+
+const DWORD
+	SECURITY_FLAG_SECURE                   = 0x00000001,
+	SECURITY_FLAG_SSL                      = 0x00000002,
+	SECURITY_FLAG_SSL3                     = 0x00000004,
+	SECURITY_FLAG_PCT                      = 0x00000008,
+	SECURITY_FLAG_PCT4                     = 0x00000010,
+	SECURITY_FLAG_IETFSSL4                 = 0x00000020,
+	SECURITY_FLAG_IGNORE_REVOCATION        = 0x00000080,
+	SECURITY_FLAG_IGNORE_UNKNOWN_CA        = 0x00000100,
+	SECURITY_FLAG_IGNORE_WRONG_USAGE       = 0x00000200,
+	SECURITY_FLAG_40BIT                    = 0x10000000,
+	SECURITY_FLAG_128BIT                   = 0x20000000,
+	SECURITY_FLAG_56BIT                    = 0x40000000,
+	SECURITY_FLAG_UNKNOWNBIT               = 0x80000000,
+	SECURITY_FLAG_NORMALBITNESS            = SECURITY_FLAG_40BIT,
+	SECURITY_FLAG_IGNORE_CERT_CN_INVALID   = INTERNET_FLAG_IGNORE_CERT_CN_INVALID,
+	SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = INTERNET_FLAG_IGNORE_CERT_DATE_INVALID,
+	SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTPS = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS,
+	SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTP  = INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP;
+
+enum {
+	INTERNET_SERVICE_FTP = 1,
+	INTERNET_SERVICE_GOPHER,
+	INTERNET_SERVICE_HTTP
+}
+
+enum {
+	INTERNET_STATUS_RESOLVING_NAME        =  10,
+	INTERNET_STATUS_NAME_RESOLVED         =  11,
+	INTERNET_STATUS_CONNECTING_TO_SERVER  =  20,
+	INTERNET_STATUS_CONNECTED_TO_SERVER   =  21,
+	INTERNET_STATUS_SENDING_REQUEST       =  30,
+	INTERNET_STATUS_REQUEST_SENT          =  31,
+	INTERNET_STATUS_RECEIVING_RESPONSE    =  40,
+	INTERNET_STATUS_RESPONSE_RECEIVED     =  41,
+	INTERNET_STATUS_CTL_RESPONSE_RECEIVED =  42,
+	INTERNET_STATUS_PREFETCH              =  43,
+	INTERNET_STATUS_CLOSING_CONNECTION    =  50,
+	INTERNET_STATUS_CONNECTION_CLOSED     =  51,
+	INTERNET_STATUS_HANDLE_CREATED        =  60,
+	INTERNET_STATUS_HANDLE_CLOSING        =  70,
+	INTERNET_STATUS_REQUEST_COMPLETE      = 100,
+	INTERNET_STATUS_REDIRECT              = 110
+}
+
+const INTERNET_INVALID_STATUS_CALLBACK
+  = cast(INTERNET_STATUS_CALLBACK) -1;
+
+enum {
+	FTP_TRANSFER_TYPE_UNKNOWN = 0,
+	FTP_TRANSFER_TYPE_ASCII   = 1,
+	FTP_TRANSFER_TYPE_BINARY  = 2,
+	FTP_TRANSFER_TYPE_MASK    = 3
+}
+
+const size_t
+	MAX_GOPHER_DISPLAY_TEXT   = 128,
+	MAX_GOPHER_SELECTOR_TEXT  = 256,
+	MAX_GOPHER_HOST_NAME      = INTERNET_MAX_HOST_NAME_LENGTH,
+	MAX_GOPHER_LOCATOR_LENGTH
+	  = 1 + MAX_GOPHER_DISPLAY_TEXT + 1 + MAX_GOPHER_SELECTOR_TEXT + 1
+	    + MAX_GOPHER_HOST_NAME + 1 + INTERNET_MAX_PORT_NUMBER_LENGTH + 4;
+
+const DWORD
+	GOPHER_TYPE_TEXT_FILE      = 0x00000001,
+	GOPHER_TYPE_DIRECTORY      = 0x00000002,
+	GOPHER_TYPE_CSO            = 0x00000004,
+	GOPHER_TYPE_ERROR          = 0x00000008,
+	GOPHER_TYPE_MAC_BINHEX     = 0x00000010,
+	GOPHER_TYPE_DOS_ARCHIVE    = 0x00000020,
+	GOPHER_TYPE_UNIX_UUENCODED = 0x00000040,
+	GOPHER_TYPE_INDEX_SERVER   = 0x00000080,
+	GOPHER_TYPE_TELNET         = 0x00000100,
+	GOPHER_TYPE_BINARY         = 0x00000200,
+	GOPHER_TYPE_REDUNDANT      = 0x00000400,
+	GOPHER_TYPE_TN3270         = 0x00000800,
+	GOPHER_TYPE_GIF            = 0x00001000,
+	GOPHER_TYPE_IMAGE          = 0x00002000,
+	GOPHER_TYPE_BITMAP         = 0x00004000,
+	GOPHER_TYPE_MOVIE          = 0x00008000,
+	GOPHER_TYPE_SOUND          = 0x00010000,
+	GOPHER_TYPE_HTML           = 0x00020000,
+	GOPHER_TYPE_PDF            = 0x00040000,
+	GOPHER_TYPE_CALENDAR       = 0x00080000,
+	GOPHER_TYPE_INLINE         = 0x00100000,
+	GOPHER_TYPE_UNKNOWN        = 0x20000000,
+	GOPHER_TYPE_ASK            = 0x40000000,
+	GOPHER_TYPE_GOPHER_PLUS    = 0x80000000,
+	GOPHER_TYPE_FILE_MASK      = 0x001FF271;
+
+BOOL IS_GOPHER_FILE(DWORD t) {
+	return !!(t & GOPHER_TYPE_FILE_MASK);
+}
+
+BOOL IS_GOPHER_DIRECTORY(DWORD t) {
+	return !!(t & GOPHER_TYPE_DIRECTORY);
+}
+
+BOOL IS_GOPHER_PHONE_SERVER(DWORD t) {
+	return !!(t & GOPHER_TYPE_CSO);
+}
+
+BOOL IS_GOPHER_ERROR(DWORD t) {
+	return !!(t & GOPHER_TYPE_ERROR);
+}
+
+BOOL IS_GOPHER_INDEX_SERVER(DWORD t) {
+	return !!(t & GOPHER_TYPE_INDEX_SERVER);
+}
+
+BOOL IS_GOPHER_TELNET_SESSION(DWORD t) {
+	return !!(t & GOPHER_TYPE_TELNET);
+}
+
+BOOL IS_GOPHER_BACKUP_SERVER(DWORD t) {
+	return !!(t & GOPHER_TYPE_REDUNDANT);
+}
+
+BOOL IS_GOPHER_TN3270_SESSION(DWORD t) {
+	return !!(t & GOPHER_TYPE_TN3270);
+}
+
+BOOL IS_GOPHER_ASK(DWORD t) {
+	return !!(t & GOPHER_TYPE_ASK);
+}
+
+BOOL IS_GOPHER_PLUS(DWORD t) {
+	return !!(t & GOPHER_TYPE_GOPHER_PLUS);
+}
+
+BOOL IS_GOPHER_TYPE_KNOWN(DWORD t) {
+	return !(t & GOPHER_TYPE_UNKNOWN);
+}
+
+const size_t
+	MAX_GOPHER_CATEGORY_NAME    = 128,
+	MAX_GOPHER_ATTRIBUTE_NAME   = 128,
+	MIN_GOPHER_ATTRIBUTE_LENGTH = 256;
+
+const TCHAR[]
+	GOPHER_INFO_CATEGORY      = "+INFO",
+	GOPHER_ADMIN_CATEGORY     = "+ADMIN",
+	GOPHER_VIEWS_CATEGORY     = "+VIEWS",
+	GOPHER_ABSTRACT_CATEGORY  = "+ABSTRACT",
+	GOPHER_VERONICA_CATEGORY  = "+VERONICA",
+	GOPHER_ADMIN_ATTRIBUTE    = "Admin",
+	GOPHER_MOD_DATE_ATTRIBUTE = "Mod-Date",
+	GOPHER_TTL_ATTRIBUTE      = "TTL",
+	GOPHER_SCORE_ATTRIBUTE    = "Score",
+	GOPHER_RANGE_ATTRIBUTE    = "Score-range",
+	GOPHER_SITE_ATTRIBUTE     = "Site",
+	GOPHER_ORG_ATTRIBUTE      = "Org",
+	GOPHER_LOCATION_ATTRIBUTE = "Loc",
+	GOPHER_GEOG_ATTRIBUTE     = "Geog",
+	GOPHER_TIMEZONE_ATTRIBUTE = "TZ",
+	GOPHER_PROVIDER_ATTRIBUTE = "Provider",
+	GOPHER_VERSION_ATTRIBUTE  = "Version",
+	GOPHER_ABSTRACT_ATTRIBUTE = "Abstract",
+	GOPHER_VIEW_ATTRIBUTE     = "View",
+	GOPHER_TREEWALK_ATTRIBUTE = "treewalk";
+
+enum : DWORD {
+	GOPHER_ATTRIBUTE_ID_BASE = 0xABCCCC00,
+	GOPHER_CATEGORY_ID_ALL,
+	GOPHER_CATEGORY_ID_INFO,
+	GOPHER_CATEGORY_ID_ADMIN,
+	GOPHER_CATEGORY_ID_VIEWS,
+	GOPHER_CATEGORY_ID_ABSTRACT,
+	GOPHER_CATEGORY_ID_VERONICA,
+	GOPHER_CATEGORY_ID_ASK,
+	GOPHER_CATEGORY_ID_UNKNOWN,
+	GOPHER_ATTRIBUTE_ID_ALL,
+	GOPHER_ATTRIBUTE_ID_ADMIN,
+	GOPHER_ATTRIBUTE_ID_MOD_DATE,
+	GOPHER_ATTRIBUTE_ID_TTL,
+	GOPHER_ATTRIBUTE_ID_SCORE,
+	GOPHER_ATTRIBUTE_ID_RANGE,
+	GOPHER_ATTRIBUTE_ID_SITE,
+	GOPHER_ATTRIBUTE_ID_ORG,
+	GOPHER_ATTRIBUTE_ID_LOCATION,
+	GOPHER_ATTRIBUTE_ID_GEOG,
+	GOPHER_ATTRIBUTE_ID_TIMEZONE,
+	GOPHER_ATTRIBUTE_ID_PROVIDER,
+	GOPHER_ATTRIBUTE_ID_VERSION,
+	GOPHER_ATTRIBUTE_ID_ABSTRACT,
+	GOPHER_ATTRIBUTE_ID_VIEW,
+	GOPHER_ATTRIBUTE_ID_TREEWALK,
+	GOPHER_ATTRIBUTE_ID_UNKNOWN
+}
+
+const HTTP_MAJOR_VERSION   = 1;
+const HTTP_MINOR_VERSION   = 0;
+const TCHAR[] HTTP_VERSION = "HTTP/1.0";
+
+enum : DWORD {
+	HTTP_QUERY_MIME_VERSION,
+	HTTP_QUERY_CONTENT_TYPE,
+	HTTP_QUERY_CONTENT_TRANSFER_ENCODING,
+	HTTP_QUERY_CONTENT_ID,
+	HTTP_QUERY_CONTENT_DESCRIPTION,
+	HTTP_QUERY_CONTENT_LENGTH,
+	HTTP_QUERY_CONTENT_LANGUAGE,
+	HTTP_QUERY_ALLOW,
+	HTTP_QUERY_PUBLIC,
+	HTTP_QUERY_DATE,
+	HTTP_QUERY_EXPIRES,
+	HTTP_QUERY_LAST_MODIFIED,
+	HTTP_QUERY_MESSAGE_ID,
+	HTTP_QUERY_URI,
+	HTTP_QUERY_DERIVED_FROM,
+	HTTP_QUERY_COST,
+	HTTP_QUERY_LINK,
+	HTTP_QUERY_PRAGMA,
+	HTTP_QUERY_VERSION,
+	HTTP_QUERY_STATUS_CODE,
+	HTTP_QUERY_STATUS_TEXT,
+	HTTP_QUERY_RAW_HEADERS,
+	HTTP_QUERY_RAW_HEADERS_CRLF,
+	HTTP_QUERY_CONNECTION,
+	HTTP_QUERY_ACCEPT,
+	HTTP_QUERY_ACCEPT_CHARSET,
+	HTTP_QUERY_ACCEPT_ENCODING,
+	HTTP_QUERY_ACCEPT_LANGUAGE,
+	HTTP_QUERY_AUTHORIZATION,
+	HTTP_QUERY_CONTENT_ENCODING,
+	HTTP_QUERY_FORWARDED,
+	HTTP_QUERY_FROM,
+	HTTP_QUERY_IF_MODIFIED_SINCE,
+	HTTP_QUERY_LOCATION,
+	HTTP_QUERY_ORIG_URI,
+	HTTP_QUERY_REFERER,
+	HTTP_QUERY_RETRY_AFTER,
+	HTTP_QUERY_SERVER,
+	HTTP_QUERY_TITLE,
+	HTTP_QUERY_USER_AGENT,
+	HTTP_QUERY_WWW_AUTHENTICATE,
+	HTTP_QUERY_PROXY_AUTHENTICATE,
+	HTTP_QUERY_ACCEPT_RANGES,
+	HTTP_QUERY_SET_COOKIE,
+	HTTP_QUERY_COOKIE,
+	HTTP_QUERY_REQUEST_METHOD,
+	HTTP_QUERY_MAX    = 45,
+	HTTP_QUERY_CUSTOM = 65535
+}
+
+const DWORD
+	HTTP_QUERY_FLAG_REQUEST_HEADERS = 0x80000000,
+	HTTP_QUERY_FLAG_SYSTEMTIME      = 0x40000000,
+	HTTP_QUERY_FLAG_NUMBER          = 0x20000000,
+	HTTP_QUERY_FLAG_COALESCE        = 0x10000000,
+	HTTP_QUERY_MODIFIER_FLAGS_MASK  = 0xF0000000,
+	HTTP_QUERY_HEADER_MASK          = ~HTTP_QUERY_MODIFIER_FLAGS_MASK;
+
+enum {
+	HTTP_STATUS_OK                 = 200,
+	HTTP_STATUS_CREATED,
+	HTTP_STATUS_ACCEPTED,
+	HTTP_STATUS_PARTIAL,
+	HTTP_STATUS_NO_CONTENT,     // = 204
+	HTTP_STATUS_AMBIGUOUS          = 300,
+	HTTP_STATUS_MOVED,
+	HTTP_STATUS_REDIRECT,
+	HTTP_STATUS_REDIRECT_METHOD,
+	HTTP_STATUS_NOT_MODIFIED,   // = 304
+	HTTP_STATUS_BAD_REQUEST        = 400,
+	HTTP_STATUS_DENIED,
+	HTTP_STATUS_PAYMENT_REQ,
+	HTTP_STATUS_FORBIDDEN,
+	HTTP_STATUS_NOT_FOUND,
+	HTTP_STATUS_BAD_METHOD,
+	HTTP_STATUS_NONE_ACCEPTABLE,
+	HTTP_STATUS_PROXY_AUTH_REQ,
+	HTTP_STATUS_REQUEST_TIMEOUT,
+	HTTP_STATUS_CONFLICT,
+	HTTP_STATUS_GONE,
+	HTTP_STATUS_AUTH_REFUSED,   // = 411
+	HTTP_STATUS_SERVER_ERROR       = 500,
+	HTTP_STATUS_NOT_SUPPORTED,
+	HTTP_STATUS_BAD_GATEWAY,
+	HTTP_STATUS_SERVICE_UNAVAIL,
+	HTTP_STATUS_GATEWAY_TIMEOUT // = 504
+}
+
+enum {
+	INTERNET_PREFETCH_PROGRESS,
+	INTERNET_PREFETCH_COMPLETE,
+	INTERNET_PREFETCH_ABORTED
+}
+
+const FLAGS_ERROR_UI_FILTER_FOR_ERRORS    = 0x01;
+const FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS = 0x02;
+const FLAGS_ERROR_UI_FLAGS_GENERATE_DATA  = 0x04;
+const FLAGS_ERROR_UI_FLAGS_NO_UI          = 0x08;
+
+const DWORD
+	HTTP_ADDREQ_INDEX_MASK                   = 0x0000FFFF,
+	HTTP_ADDREQ_FLAGS_MASK                   = 0xFFFF0000,
+	HTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON = 0x01000000,
+	HTTP_ADDREQ_FLAG_ADD_IF_NEW              = 0x10000000,
+	HTTP_ADDREQ_FLAG_ADD                     = 0x20000000,
+	HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA     = 0x40000000,
+	HTTP_ADDREQ_FLAG_COALESCE          = HTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA,
+	HTTP_ADDREQ_FLAG_REPLACE                 = 0x80000000;
+
+enum {
+	INTERNET_ERROR_BASE                       = 12000,
+	ERROR_INTERNET_OUT_OF_HANDLES,
+	ERROR_INTERNET_TIMEOUT,
+	ERROR_INTERNET_EXTENDED_ERROR,
+	ERROR_INTERNET_INTERNAL_ERROR,
+	ERROR_INTERNET_INVALID_URL,
+	ERROR_INTERNET_UNRECOGNIZED_SCHEME,
+	ERROR_INTERNET_NAME_NOT_RESOLVED,
+	ERROR_INTERNET_PROTOCOL_NOT_FOUND,
+	ERROR_INTERNET_INVALID_OPTION,
+	ERROR_INTERNET_BAD_OPTION_LENGTH,
+	ERROR_INTERNET_OPTION_NOT_SETTABLE,
+	ERROR_INTERNET_SHUTDOWN,
+	ERROR_INTERNET_INCORRECT_USER_NAME,
+	ERROR_INTERNET_INCORRECT_PASSWORD,
+	ERROR_INTERNET_LOGIN_FAILURE,
+	ERROR_INTERNET_INVALID_OPERATION,
+	ERROR_INTERNET_OPERATION_CANCELLED,
+	ERROR_INTERNET_INCORRECT_HANDLE_TYPE,
+	ERROR_INTERNET_INCORRECT_HANDLE_STATE,
+	ERROR_INTERNET_NOT_PROXY_REQUEST,
+	ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND,
+	ERROR_INTERNET_BAD_REGISTRY_PARAMETER,
+	ERROR_INTERNET_NO_DIRECT_ACCESS,
+	ERROR_INTERNET_NO_CONTEXT,
+	ERROR_INTERNET_NO_CALLBACK,
+	ERROR_INTERNET_REQUEST_PENDING,
+	ERROR_INTERNET_INCORRECT_FORMAT,
+	ERROR_INTERNET_ITEM_NOT_FOUND,
+	ERROR_INTERNET_CANNOT_CONNECT,
+	ERROR_INTERNET_CONNECTION_ABORTED,
+	ERROR_INTERNET_CONNECTION_RESET,
+	ERROR_INTERNET_FORCE_RETRY,
+	ERROR_INTERNET_INVALID_PROXY_REQUEST,
+	ERROR_INTERNET_NEED_UI,                // = INTERNET_ERROR_BASE +  34
+	ERROR_INTERNET_HANDLE_EXISTS              = INTERNET_ERROR_BASE +  36,
+	ERROR_INTERNET_SEC_CERT_DATE_INVALID,
+	ERROR_INTERNET_SEC_CERT_CN_INVALID,
+	ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR,
+	ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR,
+	ERROR_INTERNET_MIXED_SECURITY,
+	ERROR_INTERNET_CHG_POST_IS_NON_SECURE,
+	ERROR_INTERNET_POST_IS_NON_SECURE,
+	ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED,
+	ERROR_INTERNET_INVALID_CA,
+	ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP,
+	ERROR_INTERNET_ASYNC_THREAD_FAILED,
+	ERROR_INTERNET_REDIRECT_SCHEME_CHANGE, // = INTERNET_ERROR_BASE +  48
+
+	ERROR_FTP_TRANSFER_IN_PROGRESS            = INTERNET_ERROR_BASE + 110,
+	ERROR_FTP_DROPPED,                     // = INTERNET_ERROR_BASE + 111
+	ERROR_GOPHER_PROTOCOL_ERROR               = INTERNET_ERROR_BASE + 130,
+	ERROR_GOPHER_NOT_FILE,
+	ERROR_GOPHER_DATA_ERROR,
+	ERROR_GOPHER_END_OF_DATA,
+	ERROR_GOPHER_INVALID_LOCATOR,
+	ERROR_GOPHER_INCORRECT_LOCATOR_TYPE,
+	ERROR_GOPHER_NOT_GOPHER_PLUS,
+	ERROR_GOPHER_ATTRIBUTE_NOT_FOUND,
+	ERROR_GOPHER_UNKNOWN_LOCATOR,          // = INTERNET_ERROR_BASE + 138,
+	ERROR_HTTP_HEADER_NOT_FOUND               = INTERNET_ERROR_BASE + 150,
+	ERROR_HTTP_DOWNLEVEL_SERVER,
+	ERROR_HTTP_INVALID_SERVER_RESPONSE,
+	ERROR_HTTP_INVALID_HEADER,
+	ERROR_HTTP_INVALID_QUERY_REQUEST,
+	ERROR_HTTP_HEADER_ALREADY_EXISTS,
+	ERROR_HTTP_REDIRECT_FAILED,
+	ERROR_INTERNET_SECURITY_CHANNEL_ERROR,
+	ERROR_INTERNET_UNABLE_TO_CACHE_FILE,
+	ERROR_INTERNET_TCPIP_NOT_INSTALLED,
+	ERROR_HTTP_NOT_REDIRECTED,             // = INTERNET_ERROR_BASE + 160
+	// why?
+	INTERNET_ERROR_LAST                  = ERROR_INTERNET_TCPIP_NOT_INSTALLED
+}
+
+
+const NORMAL_CACHE_ENTRY     = 0x000001;
+const STABLE_CACHE_ENTRY     = 0x000002;
+const STICKY_CACHE_ENTRY     = 0x000004;
+const SPARSE_CACHE_ENTRY     = 0x010000;
+const OCX_CACHE_ENTRY        = 0x020000;
+const COOKIE_CACHE_ENTRY     = 0x100000;
+const URLHISTORY_CACHE_ENTRY = 0x200000;
+
+const CACHE_ENTRY_ATTRIBUTE_FC  = 0x0004;
+const CACHE_ENTRY_HITRATE_FC    = 0x0010;
+const CACHE_ENTRY_MODTIME_FC    = 0x0040;
+const CACHE_ENTRY_EXPTIME_FC    = 0x0080;
+const CACHE_ENTRY_ACCTIME_FC    = 0x0100;
+const CACHE_ENTRY_SYNCTIME_FC   = 0x0200;
+const CACHE_ENTRY_HEADERINFO_FC = 0x0400;
+
+enum {
+	WININET_API_FLAG_ASYNC       = 1,
+	WININET_API_FLAG_SYNC        = 4,
+	WININET_API_FLAG_USE_CONTEXT = 8
+}
+
+// FIXME: how should these really be grouped?
+enum {
+	IRF_ASYNC       = WININET_API_FLAG_ASYNC,
+	IRF_SYNC        = WININET_API_FLAG_SYNC,
+	IRF_USE_CONTEXT = WININET_API_FLAG_USE_CONTEXT,
+}
+const IRF_NO_WAIT = 8;
+
+enum {
+	HSR_ASYNC = WININET_API_FLAG_ASYNC,
+	HSR_SYNC = WININET_API_FLAG_SYNC,
+	HSR_USE_CONTEXT = WININET_API_FLAG_USE_CONTEXT,
+}
+
+const HSR_INITIATE =  8;
+const HSR_DOWNLOAD = 16;
+const HSR_CHUNKED  = 32;
+
+const INTERNET_DIAL_UNATTENDED              = 0x8000;
+const INTERNET_DIALSTATE_DISCONNECTED       = 1;
+const INTERENT_GOONLINE_REFRESH             = 1;
+const INTERENT_GOONLINE_MASK                = 1;
+const INTERNET_AUTODIAL_FORCE_ONLINE        = 1;
+const INTERNET_AUTODIAL_FORCE_UNATTENDED    = 2;
+const INTERNET_AUTODIAL_FAILIFSECURITYCHECK = 4;
+const INTERNET_CONNECTION_MODEM             = 0x01;
+const INTERNET_CONNECTION_LAN               = 0x02;
+const INTERNET_CONNECTION_PROXY             = 0x04;
+const INTERNET_CONNECTION_MODEM_BUSY        = 0x08;
+const INTERNET_RAS_INSTALLED                = 0x10;
+const INTERNET_CONNECTION_OFFLINE           = 0x20;
+const INTERNET_CONNECTION_CONFIGURED        = 0x40;
+
+enum {
+	CACHEGROUP_SEARCH_ALL   = 0,
+	CACHEGROUP_SEARCH_BYURL = 1
+}
+
+enum {
+	INTERNET_CACHE_GROUP_ADD    = 0,
+	INTERNET_CACHE_GROUP_REMOVE = 1
+}
+
+alias HANDLE HINTERNET;
+alias HANDLE* LPHINTERNET;
+
+alias LONGLONG GROUPID;
+alias WORD INTERNET_PORT;
+alias WORD* LPINTERNET_PORT;
+
+enum INTERNET_SCHEME {
+	INTERNET_SCHEME_PARTIAL = -2,
+	INTERNET_SCHEME_UNKNOWN,
+	INTERNET_SCHEME_DEFAULT,
+	INTERNET_SCHEME_FTP,
+	INTERNET_SCHEME_GOPHER,
+	INTERNET_SCHEME_HTTP,
+	INTERNET_SCHEME_HTTPS,
+	INTERNET_SCHEME_FILE,
+	INTERNET_SCHEME_NEWS,
+	INTERNET_SCHEME_MAILTO,
+	INTERNET_SCHEME_SOCKS,
+	INTERNET_SCHEME_FIRST = INTERNET_SCHEME_FTP,
+	INTERNET_SCHEME_LAST = INTERNET_SCHEME_SOCKS
+}
+alias INTERNET_SCHEME* LPINTERNET_SCHEME;
+
+struct INTERNET_ASYNC_RESULT {
+	DWORD dwResult;
+	DWORD dwError;
+}
+alias INTERNET_ASYNC_RESULT* LPINTERNET_ASYNC_RESULT;
+
+struct INTERNET_PREFETCH_STATUS {
+	DWORD dwStatus;
+	DWORD dwSize;
+}
+alias INTERNET_PREFETCH_STATUS* LPINTERNET_PREFETCH_STATUS;
+
+struct INTERNET_PROXY_INFO {
+	DWORD dwAccessType;
+	LPCTSTR lpszProxy;
+	LPCTSTR lpszProxyBypass;
+}
+alias INTERNET_PROXY_INFO* LPINTERNET_PROXY_INFO;
+
+struct INTERNET_VERSION_INFO {
+	DWORD dwMajorVersion;
+	DWORD dwMinorVersion;
+}
+alias INTERNET_VERSION_INFO* LPINTERNET_VERSION_INFO;
+
+struct URL_COMPONENTSA {
+	DWORD           dwStructSize = URL_COMPONENTSA.sizeof;
+	LPSTR           lpszScheme;
+	DWORD           dwSchemeLength;
+	INTERNET_SCHEME nScheme;
+	LPSTR           lpszHostName;
+	DWORD           dwHostNameLength;
+	INTERNET_PORT   nPort;
+	LPSTR           lpszUserName;
+	DWORD           dwUserNameLength;
+	LPSTR           lpszPassword;
+	DWORD           dwPasswordLength;
+	LPSTR           lpszUrlPath;
+	DWORD           dwUrlPathLength;
+	LPSTR           lpszExtraInfo;
+	DWORD           dwExtraInfoLength;
+}
+alias URL_COMPONENTSA* LPURL_COMPONENTSA;
+
+struct URL_COMPONENTSW {
+	DWORD  dwStructSize = URL_COMPONENTSW.sizeof;
+	LPWSTR lpszScheme;
+	DWORD  dwSchemeLength;
+	INTERNET_SCHEME nScheme;
+	LPWSTR lpszHostName;
+	DWORD  dwHostNameLength;
+	INTERNET_PORT nPort;
+	LPWSTR lpszUserName;
+	DWORD  dwUserNameLength;
+	LPWSTR lpszPassword;
+	DWORD  dwPasswordLength;
+	LPWSTR lpszUrlPath;
+	DWORD  dwUrlPathLength;
+	LPWSTR lpszExtraInfo;
+	DWORD  dwExtraInfoLength;
+}
+alias URL_COMPONENTSW* LPURL_COMPONENTSW;
+
+struct INTERNET_CERTIFICATE_INFO {
+	FILETIME ftExpiry;
+	FILETIME ftStart;
+	LPTSTR   lpszSubjectInfo;
+	LPTSTR   lpszIssuerInfo;
+	LPTSTR   lpszProtocolName;
+	LPTSTR   lpszSignatureAlgName;
+	LPTSTR   lpszEncryptionAlgName;
+	DWORD    dwKeySize;
+}
+alias INTERNET_CERTIFICATE_INFO* LPINTERNET_CERTIFICATE_INFO;
+
+extern (Windows) alias void function(HINTERNET, DWORD, DWORD, PVOID, DWORD)
+  INTERNET_STATUS_CALLBACK;
+alias INTERNET_STATUS_CALLBACK* LPINTERNET_STATUS_CALLBACK;
+
+struct GOPHER_FIND_DATAA {
+	CHAR[MAX_GOPHER_DISPLAY_TEXT+1] DisplayString;
+	DWORD    GopherType;
+	DWORD    SizeLow;
+	DWORD    SizeHigh;
+	FILETIME LastModificationTime;
+	CHAR[MAX_GOPHER_LOCATOR_LENGTH+1] Locator;
+}
+alias GOPHER_FIND_DATAA* LPGOPHER_FIND_DATAA;
+
+struct GOPHER_FIND_DATAW {
+	WCHAR[MAX_GOPHER_DISPLAY_TEXT+1] DisplayString;
+	DWORD    GopherType;
+	DWORD    SizeLow;
+	DWORD    SizeHigh;
+	FILETIME LastModificationTime;
+	WCHAR[MAX_GOPHER_LOCATOR_LENGTH+1] Locator;
+}
+alias GOPHER_FIND_DATAW* LPGOPHER_FIND_DATAW;
+
+struct GOPHER_ADMIN_ATTRIBUTE_TYPE {
+	LPCTSTR Comment;
+	LPCTSTR EmailAddress;
+}
+alias GOPHER_ADMIN_ATTRIBUTE_TYPE* LPGOPHER_ADMIN_ATTRIBUTE_TYPE;
+
+struct GOPHER_MOD_DATE_ATTRIBUTE_TYPE {
+	FILETIME DateAndTime;
+}
+alias GOPHER_MOD_DATE_ATTRIBUTE_TYPE* LPGOPHER_MOD_DATE_ATTRIBUTE_TYPE;
+
+struct GOPHER_TTL_ATTRIBUTE_TYPE {
+	DWORD Ttl;
+}
+alias GOPHER_TTL_ATTRIBUTE_TYPE* LPGOPHER_TTL_ATTRIBUTE_TYPE;
+
+struct GOPHER_SCORE_ATTRIBUTE_TYPE {
+	INT Score;
+}
+alias GOPHER_SCORE_ATTRIBUTE_TYPE* LPGOPHER_SCORE_ATTRIBUTE_TYPE;
+
+struct GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE {
+	INT LowerBound;
+	INT UpperBound;
+}
+alias GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE* LPGOPHER_SCORE_RANGE_ATTRIBUTE_TYPE;
+
+struct GOPHER_SITE_ATTRIBUTE_TYPE {
+	LPCTSTR Site;
+}
+alias GOPHER_SITE_ATTRIBUTE_TYPE* LPGOPHER_SITE_ATTRIBUTE_TYPE;
+
+struct GOPHER_ORGANIZATION_ATTRIBUTE_TYPE {
+	LPCTSTR Organization;
+}
+alias GOPHER_ORGANIZATION_ATTRIBUTE_TYPE* LPGOPHER_ORGANIZATION_ATTRIBUTE_TYPE;
+
+struct GOPHER_LOCATION_ATTRIBUTE_TYPE {
+	LPCTSTR Location;
+}
+alias GOPHER_LOCATION_ATTRIBUTE_TYPE* LPGOPHER_LOCATION_ATTRIBUTE_TYPE;
+
+struct GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE {
+	INT DegreesNorth;
+	INT MinutesNorth;
+	INT SecondsNorth;
+	INT DegreesEast;
+	INT MinutesEast;
+	INT SecondsEast;
+}
+alias GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE*
+  LPGOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE;
+
+struct GOPHER_TIMEZONE_ATTRIBUTE_TYPE {
+	INT Zone;
+}
+alias GOPHER_TIMEZONE_ATTRIBUTE_TYPE* LPGOPHER_TIMEZONE_ATTRIBUTE_TYPE;
+
+struct GOPHER_PROVIDER_ATTRIBUTE_TYPE {
+	LPCTSTR Provider;
+}
+alias GOPHER_PROVIDER_ATTRIBUTE_TYPE* LPGOPHER_PROVIDER_ATTRIBUTE_TYPE;
+
+struct GOPHER_VERSION_ATTRIBUTE_TYPE {
+	LPCTSTR Version;
+}
+alias GOPHER_VERSION_ATTRIBUTE_TYPE* LPGOPHER_VERSION_ATTRIBUTE_TYPE;
+
+struct GOPHER_ABSTRACT_ATTRIBUTE_TYPE {
+	LPCTSTR ShortAbstract;
+	LPCTSTR AbstractFile;
+}
+alias GOPHER_ABSTRACT_ATTRIBUTE_TYPE* LPGOPHER_ABSTRACT_ATTRIBUTE_TYPE;
+
+struct GOPHER_VIEW_ATTRIBUTE_TYPE {
+	LPCTSTR ContentType;
+	LPCTSTR Language;
+	DWORD   Size;
+}
+alias GOPHER_VIEW_ATTRIBUTE_TYPE* LPGOPHER_VIEW_ATTRIBUTE_TYPE;
+
+struct GOPHER_VERONICA_ATTRIBUTE_TYPE {
+	BOOL TreeWalk;
+}
+alias GOPHER_VERONICA_ATTRIBUTE_TYPE* LPGOPHER_VERONICA_ATTRIBUTE_TYPE;
+
+struct GOPHER_ASK_ATTRIBUTE_TYPE {
+	LPCTSTR QuestionType;
+	LPCTSTR QuestionText;
+}
+alias GOPHER_ASK_ATTRIBUTE_TYPE* LPGOPHER_ASK_ATTRIBUTE_TYPE;
+
+struct GOPHER_UNKNOWN_ATTRIBUTE_TYPE {
+	LPCTSTR Text;
+}
+alias GOPHER_UNKNOWN_ATTRIBUTE_TYPE* LPGOPHER_UNKNOWN_ATTRIBUTE_TYPE;
+
+struct GOPHER_ATTRIBUTE_TYPE {
+	DWORD CategoryId;
+	DWORD AttributeId;
+	union {
+		GOPHER_ADMIN_ATTRIBUTE_TYPE                 Admin;
+		GOPHER_MOD_DATE_ATTRIBUTE_TYPE              ModDate;
+		GOPHER_TTL_ATTRIBUTE_TYPE                   Ttl;
+		GOPHER_SCORE_ATTRIBUTE_TYPE                 Score;
+		GOPHER_SCORE_RANGE_ATTRIBUTE_TYPE           ScoreRange;
+		GOPHER_SITE_ATTRIBUTE_TYPE                  Site;
+		GOPHER_ORGANIZATION_ATTRIBUTE_TYPE          Organization;
+		GOPHER_LOCATION_ATTRIBUTE_TYPE              Location;
+		GOPHER_GEOGRAPHICAL_LOCATION_ATTRIBUTE_TYPE GeographicalLocation;
+		GOPHER_TIMEZONE_ATTRIBUTE_TYPE              TimeZone;
+		GOPHER_PROVIDER_ATTRIBUTE_TYPE              Provider;
+		GOPHER_VERSION_ATTRIBUTE_TYPE               Version;
+		GOPHER_ABSTRACT_ATTRIBUTE_TYPE              Abstract;
+		GOPHER_VIEW_ATTRIBUTE_TYPE                  View;
+		GOPHER_VERONICA_ATTRIBUTE_TYPE              Veronica;
+		GOPHER_ASK_ATTRIBUTE_TYPE                   Ask;
+		GOPHER_UNKNOWN_ATTRIBUTE_TYPE               Unknown;
+	} /+AttributeType;+/
+}
+alias GOPHER_ATTRIBUTE_TYPE* LPGOPHER_ATTRIBUTE_TYPE;
+
+alias BOOL function(LPGOPHER_ATTRIBUTE_TYPE, DWORD)
+  GOPHER_ATTRIBUTE_ENUMERATOR;
+
+struct INTERNET_CACHE_ENTRY_INFOA {
+	DWORD    dwStructSize = INTERNET_CACHE_ENTRY_INFOA.sizeof;
+	LPSTR    lpszSourceUrlName;
+	LPSTR    lpszLocalFileName;
+	DWORD    CacheEntryType;
+	DWORD    dwUseCount;
+	DWORD    dwHitRate;
+	DWORD    dwSizeLow;
+	DWORD    dwSizeHigh;
+	FILETIME LastModifiedTime;
+	FILETIME ExpireTime;
+	FILETIME LastAccessTime;
+	FILETIME LastSyncTime;
+	PBYTE    lpHeaderInfo;
+	DWORD    dwHeaderInfoSize;
+	LPSTR    lpszFileExtension;
+	DWORD    dwReserved;
+}
+alias INTERNET_CACHE_ENTRY_INFOA* LPINTERNET_CACHE_ENTRY_INFOA;
+
+struct INTERNET_CACHE_ENTRY_INFOW {
+	DWORD    dwStructSize = INTERNET_CACHE_ENTRY_INFOW.sizeof;
+	LPSTR    lpszSourceUrlName;
+	LPWSTR   lpszLocalFileName;
+	DWORD    CacheEntryType;
+	DWORD    dwUseCount;
+	DWORD    dwHitRate;
+	DWORD    dwSizeLow;
+	DWORD    dwSizeHigh;
+	FILETIME LastModifiedTime;
+	FILETIME ExpireTime;
+	FILETIME LastAccessTime;
+	FILETIME LastSyncTime;
+	PBYTE    lpHeaderInfo;
+	DWORD    dwHeaderInfoSize;
+	LPWSTR   lpszFileExtension;
+	DWORD    dwReserved;
+}
+alias INTERNET_CACHE_ENTRY_INFOW* LPINTERNET_CACHE_ENTRY_INFOW;
+
+struct INTERNET_BUFFERSA {
+	DWORD              dwStructSize = INTERNET_BUFFERSA.sizeof;
+	INTERNET_BUFFERSA* Next;
+	LPCSTR             lpcszHeader;
+	DWORD              dwHeadersLength;
+	DWORD              dwHeadersTotal;
+	LPVOID             lpvBuffer;
+	DWORD              dwBufferLength;
+	DWORD              dwBufferTotal;
+	DWORD              dwOffsetLow;
+	DWORD              dwOffsetHigh;
+}
+alias INTERNET_BUFFERSA* LPINTERNET_BUFFERSA;
+
+struct INTERNET_BUFFERSW {
+	DWORD              dwStructSize = INTERNET_BUFFERSW.sizeof;
+	INTERNET_BUFFERSW* Next;
+	LPCWSTR            lpcszHeader;
+	DWORD              dwHeadersLength;
+	DWORD              dwHeadersTotal;
+	LPVOID             lpvBuffer;
+	DWORD              dwBufferLength;
+	DWORD              dwBufferTotal;
+	DWORD              dwOffsetLow;
+	DWORD              dwOffsetHigh;
+}
+alias INTERNET_BUFFERSW* LPINTERNET_BUFFERSW;
+
+const size_t
+	GROUP_OWNER_STORAGE_SIZE =   4,
+	GROUPNAME_MAX_LENGTH     = 120;
+
+struct INTERNET_CACHE_GROUP_INFOA {
+	DWORD dwGroupSize;
+	DWORD dwGroupFlags;
+	DWORD dwGroupType;
+	DWORD dwDiskUsage;
+	DWORD dwDiskQuota;
+	DWORD[GROUP_OWNER_STORAGE_SIZE] dwOwnerStorage;
+	CHAR[GROUPNAME_MAX_LENGTH]      szGroupName;
+}
+alias INTERNET_CACHE_GROUP_INFOA* LPINTERNET_CACHE_GROUP_INFOA;
+
+struct INTERNET_CACHE_GROUP_INFOW {
+	DWORD dwGroupSize;
+	DWORD dwGroupFlags;
+	DWORD dwGroupType;
+	DWORD dwDiskUsage;
+	DWORD dwDiskQuota;
+	DWORD[GROUP_OWNER_STORAGE_SIZE] dwOwnerStorage;
+	WCHAR[GROUPNAME_MAX_LENGTH]     szGroupName;
+}
+alias INTERNET_CACHE_GROUP_INFOW* LPINTERNET_CACHE_GROUP_INFOW;
+
+extern (Windows) {
+	BOOL InternetTimeFromSystemTime(SYSTEMTIME*, DWORD, LPSTR, DWORD);
+	BOOL InternetTimeToSystemTime(LPCSTR, SYSTEMTIME*, DWORD);
+	BOOL InternetDebugGetLocalTime(SYSTEMTIME*, PDWORD);
+	BOOL InternetCrackUrlA(LPCSTR, DWORD, DWORD, LPURL_COMPONENTSA);
+	BOOL InternetCrackUrlW(LPCWSTR, DWORD, DWORD, LPURL_COMPONENTSW);
+	BOOL InternetCreateUrlA(LPURL_COMPONENTSA, DWORD, LPSTR, PDWORD);
+	BOOL InternetCreateUrlW(LPURL_COMPONENTSW, DWORD, LPWSTR, PDWORD);
+	BOOL InternetCanonicalizeUrlA(LPCSTR, LPSTR, PDWORD, DWORD);
+	BOOL InternetCanonicalizeUrlW(LPCWSTR, LPWSTR, PDWORD, DWORD);
+	BOOL InternetCheckConnectionA(LPCSTR, DWORD, DWORD);
+	BOOL InternetCheckConnectionW(LPCWSTR, DWORD, DWORD);
+	BOOL InternetCombineUrlA(LPCSTR, LPCSTR, LPSTR, PDWORD, DWORD);
+	BOOL InternetCombineUrlW(LPCWSTR, LPCWSTR, LPWSTR, PDWORD, DWORD);
+	HINTERNET InternetOpenA(LPCSTR, DWORD, LPCSTR, LPCSTR, DWORD);
+	HINTERNET InternetOpenW(LPCWSTR, DWORD, LPCWSTR, LPCWSTR, DWORD);
+	BOOL InternetCloseHandle(HINTERNET);
+	HINTERNET InternetConnectA(HINTERNET, LPCSTR, INTERNET_PORT, LPCSTR,
+	  LPCSTR, DWORD, DWORD, DWORD);
+	HINTERNET InternetConnectW(HINTERNET, LPCWSTR, INTERNET_PORT, LPCWSTR,
+	  LPCWSTR, DWORD, DWORD, DWORD);
+	HINTERNET InternetOpenUrlA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD,
+	  DWORD);
+	HINTERNET InternetOpenUrlW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD,
+	  DWORD);
+	BOOL InternetReadFile(HINTERNET, PVOID, DWORD, PDWORD);
+	DWORD InternetSetFilePointer(HINTERNET, LONG, PVOID, DWORD, DWORD);
+	BOOL InternetWriteFile(HINTERNET, LPCVOID, DWORD, PDWORD);
+	BOOL InternetQueryDataAvailable(HINTERNET, PDWORD, DWORD, DWORD);
+	BOOL InternetFindNextFileA(HINTERNET, PVOID);
+	BOOL InternetFindNextFileW(HINTERNET, PVOID);
+	BOOL InternetQueryOptionA(HINTERNET, DWORD, PVOID, PDWORD);
+	BOOL InternetQueryOptionW(HINTERNET, DWORD, PVOID, PDWORD);
+	BOOL InternetSetOptionA(HINTERNET, DWORD, PVOID, DWORD);
+	BOOL InternetSetOptionW(HINTERNET, DWORD, PVOID, DWORD);
+	BOOL InternetSetOptionExA(HINTERNET, DWORD, PVOID, DWORD, DWORD);
+	BOOL InternetSetOptionExW(HINTERNET, DWORD, PVOID, DWORD, DWORD);
+	BOOL InternetGetLastResponseInfoA(PDWORD, LPSTR, PDWORD);
+	BOOL InternetGetLastResponseInfoW(PDWORD, LPWSTR, PDWORD);
+	INTERNET_STATUS_CALLBACK InternetSetStatusCallback(HINTERNET,
+	  INTERNET_STATUS_CALLBACK);
+	DWORD FtpGetFileSize(HINTERNET, LPDWORD);
+	HINTERNET FtpFindFirstFileA(HINTERNET, LPCSTR, LPWIN32_FIND_DATA, DWORD,
+	  DWORD);
+	HINTERNET FtpFindFirstFileW(HINTERNET, LPCWSTR, LPWIN32_FIND_DATA, DWORD,
+	  DWORD);
+	BOOL FtpGetFileA(HINTERNET, LPCSTR, LPCSTR, BOOL, DWORD, DWORD, DWORD);
+	BOOL FtpGetFileW(HINTERNET, LPCWSTR, LPCWSTR, BOOL, DWORD, DWORD, DWORD);
+	BOOL FtpPutFileA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD);
+	BOOL FtpPutFileW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD);
+	BOOL FtpDeleteFileA(HINTERNET, LPCSTR);
+	BOOL FtpDeleteFileW(HINTERNET, LPCWSTR);
+	BOOL FtpRenameFileA(HINTERNET, LPCSTR, LPCSTR);
+	BOOL FtpRenameFileW(HINTERNET, LPCWSTR, LPCWSTR);
+	HINTERNET FtpOpenFileA(HINTERNET, LPCSTR, DWORD, DWORD, DWORD);
+	HINTERNET FtpOpenFileW(HINTERNET, LPCWSTR, DWORD, DWORD, DWORD);
+	BOOL FtpCreateDirectoryA(HINTERNET, LPCSTR);
+	BOOL FtpCreateDirectoryW(HINTERNET, LPCWSTR);
+	BOOL FtpRemoveDirectoryA(HINTERNET, LPCSTR);
+	BOOL FtpRemoveDirectoryW(HINTERNET, LPCWSTR);
+	BOOL FtpSetCurrentDirectoryA(HINTERNET, LPCSTR);
+	BOOL FtpSetCurrentDirectoryW(HINTERNET, LPCWSTR);
+	BOOL FtpGetCurrentDirectoryA(HINTERNET, LPSTR, PDWORD);
+	BOOL FtpGetCurrentDirectoryW(HINTERNET, LPWSTR, PDWORD);
+	BOOL FtpCommandA(HINTERNET, BOOL, DWORD, LPCSTR, DWORD_PTR, HINTERNET*);
+	BOOL FtpCommandW(HINTERNET, BOOL, DWORD, LPCWSTR, DWORD_PTR, HINTERNET*);
+	BOOL GopherCreateLocatorA(LPCSTR, INTERNET_PORT, LPCSTR, LPCSTR, DWORD,
+	  LPSTR, PDWORD);
+	BOOL GopherCreateLocatorW(LPCWSTR, INTERNET_PORT, LPCWSTR, LPCWSTR, DWORD,
+	  LPWSTR, PDWORD);
+	BOOL GopherGetLocatorTypeA(LPCSTR, PDWORD);
+	BOOL GopherGetLocatorTypeW(LPCWSTR, PDWORD);
+	HINTERNET GopherFindFirstFileA(HINTERNET, LPCSTR, LPCSTR,
+	  LPGOPHER_FIND_DATAA, DWORD, DWORD);
+	HINTERNET GopherFindFirstFileW(HINTERNET, LPCWSTR, LPCWSTR,
+	  LPGOPHER_FIND_DATAW, DWORD, DWORD);
+	HINTERNET GopherOpenFileA(HINTERNET, LPCSTR, LPCSTR, DWORD, DWORD);
+	HINTERNET GopherOpenFileW(HINTERNET, LPCWSTR, LPCWSTR, DWORD, DWORD);
+	BOOL GopherGetAttributeA(HINTERNET, LPCSTR, LPCSTR, LPBYTE, DWORD,
+	  PDWORD, GOPHER_ATTRIBUTE_ENUMERATOR, DWORD);
+	BOOL GopherGetAttributeW(HINTERNET, LPCWSTR, LPCWSTR, LPBYTE, DWORD,
+	  PDWORD, GOPHER_ATTRIBUTE_ENUMERATOR, DWORD);
+	HINTERNET HttpOpenRequestA(HINTERNET, LPCSTR, LPCSTR, LPCSTR, LPCSTR,
+	  LPCSTR*, DWORD, DWORD);
+	HINTERNET HttpOpenRequestW(HINTERNET, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR,
+	  LPCWSTR*, DWORD, DWORD);
+	BOOL HttpAddRequestHeadersA(HINTERNET, LPCSTR, DWORD, DWORD);
+	BOOL HttpAddRequestHeadersW(HINTERNET, LPCWSTR, DWORD, DWORD);
+	BOOL HttpSendRequestA(HINTERNET, LPCSTR, DWORD, PVOID, DWORD);
+	BOOL HttpSendRequestW(HINTERNET, LPCWSTR, DWORD, PVOID, DWORD);
+	BOOL HttpQueryInfoA(HINTERNET, DWORD, PVOID, PDWORD, PDWORD);
+	BOOL HttpQueryInfoW(HINTERNET, DWORD, PVOID, PDWORD, PDWORD);
+	BOOL InternetSetCookieA(LPCSTR, LPCSTR, LPCSTR);
+	BOOL InternetSetCookieW(LPCSTR, LPCWSTR, LPCWSTR);
+	BOOL InternetGetCookieA(LPCSTR, LPCSTR, LPSTR, PDWORD);
+	BOOL InternetGetCookieW(LPCSTR, LPCWSTR, LPWSTR, PDWORD);
+	DWORD InternetAttemptConnect(DWORD);
+	DWORD InternetErrorDlg(HWND, HINTERNET, DWORD, DWORD, PVOID*);
+	DWORD InternetConfirmZoneCrossing(HWND, LPSTR, LPSTR, BOOL);
+	BOOL CreateUrlCacheEntryA(LPCSTR, DWORD, LPCSTR, LPSTR, DWORD);
+	BOOL CreateUrlCacheEntryW(LPCSTR, DWORD, LPCSTR, LPWSTR, DWORD);
+	BOOL CommitUrlCacheEntryA(LPCSTR, LPCSTR, FILETIME, FILETIME, DWORD,
+	  LPBYTE, DWORD, LPCSTR, DWORD);
+	BOOL CommitUrlCacheEntryW(LPCSTR, LPCWSTR, FILETIME, FILETIME, DWORD,
+	  LPBYTE, DWORD, LPCWSTR, DWORD);
+	BOOL RetrieveUrlCacheEntryFileA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA,
+	  PDWORD, DWORD);
+	BOOL RetrieveUrlCacheEntryFileW(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOW,
+	  PDWORD, DWORD);
+	BOOL UnlockUrlCacheEntryFile(LPCSTR, DWORD);
+	HANDLE RetrieveUrlCacheEntryStreamA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA,
+	  PDWORD, BOOL, DWORD);
+	HANDLE RetrieveUrlCacheEntryStreamW(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOW,
+	  PDWORD, BOOL, DWORD);
+	BOOL ReadUrlCacheEntryStream(HANDLE, DWORD, PVOID, PDWORD, DWORD);
+	BOOL UnlockUrlCacheEntryStream(HANDLE, DWORD);
+	BOOL GetUrlCacheEntryInfoA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, PDWORD);
+	BOOL GetUrlCacheEntryInfoW(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOW, PDWORD);
+	BOOL SetUrlCacheEntryInfoA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA, DWORD);
+	BOOL SetUrlCacheEntryInfoW(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOW, DWORD);
+	HANDLE FindFirstUrlCacheEntryA(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOA,
+	  PDWORD);
+	HANDLE FindFirstUrlCacheEntryW(LPCSTR, LPINTERNET_CACHE_ENTRY_INFOW,
+	  PDWORD);
+	BOOL FindNextUrlCacheEntryA(HANDLE, LPINTERNET_CACHE_ENTRY_INFOA, PDWORD);
+	BOOL FindNextUrlCacheEntryW(HANDLE, LPINTERNET_CACHE_ENTRY_INFOW, PDWORD);
+	BOOL FindCloseUrlCache(HANDLE);
+	BOOL DeleteUrlCacheEntry(LPCSTR);
+	DWORD AuthenticateUser(PVOID*, LPSTR, LPSTR, DWORD, LPSTR, DWORD, LPSTR,
+	  LPSTR);
+	BOOL HttpSendRequestExA(HINTERNET, LPINTERNET_BUFFERSA,
+	  LPINTERNET_BUFFERSA, DWORD, DWORD);
+	BOOL HttpSendRequestExW(HINTERNET, LPINTERNET_BUFFERSW,
+	  LPINTERNET_BUFFERSW, DWORD, DWORD);
+	BOOL HttpEndRequestA(HINTERNET, LPINTERNET_BUFFERSA, DWORD, DWORD);
+	BOOL HttpEndRequestW(HINTERNET, LPINTERNET_BUFFERSW, DWORD, DWORD);
+	DWORD InternetDial(HWND, LPTSTR, DWORD, LPDWORD, DWORD);
+	DWORD InternetHangUp(DWORD, DWORD);
+	BOOL InternetGoOnline(LPTSTR, HWND, DWORD);
+	BOOL InternetAutodial(DWORD, DWORD);
+	BOOL InternetAutodialHangup(DWORD);
+	BOOL InternetGetConnectedState(LPDWORD, DWORD);
+	BOOL InternetSetDialState(LPCTSTR, DWORD, DWORD);
+	BOOL InternetReadFileExA(HINTERNET, LPINTERNET_BUFFERSA, DWORD, DWORD_PTR);
+	BOOL InternetReadFileExW(HINTERNET, LPINTERNET_BUFFERSW, DWORD, DWORD_PTR);
+	GROUPID CreateUrlCacheGroup(DWORD, LPVOID);
+	BOOL DeleteUrlCacheGroup(GROUPID, DWORD, LPVOID);
+	HANDLE FindFirstUrlCacheGroup(DWORD, DWORD, LPVOID, DWORD, GROUPID*,
+	  LPVOID);
+	BOOL FindNextUrlCacheGroup(HANDLE, GROUPID*, LPVOID);
+	BOOL GetUrlCacheGroupAttributeA(GROUPID, DWORD, DWORD,
+	  LPINTERNET_CACHE_GROUP_INFOA, LPDWORD, LPVOID);
+	BOOL GetUrlCacheGroupAttributeW(GROUPID, DWORD, DWORD,
+	  LPINTERNET_CACHE_GROUP_INFOW, LPDWORD, LPVOID);
+	BOOL SetUrlCacheGroupAttributeA(GROUPID, DWORD, DWORD,
+	  LPINTERNET_CACHE_GROUP_INFOA, LPVOID);
+	BOOL SetUrlCacheGroupAttributeW(GROUPID, DWORD, DWORD,
+	  LPINTERNET_CACHE_GROUP_INFOW, LPVOID);
+}
+
+version (Unicode) {
+	alias URL_COMPONENTSW URL_COMPONENTS;
+	alias LPURL_COMPONENTSW LPURL_COMPONENTS;
+	alias GOPHER_FIND_DATAW GOPHER_FIND_DATA;
+	alias LPGOPHER_FIND_DATAW LPGOPHER_FIND_DATA;
+	alias INTERNET_CACHE_ENTRY_INFOW INTERNET_CACHE_ENTRY_INFO;
+	alias LPINTERNET_CACHE_ENTRY_INFOW LPINTERNET_CACHE_ENTRY_INFO;
+	alias INTERNET_BUFFERSW INTERNET_BUFFERS;
+	alias INTERNET_CACHE_GROUP_INFOW INTERNET_CACHE_GROUP_INFO;
+	alias LPINTERNET_CACHE_GROUP_INFOW LPINTERNET_CACHE_GROUP_INFO;
+	alias InternetCrackUrlW InternetCrackUrl;
+	alias InternetCreateUrlW InternetCreateUrl;
+	alias InternetCanonicalizeUrlW InternetCanonicalizeUrl;
+	alias InternetCheckConnectionW InternetCheckConnection;
+	alias InternetCombineUrlW InternetCombineUrl;
+	alias InternetOpenW InternetOpen;
+	alias InternetConnectW InternetConnect;
+	alias InternetOpenUrlW InternetOpenUrl;
+	alias InternetFindNextFileW InternetFindNextFile;
+	alias InternetQueryOptionW InternetQueryOption;
+	alias InternetSetOptionW InternetSetOption;
+	alias InternetSetOptionExW InternetSetOptionEx;
+	alias InternetGetLastResponseInfoW InternetGetLastResponseInfo;
+	alias InternetReadFileExW InternetReadFileEx;
+	alias FtpFindFirstFileW FtpFindFirstFile;
+	alias FtpGetFileW FtpGetFile;
+	alias FtpPutFileW FtpPutFile;
+	alias FtpDeleteFileW FtpDeleteFile;
+	alias FtpRenameFileW FtpRenameFile;
+	alias FtpOpenFileW FtpOpenFile;
+	alias FtpCreateDirectoryW FtpCreateDirectory;
+	alias FtpRemoveDirectoryW FtpRemoveDirectory;
+	alias FtpSetCurrentDirectoryW FtpSetCurrentDirectory;
+	alias FtpGetCurrentDirectoryW FtpGetCurrentDirectory;
+	alias FtpCommandW FtpCommand;
+	alias GopherGetLocatorTypeW GopherGetLocatorType;
+	alias GopherCreateLocatorW GopherCreateLocator;
+	alias GopherFindFirstFileW GopherFindFirstFile;
+	alias GopherOpenFileW GopherOpenFile;
+	alias GopherGetAttributeW GopherGetAttribute;
+	alias HttpSendRequestW HttpSendRequest;
+	alias HttpOpenRequestW HttpOpenRequest;
+	alias HttpAddRequestHeadersW HttpAddRequestHeaders;
+	alias HttpQueryInfoW HttpQueryInfo;
+	alias InternetSetCookieW InternetSetCookie;
+	alias InternetGetCookieW InternetGetCookie;
+	alias CreateUrlCacheEntryW CreateUrlCacheEntry;
+	alias RetrieveUrlCacheEntryStreamW RetrieveUrlCacheEntryStream;
+	alias FindNextUrlCacheEntryW FindNextUrlCacheEntry;
+	alias CommitUrlCacheEntryW CommitUrlCacheEntry;
+	alias GetUrlCacheEntryInfoW GetUrlCacheEntryInfo;
+	alias SetUrlCacheEntryInfoW SetUrlCacheEntryInfo;
+	alias FindFirstUrlCacheEntryW FindFirstUrlCacheEntry;
+	alias RetrieveUrlCacheEntryFileW RetrieveUrlCacheEntryFile;
+	alias HttpSendRequestExW HttpSendRequestEx;
+	alias HttpEndRequestW HttpEndRequest;
+	alias GetUrlCacheGroupAttributeW GetUrlCacheGroupAttribute;
+	alias SetUrlCacheGroupAttributeW SetUrlCacheGroupAttribute;
+} else {
+	alias URL_COMPONENTSA URL_COMPONENTS;
+	alias LPURL_COMPONENTSA LPURL_COMPONENTS;
+	alias GOPHER_FIND_DATAA GOPHER_FIND_DATA;
+	alias LPGOPHER_FIND_DATAA LPGOPHER_FIND_DATA;
+	alias INTERNET_CACHE_ENTRY_INFOA INTERNET_CACHE_ENTRY_INFO;
+	alias LPINTERNET_CACHE_ENTRY_INFOA LPINTERNET_CACHE_ENTRY_INFO;
+	alias INTERNET_BUFFERSA INTERNET_BUFFERS;
+	alias INTERNET_CACHE_GROUP_INFOA INTERNET_CACHE_GROUP_INFO;
+	alias LPINTERNET_CACHE_GROUP_INFOA LPINTERNET_CACHE_GROUP_INFO;
+	alias GopherGetAttributeA GopherGetAttribute;
+	alias InternetCrackUrlA InternetCrackUrl;
+	alias InternetCreateUrlA InternetCreateUrl;
+	alias InternetCanonicalizeUrlA InternetCanonicalizeUrl;
+	alias InternetCheckConnectionA InternetCheckConnection;
+	alias InternetCombineUrlA InternetCombineUrl;
+	alias InternetOpenA InternetOpen;
+	alias InternetConnectA InternetConnect;
+	alias InternetOpenUrlA InternetOpenUrl;
+	alias InternetFindNextFileA InternetFindNextFile;
+	alias InternetQueryOptionA InternetQueryOption;
+	alias InternetSetOptionA InternetSetOption;
+	alias InternetSetOptionExA InternetSetOptionEx;
+	alias InternetGetLastResponseInfoA InternetGetLastResponseInfo;
+	alias InternetReadFileExA InternetReadFileEx;
+	alias FtpFindFirstFileA FtpFindFirstFile;
+	alias FtpGetFileA FtpGetFile;
+	alias FtpPutFileA FtpPutFile;
+	alias FtpDeleteFileA FtpDeleteFile;
+	alias FtpRenameFileA FtpRenameFile;
+	alias FtpOpenFileA FtpOpenFile;
+	alias FtpCreateDirectoryA FtpCreateDirectory;
+	alias FtpRemoveDirectoryA FtpRemoveDirectory;
+	alias FtpSetCurrentDirectoryA FtpSetCurrentDirectory;
+	alias FtpGetCurrentDirectoryA FtpGetCurrentDirectory;
+	alias FtpCommandA FtpCommand;
+	alias GopherGetLocatorTypeA GopherGetLocatorType;
+	alias GopherCreateLocatorA GopherCreateLocator;
+	alias GopherFindFirstFileA GopherFindFirstFile;
+	alias GopherOpenFileA GopherOpenFile;
+	alias HttpSendRequestA HttpSendRequest;
+	alias HttpOpenRequestA HttpOpenRequest;
+	alias HttpAddRequestHeadersA HttpAddRequestHeaders;
+	alias HttpQueryInfoA HttpQueryInfo;
+	alias InternetSetCookieA InternetSetCookie;
+	alias InternetGetCookieA InternetGetCookie;
+	alias CreateUrlCacheEntryA CreateUrlCacheEntry;
+	alias RetrieveUrlCacheEntryStreamA RetrieveUrlCacheEntryStream;
+	alias FindNextUrlCacheEntryA FindNextUrlCacheEntry;
+	alias CommitUrlCacheEntryA CommitUrlCacheEntry;
+	alias GetUrlCacheEntryInfoA GetUrlCacheEntryInfo;
+	alias SetUrlCacheEntryInfoA SetUrlCacheEntryInfo;
+	alias FindFirstUrlCacheEntryA FindFirstUrlCacheEntry;
+	alias RetrieveUrlCacheEntryFileA RetrieveUrlCacheEntryFile;
+	alias HttpSendRequestExA HttpSendRequestEx;
+	alias HttpEndRequestA HttpEndRequest;
+	alias GetUrlCacheGroupAttributeA GetUrlCacheGroupAttribute;
+	alias SetUrlCacheGroupAttributeA SetUrlCacheGroupAttribute;
+}
+
+alias INTERNET_BUFFERS* LPINTERNET_BUFFERS;