| /** |
| * Windows API header module |
| * |
| * Translated from Windows SDK Headers |
| * |
| * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) |
| * Source: $(DRUNTIMESRC src/core/sys/windows/_winhttp.d) |
| */ |
| module core.sys.windows.winhttp; |
| version (Windows): |
| @system: |
| pragma(lib, "winhttp"); |
| // FIXME: Grouping of constants. Windows SDK doesn't make this entirely clear |
| // FIXME: Verify WINHTTP_STATUS_CALLBACK function declaration works correctly |
| |
| import core.sys.windows.w32api; |
| import core.sys.windows.winbase; |
| import core.sys.windows.windef; |
| import core.sys.windows.winsock2; // Selective Imports BUG (: SOCKADDR_STORAGE;) |
| |
| alias HINTERNET = void*; |
| alias LPHINTERNET = HINTERNET*; |
| alias INTERNET_PORT = WORD; |
| alias LPINTERNET_PORT = INTERNET_PORT*; |
| alias INTERNET_SCHEME = int; |
| alias LPINTERNET_SCHEME = INTERNET_SCHEME*; |
| |
| // Protocol 'Manifests' |
| enum : DWORD { |
| INTERNET_DEFAULT_PORT = 0, |
| INTERNET_DEFAULT_HTTP_PORT = 80, |
| INTERNET_DEFAULT_HTTPS_PORT = 443 |
| } |
| |
| // WinHttpOpen() Flags: |
| enum DWORD WINHTTP_FLAG_ASYNC = 0x10000000; |
| |
| // WinHttpOpenRequest() Flags: |
| enum : DWORD { |
| WINHTTP_FLAG_SECURE = 0x00800000, |
| WINHTTP_FLAG_ESCAPE_PERCENT = 0x00000004, |
| WINHTTP_FLAG_NULL_CODEPAGE = 0x00000008, |
| WINHTTP_FLAG_BYPASS_PROXY_CACHE = 0x00000100, |
| WINHTTP_FLAG_REFRESH = WINHTTP_FLAG_BYPASS_PROXY_CACHE, |
| WINHTTP_FLAG_ESCAPE_DISABLE = 0x00000040, |
| WINHTTP_FLAG_ESCAPE_DISABLE_QUERY = 0x00000080, |
| |
| SECURITY_FLAG_IGNORE_UNKNOWN_CA = 0x00000100, |
| SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000, |
| SECURITY_FLAG_IGNORE_CERT_CN_INVALID = 0x00001000, |
| SECURITY_FLAG_IGNORE_CERT_WRONG_USAGE = 0x00000200 |
| } |
| |
| struct WINHTTP_ASYNC_RESULT { |
| DWORD_PTR dwResult; |
| DWORD dwError; |
| } |
| alias LPWINHTTP_ASYNC_RESULT = WINHTTP_ASYNC_RESULT*; |
| |
| struct HTTP_VERSION_INFO { |
| DWORD dwMajorVersion; |
| DWORD dwMinorVersion; |
| } |
| alias LPHTTP_VERSION_INFO = HTTP_VERSION_INFO*; |
| |
| // URL Scheme |
| enum : DWORD { |
| INTERNET_SCHEME_HTTP = 1, |
| INTERNET_SCHEME_HTTPS = 2, |
| INTERNET_SCHEME_FTP = 3, |
| INTERNET_SCHEME_SOCKS = 4 |
| } |
| |
| struct URL_COMPONENTS { |
| DWORD dwStructSize; |
| 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 LPURL_COMPONENTS = URL_COMPONENTS*; |
| alias URL_COMPONENTSW = URL_COMPONENTS; |
| alias LPURL_COMPONENTSW = URL_COMPONENTS*; |
| |
| struct WINHTTP_PROXY_INFO { |
| DWORD dwAccessType; |
| LPWSTR lpszProxy; |
| LPWSTR lpszProxyBypass; |
| } |
| alias LPWINHTTP_PROXY_INFO = WINHTTP_PROXY_INFO*; |
| alias WINHTTP_PROXY_INFOW = WINHTTP_PROXY_INFO; |
| alias LPWINHTTP_PROXY_INFOW = WINHTTP_PROXY_INFO*; |
| |
| struct WINHTTP_AUTOPROXY_OPTIONS { |
| DWORD dwFlags; |
| DWORD dwAutoDetectFlags; |
| LPCWSTR lpszAutoConfigUrl; |
| LPVOID lpvReserved; |
| DWORD dwReserved; |
| BOOL fAutoLogonIfChallenged; |
| } |
| |
| enum : DWORD { |
| WINHTTP_AUTOPROXY_AUTO_DETECT = 0x00000001, |
| WINHTTP_AUTOPROXY_CONFIG_URL = 0x00000002, |
| WINHTTP_AUTOPROXY_HOST_KEEPCASE = 0x00000004, |
| WINHTTP_AUTOPROXY_HOST_LOWERCASE = 0x00000008, |
| WINHTTP_AUTOPROXY_RUN_INPROCESS = 0x00010000, |
| WINHTTP_AUTOPROXY_RUN_OUTPROCESS_ONLY = 0x00020000, |
| WINHTTP_AUTOPROXY_NO_DIRECTACCESS = 0x00040000, |
| WINHTTP_AUTOPROXY_NO_CACHE_CLIENT = 0x00080000, |
| WINHTTP_AUTOPROXY_NO_CACHE_SVC = 0x00100000, |
| |
| WINHTTP_AUTOPROXY_SORT_RESULTS = 0x00400000 |
| } |
| |
| // dwAutoDetectFlags |
| enum : DWORD { |
| WINHTTP_AUTO_DETECT_TYPE_DHCP = 0x00000001, |
| WINHTTP_AUTO_DETECT_TYPE_DNS_A = 0x00000002 |
| } |
| |
| struct WINHTTP_CERTIFICATE_INFO { |
| FILETIME ftExpiry; |
| FILETIME ftStart; |
| LPWSTR lpszSubjectInfo; |
| LPWSTR lpszIssuerInfo; |
| LPWSTR lpszProtocolName; |
| LPWSTR lpszSignatureAlgName; |
| LPWSTR lpszEncryptionAlgName; |
| DWORD dwKeySize; |
| } |
| |
| // This structure is only defined #if _WS2DEF_ defined (from <ws2def.h>) - per Windows SDK |
| align(4) |
| struct WINHTTP_CONNECTION_INFO { |
| align(4): |
| DWORD cbSize; |
| version (Win64) |
| DWORD _padding; // cheap trick without the alignment switch over this file |
| SOCKADDR_STORAGE LocalAddress; |
| SOCKADDR_STORAGE RemoteAddress; |
| } |
| |
| // WinHttpTimeFromSystemTime |
| enum DWORD WINHTTP_TIME_FORMAT_BUFSIZE = 62; |
| |
| // CrackUrl, CombineUrl |
| enum : DWORD { |
| ICU_NO_ENCODE = 0x20000000, |
| ICU_DECODE = 0x10000000, |
| ICU_NO_META = 0x08000000, |
| ICU_ENCODE_SPACES_ONLY = 0x04000000, |
| ICU_BROWSER_MODE = 0x02000000, |
| ICU_ENCODE_PERCENT = 0x00001000 |
| } |
| // WinHttpCrackUrl, WinHttpCreateUrl |
| enum : DWORD { |
| ICU_ESCAPE = 0x80000000, |
| ICU_ESCAPE_AUTHORITY = 0x00002000, |
| ICU_REJECT_USERPWD = 0x00004000 |
| } |
| enum : DWORD { |
| WINHTTP_ACCESS_TYPE_DEFAULT_PROXY = 0, |
| WINHTTP_ACCESS_TYPE_NO_PROXY = 1, |
| WINHTTP_ACCESS_TYPE_NAMED_PROXY = 3, |
| WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY = 4 |
| } |
| // WinHttpOpen 'prettifiers' |
| enum LPCWSTR WINHTTP_NO_PROXY_NAME = null; |
| enum LPCWSTR WINHTTP_NO_PROXY_BYPASS = null; |
| |
| enum LPVOID WINHTTP_NO_CLIENT_CERT_CONTEXT = null; |
| |
| // WinHttp{Query|Set}Option |
| enum : DWORD { |
| WINHTTP_FIRST_OPTION = WINHTTP_OPTION_CALLBACK, |
| |
| WINHTTP_OPTION_CALLBACK = 1, |
| WINHTTP_OPTION_RESOLVE_TIMEOUT = 2, |
| WINHTTP_OPTION_CONNECT_TIMEOUT = 3, |
| WINHTTP_OPTION_CONNECT_RETRIES = 4, |
| WINHTTP_OPTION_SEND_TIMEOUT = 5, |
| WINHTTP_OPTION_RECEIVE_TIMEOUT = 6, |
| WINHTTP_OPTION_RECEIVE_RESPONSE_TIMEOUT = 7, |
| WINHTTP_OPTION_HANDLE_TYPE = 9, |
| WINHTTP_OPTION_READ_BUFFER_SIZE = 12, |
| WINHTTP_OPTION_WRITE_BUFFER_SIZE = 13, |
| WINHTTP_OPTION_PARENT_HANDLE = 21, |
| WINHTTP_OPTION_EXTENDED_ERROR = 24, |
| WINHTTP_OPTION_SECURITY_FLAGS = 31, |
| WINHTTP_OPTION_SECURITY_CERTIFICATE_STRUCT = 32, |
| WINHTTP_OPTION_URL = 34, |
| WINHTTP_OPTION_SECURITY_KEY_BITNESS = 36, |
| WINHTTP_OPTION_PROXY = 38, |
| WINHTTP_OPTION_PROXY_RESULT_ENTRY = 39, |
| |
| WINHTTP_OPTION_USER_AGENT = 41, |
| WINHTTP_OPTION_CONTEXT_VALUE = 45, |
| WINHTTP_OPTION_CLIENT_CERT_CONTEXT = 47, |
| WINHTTP_OPTION_REQUEST_PRIORITY = 58, |
| WINHTTP_OPTION_HTTP_VERSION = 59, |
| WINHTTP_OPTION_DISABLE_FEATURE = 63, |
| |
| WINHTTP_OPTION_CODEPAGE = 68, |
| WINHTTP_OPTION_MAX_CONNS_PER_SERVER = 73, |
| WINHTTP_OPTION_MAX_CONNS_PER_1_0_SERVER = 74, |
| WINHTTP_OPTION_AUTOLOGON_POLICY = 77, |
| WINHTTP_OPTION_SERVER_CERT_CONTEXT = 78, |
| WINHTTP_OPTION_ENABLE_FEATURE = 79, |
| WINHTTP_OPTION_WORKER_THREAD_COUNT = 80, |
| WINHTTP_OPTION_PASSPORT_COBRANDING_TEXT = 81, |
| WINHTTP_OPTION_PASSPORT_COBRANDING_URL = 82, |
| WINHTTP_OPTION_CONFIGURE_PASSPORT_AUTH = 83, |
| WINHTTP_OPTION_SECURE_PROTOCOLS = 84, |
| WINHTTP_OPTION_ENABLETRACING = 85, |
| WINHTTP_OPTION_PASSPORT_SIGN_OUT = 86, |
| WINHTTP_OPTION_PASSPORT_RETURN_URL = 87, |
| WINHTTP_OPTION_REDIRECT_POLICY = 88, |
| WINHTTP_OPTION_MAX_HTTP_AUTOMATIC_REDIRECTS = 89, |
| WINHTTP_OPTION_MAX_HTTP_STATUS_CONTINUE = 90, |
| WINHTTP_OPTION_MAX_RESPONSE_HEADER_SIZE = 91, |
| WINHTTP_OPTION_MAX_RESPONSE_DRAIN_SIZE = 92, |
| WINHTTP_OPTION_CONNECTION_INFO = 93, |
| WINHTTP_OPTION_CLIENT_CERT_ISSUER_LIST = 94, |
| WINHTTP_OPTION_SPN = 96, |
| |
| WINHTTP_OPTION_GLOBAL_PROXY_CREDS = 97, |
| WINHTTP_OPTION_GLOBAL_SERVER_CREDS = 98, |
| |
| WINHTTP_OPTION_UNLOAD_NOTIFY_EVENT = 99, |
| WINHTTP_OPTION_REJECT_USERPWD_IN_URL = 100, |
| WINHTTP_OPTION_USE_GLOBAL_SERVER_CREDENTIALS = 101, |
| |
| WINHTTP_OPTION_RECEIVE_PROXY_CONNECT_RESPONSE = 103, |
| WINHTTP_OPTION_IS_PROXY_CONNECT_RESPONSE = 104, |
| |
| WINHTTP_OPTION_SERVER_SPN_USED = 106, |
| WINHTTP_OPTION_PROXY_SPN_USED = 107, |
| |
| WINHTTP_OPTION_SERVER_CBT = 108, |
| |
| WINHTTP_OPTION_UNSAFE_HEADER_PARSING = 110, |
| WINHTTP_OPTION_ASSURED_NON_BLOCKING_CALLBACKS = 111, |
| |
| WINHTTP_OPTION_UPGRADE_TO_WEB_SOCKET = 114, |
| WINHTTP_OPTION_WEB_SOCKET_CLOSE_TIMEOUT = 115, |
| WINHTTP_OPTION_WEB_SOCKET_KEEPALIVE_INTERVAL = 116, |
| |
| WINHTTP_OPTION_DECOMPRESSION = 118, |
| |
| WINHTTP_OPTION_WEB_SOCKET_RECEIVE_BUFFER_SIZE = 122, |
| WINHTTP_OPTION_WEB_SOCKET_SEND_BUFFER_SIZE = 123, |
| |
| //WINHTTP_LAST_OPTION => Moved outside of enum - static if () constraints within enums |
| |
| WINHTTP_OPTION_USERNAME = 0x1000, |
| WINHTTP_OPTION_PASSWORD = 0x1001, |
| WINHTTP_OPTION_PROXY_USERNAME = 0x1002, |
| WINHTTP_OPTION_PROXY_PASSWORD = 0x1003, |
| |
| WINHTTP_CONNS_PER_SERVER_UNLIMITED = 0xFFFFFFFF, |
| |
| WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM = 0, |
| WINHTTP_AUTOLOGON_SECURITY_LEVEL_LOW = 1, |
| WINHTTP_AUTOLOGON_SECURITY_LEVEL_HIGH = 2, |
| |
| WINHTTP_AUTOLOGON_SECURITY_LEVEL_DEFAULT = WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM, |
| |
| WINHTTP_OPTION_REDIRECT_POLICY_NEVER = 0, |
| WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP = 1, |
| WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS = 2, |
| |
| WINHTTP_OPTION_REDIRECT_POLICY_LAST = WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS, |
| WINHTTP_OPTION_REDIRECT_POLICY_DEFAULT = WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP, |
| |
| WINHTTP_DISABLE_PASSPORT_AUTH = 0x00000000, |
| WINHTTP_ENABLE_PASSPORT_AUTH = 0x10000000, |
| WINHTTP_DISABLE_PASSPORT_KEYRING = 0x20000000, |
| WINHTTP_ENABLE_PASSPORT_KEYRING = 0x40000000, |
| |
| WINHTTP_DISABLE_COOKIES = 0x00000001, |
| WINHTTP_DISABLE_REDIRECTS = 0x00000002, |
| WINHTTP_DISABLE_AUTHENTICATION = 0x00000004, |
| WINHTTP_DISABLE_KEEP_ALIVE = 0x00000008, |
| |
| WINHTTP_ENABLE_SSL_REVOCATION = 0x00000001, |
| WINHTTP_ENABLE_SSL_REVERT_IMPERSONATION = 0x00000002, |
| |
| WINHTTP_DISABLE_SPN_SERVER_PORT = 0x00000000, |
| WINHTTP_ENABLE_SPN_SERVER_PORT = 0x00000001, |
| WINHTTP_OPTION_SPN_MASK = WINHTTP_ENABLE_SPN_SERVER_PORT |
| } |
| |
| // Windows 8.1 SDK: |
| static if (_WIN32_WINNT >= 0x602) { |
| enum DWORD WINHTTP_LAST_OPTION = WINHTTP_OPTION_WEB_SOCKET_SEND_BUFFER_SIZE; |
| } else { // Windows 7.0A SDK: |
| enum DWORD WINHTTP_LAST_OPTION = WINHTTP_OPTION_SERVER_CBT; |
| } |
| |
| enum : DWORD { |
| WINHTTP_DECOMPRESSION_FLAG_GZIP = 0x00000001, |
| WINHTTP_DECOMPRESSION_FLAG_DEFLATE = 0x00000002, |
| WINHTTP_DECOMPRESSION_FLAG_ALL = (WINHTTP_DECOMPRESSION_FLAG_GZIP | WINHTTP_DECOMPRESSION_FLAG_DEFLATE) |
| } |
| |
| struct WINHTTP_CREDS { |
| LPSTR lpszUserName; |
| LPSTR lpszPassword; |
| LPSTR lpszRealm; |
| DWORD dwAuthScheme; |
| LPSTR lpszHostName; |
| DWORD dwPort; |
| } |
| alias PWINHTTP_CREDS = WINHTTP_CREDS*; |
| |
| struct WINHTTP_CREDS_EX { |
| LPSTR lpszUserName; |
| LPSTR lpszPassword; |
| LPSTR lpszRealm; |
| DWORD dwAuthScheme; |
| LPSTR lpszHostName; |
| DWORD dwPort; |
| LPSTR lpszUrl; |
| } |
| alias PWINHTTP_CREDS_EX = WINHTTP_CREDS_EX*; |
| |
| enum : DWORD { |
| WINHTTP_HANDLE_TYPE_SESSION = 1, |
| WINHTTP_HANDLE_TYPE_CONNECT = 2, |
| WINHTTP_HANDLE_TYPE_REQUEST = 3, |
| |
| WINHTTP_AUTH_SCHEME_BASIC = 0x00000001, |
| WINHTTP_AUTH_SCHEME_NTLM = 0x00000002, |
| WINHTTP_AUTH_SCHEME_PASSPORT = 0x00000004, |
| WINHTTP_AUTH_SCHEME_DIGEST = 0x00000008, |
| WINHTTP_AUTH_SCHEME_NEGOTIATE = 0x00000010, |
| |
| WINHTTP_AUTH_TARGET_SERVER = 0x00000000, |
| WINHTTP_AUTH_TARGET_PROXY = 0x00000001, |
| |
| SECURITY_FLAG_SECURE = 0x00000001, |
| SECURITY_FLAG_STRENGTH_WEAK = 0x10000000, |
| SECURITY_FLAG_STRENGTH_MEDIUM = 0x40000000, |
| SECURITY_FLAG_STRENGTH_STRONG = 0x20000000, |
| |
| WINHTTP_CALLBACK_STATUS_FLAG_CERT_REV_FAILED = 0x00000001, |
| WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CERT = 0x00000002, |
| WINHTTP_CALLBACK_STATUS_FLAG_CERT_REVOKED = 0x00000004, |
| WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CA = 0x00000008, |
| WINHTTP_CALLBACK_STATUS_FLAG_CERT_CN_INVALID = 0x00000010, |
| WINHTTP_CALLBACK_STATUS_FLAG_CERT_DATE_INVALID = 0x00000020, |
| WINHTTP_CALLBACK_STATUS_FLAG_CERT_WRONG_USAGE = 0x00000040, |
| WINHTTP_CALLBACK_STATUS_FLAG_SECURITY_CHANNEL_ERROR = 0x80000000, |
| |
| WINHTTP_FLAG_SECURE_PROTOCOL_SSL2 = 0x00000008, |
| WINHTTP_FLAG_SECURE_PROTOCOL_SSL3 = 0x00000020, |
| WINHTTP_FLAG_SECURE_PROTOCOL_TLS1 = 0x00000080, |
| WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_1 = 0x00000200, |
| WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2 = 0x00000800, |
| WINHTTP_FLAG_SECURE_PROTOCOL_ALL = (WINHTTP_FLAG_SECURE_PROTOCOL_SSL2 | |
| WINHTTP_FLAG_SECURE_PROTOCOL_SSL3 | |
| WINHTTP_FLAG_SECURE_PROTOCOL_TLS1) |
| } |
| |
| alias extern(Windows) int fnWINHTTP_STATUS_CALLBACK(HINTERNET hInternet, DWORD_PTR dwContext, |
| DWORD dwInternetStatus, LPVOID lpvStatusInformation,DWORD dwStatusInformationLength); |
| alias WINHTTP_STATUS_CALLBACK = fnWINHTTP_STATUS_CALLBACK*; |
| alias LPWINHTTP_STATUS_CALLBACK = WINHTTP_STATUS_CALLBACK*; |
| |
| enum : DWORD { |
| WINHTTP_CALLBACK_STATUS_RESOLVING_NAME = 0x00000001, |
| WINHTTP_CALLBACK_STATUS_NAME_RESOLVED = 0x00000002, |
| WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER = 0x00000004, |
| WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER = 0x00000008, |
| WINHTTP_CALLBACK_STATUS_SENDING_REQUEST = 0x00000010, |
| WINHTTP_CALLBACK_STATUS_REQUEST_SENT = 0x00000020, |
| WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE = 0x00000040, |
| WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED = 0x00000080, |
| WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION = 0x00000100, |
| WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED = 0x00000200, |
| WINHTTP_CALLBACK_STATUS_HANDLE_CREATED = 0x00000400, |
| WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING = 0x00000800, |
| WINHTTP_CALLBACK_STATUS_DETECTING_PROXY = 0x00001000, |
| WINHTTP_CALLBACK_STATUS_REDIRECT = 0x00004000, |
| WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE = 0x00008000, |
| WINHTTP_CALLBACK_STATUS_SECURE_FAILURE = 0x00010000, |
| WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE = 0x00020000, |
| WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE = 0x00040000, |
| WINHTTP_CALLBACK_STATUS_READ_COMPLETE = 0x00080000, |
| WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE = 0x00100000, |
| WINHTTP_CALLBACK_STATUS_REQUEST_ERROR = 0x00200000, |
| WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE = 0x00400000 |
| } |
| |
| enum : DWORD { |
| WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE = 0x01000000, |
| WINHTTP_CALLBACK_STATUS_CLOSE_COMPLETE = 0x02000000, |
| WINHTTP_CALLBACK_STATUS_SHUTDOWN_COMPLETE = 0x04000000 |
| } |
| |
| enum : DWORD { |
| API_RECEIVE_RESPONSE = 1, |
| API_QUERY_DATA_AVAILABLE = 2, |
| API_READ_DATA = 3, |
| API_WRITE_DATA = 4, |
| API_SEND_REQUEST = 5 |
| } |
| |
| enum : DWORD { |
| WINHTTP_CALLBACK_FLAG_RESOLVE_NAME = (WINHTTP_CALLBACK_STATUS_RESOLVING_NAME | WINHTTP_CALLBACK_STATUS_NAME_RESOLVED), |
| WINHTTP_CALLBACK_FLAG_CONNECT_TO_SERVER = (WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER | WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER), |
| WINHTTP_CALLBACK_FLAG_SEND_REQUEST = (WINHTTP_CALLBACK_STATUS_SENDING_REQUEST | WINHTTP_CALLBACK_STATUS_REQUEST_SENT), |
| WINHTTP_CALLBACK_FLAG_RECEIVE_RESPONSE = (WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE | WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED), |
| WINHTTP_CALLBACK_FLAG_CLOSE_CONNECTION = (WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION | WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED), |
| WINHTTP_CALLBACK_FLAG_HANDLES = (WINHTTP_CALLBACK_STATUS_HANDLE_CREATED | WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING), |
| WINHTTP_CALLBACK_FLAG_DETECTING_PROXY = WINHTTP_CALLBACK_STATUS_DETECTING_PROXY, |
| WINHTTP_CALLBACK_FLAG_REDIRECT = WINHTTP_CALLBACK_STATUS_REDIRECT, |
| WINHTTP_CALLBACK_FLAG_INTERMEDIATE_RESPONSE = WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE, |
| WINHTTP_CALLBACK_FLAG_SECURE_FAILURE = WINHTTP_CALLBACK_STATUS_SECURE_FAILURE, |
| WINHTTP_CALLBACK_FLAG_SENDREQUEST_COMPLETE = WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE, |
| WINHTTP_CALLBACK_FLAG_HEADERS_AVAILABLE = WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE, |
| WINHTTP_CALLBACK_FLAG_DATA_AVAILABLE = WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE, |
| WINHTTP_CALLBACK_FLAG_READ_COMPLETE = WINHTTP_CALLBACK_STATUS_READ_COMPLETE, |
| WINHTTP_CALLBACK_FLAG_WRITE_COMPLETE = WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE, |
| WINHTTP_CALLBACK_FLAG_REQUEST_ERROR = WINHTTP_CALLBACK_STATUS_REQUEST_ERROR |
| } |
| |
| enum DWORD WINHTTP_CALLBACK_FLAG_GETPROXYFORURL_COMPLETE = WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE; |
| |
| // Windows 8+/2012+ |
| static if (_WIN32_WINNT >= 0x602) { |
| enum DWORD WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS = (WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE |
| | WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE |
| | WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE |
| | WINHTTP_CALLBACK_STATUS_READ_COMPLETE |
| | WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE |
| | WINHTTP_CALLBACK_STATUS_REQUEST_ERROR); |
| } else { |
| enum DWORD WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS = (WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE |
| | WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE |
| | WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE |
| | WINHTTP_CALLBACK_STATUS_READ_COMPLETE |
| | WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE |
| | WINHTTP_CALLBACK_STATUS_REQUEST_ERROR |
| | WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE); |
| } |
| |
| enum DWORD WINHTTP_CALLBACK_FLAG_ALL_NOTIFICATIONS = 0xffffffff; |
| |
| enum WINHTTP_INVALID_STATUS_CALLBACK = (cast(WINHTTP_STATUS_CALLBACK)(-1L)); |
| |
| enum : DWORD { |
| WINHTTP_QUERY_MIME_VERSION = 0, |
| WINHTTP_QUERY_CONTENT_TYPE = 1, |
| WINHTTP_QUERY_CONTENT_TRANSFER_ENCODING = 2, |
| WINHTTP_QUERY_CONTENT_ID = 3, |
| WINHTTP_QUERY_CONTENT_DESCRIPTION = 4, |
| WINHTTP_QUERY_CONTENT_LENGTH = 5, |
| WINHTTP_QUERY_CONTENT_LANGUAGE = 6, |
| WINHTTP_QUERY_ALLOW = 7, |
| WINHTTP_QUERY_PUBLIC = 8, |
| WINHTTP_QUERY_DATE = 9, |
| WINHTTP_QUERY_EXPIRES = 10, |
| WINHTTP_QUERY_LAST_MODIFIED = 11, |
| WINHTTP_QUERY_MESSAGE_ID = 12, |
| WINHTTP_QUERY_URI = 13, |
| WINHTTP_QUERY_DERIVED_FROM = 14, |
| WINHTTP_QUERY_COST = 15, |
| WINHTTP_QUERY_LINK = 16, |
| WINHTTP_QUERY_PRAGMA = 17, |
| WINHTTP_QUERY_VERSION = 18, |
| WINHTTP_QUERY_STATUS_CODE = 19, |
| WINHTTP_QUERY_STATUS_TEXT = 20, |
| WINHTTP_QUERY_RAW_HEADERS = 21, |
| WINHTTP_QUERY_RAW_HEADERS_CRLF = 22, |
| WINHTTP_QUERY_CONNECTION = 23, |
| WINHTTP_QUERY_ACCEPT = 24, |
| WINHTTP_QUERY_ACCEPT_CHARSET = 25, |
| WINHTTP_QUERY_ACCEPT_ENCODING = 26, |
| WINHTTP_QUERY_ACCEPT_LANGUAGE = 27, |
| WINHTTP_QUERY_AUTHORIZATION = 28, |
| WINHTTP_QUERY_CONTENT_ENCODING = 29, |
| WINHTTP_QUERY_FORWARDED = 30, |
| WINHTTP_QUERY_FROM = 31, |
| WINHTTP_QUERY_IF_MODIFIED_SINCE = 32, |
| WINHTTP_QUERY_LOCATION = 33, |
| WINHTTP_QUERY_ORIG_URI = 34, |
| WINHTTP_QUERY_REFERER = 35, |
| WINHTTP_QUERY_RETRY_AFTER = 36, |
| WINHTTP_QUERY_SERVER = 37, |
| WINHTTP_QUERY_TITLE = 38, |
| WINHTTP_QUERY_USER_AGENT = 39, |
| WINHTTP_QUERY_WWW_AUTHENTICATE = 40, |
| WINHTTP_QUERY_PROXY_AUTHENTICATE = 41, |
| WINHTTP_QUERY_ACCEPT_RANGES = 42, |
| WINHTTP_QUERY_SET_COOKIE = 43, |
| WINHTTP_QUERY_COOKIE = 44, |
| WINHTTP_QUERY_REQUEST_METHOD = 45, |
| WINHTTP_QUERY_REFRESH = 46, |
| WINHTTP_QUERY_CONTENT_DISPOSITION = 47, |
| |
| // HTTP 1.1 defined headers |
| |
| WINHTTP_QUERY_AGE = 48, |
| WINHTTP_QUERY_CACHE_CONTROL = 49, |
| WINHTTP_QUERY_CONTENT_BASE = 50, |
| WINHTTP_QUERY_CONTENT_LOCATION = 51, |
| WINHTTP_QUERY_CONTENT_MD5 = 52, |
| WINHTTP_QUERY_CONTENT_RANGE = 53, |
| WINHTTP_QUERY_ETAG = 54, |
| WINHTTP_QUERY_HOST = 55, |
| WINHTTP_QUERY_IF_MATCH = 56, |
| WINHTTP_QUERY_IF_NONE_MATCH = 57, |
| WINHTTP_QUERY_IF_RANGE = 58, |
| WINHTTP_QUERY_IF_UNMODIFIED_SINCE = 59, |
| WINHTTP_QUERY_MAX_FORWARDS = 60, |
| WINHTTP_QUERY_PROXY_AUTHORIZATION = 61, |
| WINHTTP_QUERY_RANGE = 62, |
| WINHTTP_QUERY_TRANSFER_ENCODING = 63, |
| WINHTTP_QUERY_UPGRADE = 64, |
| WINHTTP_QUERY_VARY = 65, |
| WINHTTP_QUERY_VIA = 66, |
| WINHTTP_QUERY_WARNING = 67, |
| WINHTTP_QUERY_EXPECT = 68, |
| WINHTTP_QUERY_PROXY_CONNECTION = 69, |
| WINHTTP_QUERY_UNLESS_MODIFIED_SINCE = 70, |
| |
| WINHTTP_QUERY_PROXY_SUPPORT = 75, |
| WINHTTP_QUERY_AUTHENTICATION_INFO = 76, |
| WINHTTP_QUERY_PASSPORT_URLS = 77, |
| WINHTTP_QUERY_PASSPORT_CONFIG = 78, |
| |
| WINHTTP_QUERY_MAX = 78, |
| |
| WINHTTP_QUERY_CUSTOM = 65535, |
| |
| WINHTTP_QUERY_FLAG_REQUEST_HEADERS = 0x80000000, |
| |
| WINHTTP_QUERY_FLAG_SYSTEMTIME = 0x40000000, |
| |
| WINHTTP_QUERY_FLAG_NUMBER = 0x20000000 |
| } |
| |
| enum : DWORD { |
| HTTP_STATUS_CONTINUE = 100, |
| HTTP_STATUS_SWITCH_PROTOCOLS = 101, |
| |
| HTTP_STATUS_OK = 200, |
| HTTP_STATUS_CREATED = 201, |
| HTTP_STATUS_ACCEPTED = 202, |
| HTTP_STATUS_PARTIAL = 203, |
| HTTP_STATUS_NO_CONTENT = 204, |
| HTTP_STATUS_RESET_CONTENT = 205, |
| HTTP_STATUS_PARTIAL_CONTENT = 206, |
| HTTP_STATUS_WEBDAV_MULTI_STATUS = 207, |
| |
| HTTP_STATUS_AMBIGUOUS = 300, |
| HTTP_STATUS_MOVED = 301, |
| HTTP_STATUS_REDIRECT = 302, |
| HTTP_STATUS_REDIRECT_METHOD = 303, |
| HTTP_STATUS_NOT_MODIFIED = 304, |
| HTTP_STATUS_USE_PROXY = 305, |
| HTTP_STATUS_REDIRECT_KEEP_VERB = 307, |
| |
| HTTP_STATUS_BAD_REQUEST = 400, |
| HTTP_STATUS_DENIED = 401, |
| HTTP_STATUS_PAYMENT_REQ = 402, |
| HTTP_STATUS_FORBIDDEN = 403, |
| HTTP_STATUS_NOT_FOUND = 404, |
| HTTP_STATUS_BAD_METHOD = 405, |
| HTTP_STATUS_NONE_ACCEPTABLE = 406, |
| HTTP_STATUS_PROXY_AUTH_REQ = 407, |
| HTTP_STATUS_REQUEST_TIMEOUT = 408, |
| HTTP_STATUS_CONFLICT = 409, |
| HTTP_STATUS_GONE = 410, |
| HTTP_STATUS_LENGTH_REQUIRED = 411, |
| HTTP_STATUS_PRECOND_FAILED = 412, |
| HTTP_STATUS_REQUEST_TOO_LARGE = 413, |
| HTTP_STATUS_URI_TOO_LONG = 414, |
| HTTP_STATUS_UNSUPPORTED_MEDIA = 415, |
| HTTP_STATUS_RETRY_WITH = 449, |
| |
| HTTP_STATUS_SERVER_ERROR = 500, |
| HTTP_STATUS_NOT_SUPPORTED = 501, |
| HTTP_STATUS_BAD_GATEWAY = 502, |
| HTTP_STATUS_SERVICE_UNAVAIL = 503, |
| HTTP_STATUS_GATEWAY_TIMEOUT = 504, |
| HTTP_STATUS_VERSION_NOT_SUP = 505, |
| |
| HTTP_STATUS_FIRST = HTTP_STATUS_CONTINUE, |
| HTTP_STATUS_LAST = HTTP_STATUS_VERSION_NOT_SUP |
| } |
| |
| enum LPCWSTR WINHTTP_NO_REFERER = null; |
| enum LPCWSTR * WINHTTP_DEFAULT_ACCEPT_TYPES = null; |
| |
| enum : DWORD { |
| WINHTTP_ADDREQ_INDEX_MASK = 0x0000FFFF, |
| WINHTTP_ADDREQ_FLAGS_MASK = 0xFFFF0000, |
| |
| WINHTTP_ADDREQ_FLAG_ADD_IF_NEW = 0x10000000, |
| |
| WINHTTP_ADDREQ_FLAG_ADD = 0x20000000, |
| |
| WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA = 0x40000000, |
| WINHTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON = 0x01000000, |
| WINHTTP_ADDREQ_FLAG_COALESCE = WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA, |
| |
| WINHTTP_ADDREQ_FLAG_REPLACE = 0x80000000, |
| |
| WINHTTP_IGNORE_REQUEST_TOTAL_LENGTH = 0 |
| } |
| |
| enum LPCWSTR WINHTTP_NO_ADDITIONAL_HEADERS = null; |
| enum LPVOID WINHTTP_NO_REQUEST_DATA = null; |
| |
| enum LPCWSTR WINHTTP_HEADER_NAME_BY_INDEX = null; |
| enum LPVOID WINHTTP_NO_OUTPUT_BUFFER = null; |
| enum LPDWORD WINHTTP_NO_HEADER_INDEX = null; |
| |
| struct WINHTTP_CURRENT_USER_IE_PROXY_CONFIG { |
| BOOL fAutoDetect; |
| LPWSTR lpszAutoConfigUrl; |
| LPWSTR lpszProxy; |
| LPWSTR lpszProxyBypass; |
| } |
| |
| // WinHttp API error returns |
| enum : DWORD { |
| WINHTTP_ERROR_BASE = 12000, |
| |
| ERROR_WINHTTP_OUT_OF_HANDLES = (WINHTTP_ERROR_BASE + 1), |
| ERROR_WINHTTP_TIMEOUT = (WINHTTP_ERROR_BASE + 2), |
| ERROR_WINHTTP_INTERNAL_ERROR = (WINHTTP_ERROR_BASE + 4), |
| ERROR_WINHTTP_INVALID_URL = (WINHTTP_ERROR_BASE + 5), |
| ERROR_WINHTTP_UNRECOGNIZED_SCHEME = (WINHTTP_ERROR_BASE + 6), |
| ERROR_WINHTTP_NAME_NOT_RESOLVED = (WINHTTP_ERROR_BASE + 7), |
| ERROR_WINHTTP_INVALID_OPTION = (WINHTTP_ERROR_BASE + 9), |
| ERROR_WINHTTP_OPTION_NOT_SETTABLE = (WINHTTP_ERROR_BASE + 11), |
| ERROR_WINHTTP_SHUTDOWN = (WINHTTP_ERROR_BASE + 12), |
| |
| ERROR_WINHTTP_LOGIN_FAILURE = (WINHTTP_ERROR_BASE + 15), |
| ERROR_WINHTTP_OPERATION_CANCELLED = (WINHTTP_ERROR_BASE + 17), |
| ERROR_WINHTTP_INCORRECT_HANDLE_TYPE = (WINHTTP_ERROR_BASE + 18), |
| ERROR_WINHTTP_INCORRECT_HANDLE_STATE = (WINHTTP_ERROR_BASE + 19), |
| ERROR_WINHTTP_CANNOT_CONNECT = (WINHTTP_ERROR_BASE + 29), |
| ERROR_WINHTTP_CONNECTION_ERROR = (WINHTTP_ERROR_BASE + 30), |
| ERROR_WINHTTP_RESEND_REQUEST = (WINHTTP_ERROR_BASE + 32), |
| |
| ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED = (WINHTTP_ERROR_BASE + 44), |
| |
| ERROR_WINHTTP_CANNOT_CALL_BEFORE_OPEN = (WINHTTP_ERROR_BASE + 100), |
| ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND = (WINHTTP_ERROR_BASE + 101), |
| ERROR_WINHTTP_CANNOT_CALL_AFTER_SEND = (WINHTTP_ERROR_BASE + 102), |
| ERROR_WINHTTP_CANNOT_CALL_AFTER_OPEN = (WINHTTP_ERROR_BASE + 103), |
| |
| ERROR_WINHTTP_HEADER_NOT_FOUND = (WINHTTP_ERROR_BASE + 150), |
| ERROR_WINHTTP_INVALID_SERVER_RESPONSE = (WINHTTP_ERROR_BASE + 152), |
| ERROR_WINHTTP_INVALID_HEADER = (WINHTTP_ERROR_BASE + 153), |
| ERROR_WINHTTP_INVALID_QUERY_REQUEST = (WINHTTP_ERROR_BASE + 154), |
| ERROR_WINHTTP_HEADER_ALREADY_EXISTS = (WINHTTP_ERROR_BASE + 155), |
| ERROR_WINHTTP_REDIRECT_FAILED = (WINHTTP_ERROR_BASE + 156), |
| |
| ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERROR = (WINHTTP_ERROR_BASE + 178), |
| ERROR_WINHTTP_BAD_AUTO_PROXY_SCRIPT = (WINHTTP_ERROR_BASE + 166), |
| ERROR_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPT = (WINHTTP_ERROR_BASE + 167), |
| ERROR_WINHTTP_UNHANDLED_SCRIPT_TYPE = (WINHTTP_ERROR_BASE + 176), |
| ERROR_WINHTTP_SCRIPT_EXECUTION_ERROR = (WINHTTP_ERROR_BASE + 177), |
| |
| ERROR_WINHTTP_NOT_INITIALIZED = (WINHTTP_ERROR_BASE + 172), |
| ERROR_WINHTTP_SECURE_FAILURE = (WINHTTP_ERROR_BASE + 175), |
| |
| ERROR_WINHTTP_SECURE_CERT_DATE_INVALID = (WINHTTP_ERROR_BASE + 37), |
| ERROR_WINHTTP_SECURE_CERT_CN_INVALID = (WINHTTP_ERROR_BASE + 38), |
| ERROR_WINHTTP_SECURE_INVALID_CA = (WINHTTP_ERROR_BASE + 45), |
| ERROR_WINHTTP_SECURE_CERT_REV_FAILED = (WINHTTP_ERROR_BASE + 57), |
| ERROR_WINHTTP_SECURE_CHANNEL_ERROR = (WINHTTP_ERROR_BASE + 157), |
| ERROR_WINHTTP_SECURE_INVALID_CERT = (WINHTTP_ERROR_BASE + 169), |
| ERROR_WINHTTP_SECURE_CERT_REVOKED = (WINHTTP_ERROR_BASE + 170), |
| ERROR_WINHTTP_SECURE_CERT_WRONG_USAGE = (WINHTTP_ERROR_BASE + 179), |
| |
| ERROR_WINHTTP_AUTODETECTION_FAILED = (WINHTTP_ERROR_BASE + 180), |
| ERROR_WINHTTP_HEADER_COUNT_EXCEEDED = (WINHTTP_ERROR_BASE + 181), |
| ERROR_WINHTTP_HEADER_SIZE_OVERFLOW = (WINHTTP_ERROR_BASE + 182), |
| ERROR_WINHTTP_CHUNKED_ENCODING_HEADER_SIZE_OVERFLOW = (WINHTTP_ERROR_BASE + 183), |
| ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW = (WINHTTP_ERROR_BASE + 184), |
| ERROR_WINHTTP_CLIENT_CERT_NO_PRIVATE_KEY = (WINHTTP_ERROR_BASE + 185), |
| ERROR_WINHTTP_CLIENT_CERT_NO_ACCESS_PRIVATE_KEY = (WINHTTP_ERROR_BASE + 186), |
| |
| WINHTTP_ERROR_LAST = (WINHTTP_ERROR_BASE + 186) |
| } |
| |
| enum : DWORD { |
| WINHTTP_RESET_STATE = 0x00000001, |
| WINHTTP_RESET_SWPAD_CURRENT_NETWORK = 0x00000002, |
| WINHTTP_RESET_SWPAD_ALL = 0x00000004, |
| WINHTTP_RESET_SCRIPT_CACHE = 0x00000008, |
| WINHTTP_RESET_ALL = 0x0000FFFF, |
| WINHTTP_RESET_NOTIFY_NETWORK_CHANGED = 0x00010000, |
| WINHTTP_RESET_OUT_OF_PROC = 0x00020000 |
| } |
| |
| enum : DWORD { |
| WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH = 123, |
| WINHTTP_WEB_SOCKET_MIN_KEEPALIVE_VALUE = 15000 |
| } |
| |
| // Version(Windows8) || Version(Windows2012): |
| static if (_WIN32_WINNT >= 0x602) |
| { |
| enum WINHTTP_WEB_SOCKET_OPERATION : DWORD |
| { |
| WINHTTP_WEB_SOCKET_SEND_OPERATION = 0, |
| WINHTTP_WEB_SOCKET_RECEIVE_OPERATION = 1, |
| WINHTTP_WEB_SOCKET_CLOSE_OPERATION = 2, |
| WINHTTP_WEB_SOCKET_SHUTDOWN_OPERATION = 3 |
| } |
| enum WINHTTP_WEB_SOCKET_BUFFER_TYPE : DWORD |
| { |
| WINHTTP_WEB_SOCKET_BINARY_MESSAGE_BUFFER_TYPE = 0, |
| WINHTTP_WEB_SOCKET_BINARY_FRAGMENT_BUFFER_TYPE = 1, |
| WINHTTP_WEB_SOCKET_UTF8_MESSAGE_BUFFER_TYPE = 2, |
| WINHTTP_WEB_SOCKET_UTF8_FRAGMENT_BUFFER_TYPE = 3, |
| WINHTTP_WEB_SOCKET_CLOSE_BUFFER_TYPE = 4 |
| } |
| enum WINHTTP_WEB_SOCKET_CLOSE_STATUS : DWORD |
| { |
| WINHTTP_WEB_SOCKET_SUCCESS_CLOSE_STATUS = 1000, |
| WINHTTP_WEB_SOCKET_ENDPOINT_TERMINATED_CLOSE_STATUS = 1001, |
| WINHTTP_WEB_SOCKET_PROTOCOL_ERROR_CLOSE_STATUS = 1002, |
| WINHTTP_WEB_SOCKET_INVALID_DATA_TYPE_CLOSE_STATUS = 1003, |
| WINHTTP_WEB_SOCKET_EMPTY_CLOSE_STATUS = 1005, |
| WINHTTP_WEB_SOCKET_ABORTED_CLOSE_STATUS = 1006, |
| WINHTTP_WEB_SOCKET_INVALID_PAYLOAD_CLOSE_STATUS = 1007, |
| WINHTTP_WEB_SOCKET_POLICY_VIOLATION_CLOSE_STATUS = 1008, |
| WINHTTP_WEB_SOCKET_MESSAGE_TOO_BIG_CLOSE_STATUS = 1009, |
| WINHTTP_WEB_SOCKET_UNSUPPORTED_EXTENSIONS_CLOSE_STATUS = 1010, |
| WINHTTP_WEB_SOCKET_SERVER_ERROR_CLOSE_STATUS = 1011, |
| WINHTTP_WEB_SOCKET_SECURE_HANDSHAKE_ERROR_CLOSE_STATUS = 1015 |
| } |
| struct WINHTTP_PROXY_RESULT_ENTRY { |
| BOOL fProxy; |
| BOOL fBypass; |
| INTERNET_SCHEME ProxyScheme; |
| PWSTR pwszProxy; |
| INTERNET_PORT ProxyPort; |
| } |
| struct WINHTTP_PROXY_RESULT { |
| DWORD cEntries; |
| WINHTTP_PROXY_RESULT_ENTRY *pEntries; |
| } |
| struct WINHTTP_WEB_SOCKET_ASYNC_RESULT { |
| WINHTTP_ASYNC_RESULT AsyncResult; |
| WINHTTP_WEB_SOCKET_OPERATION Operation; |
| } |
| struct WINHTTP_WEB_SOCKET_STATUS { |
| DWORD dwBytesTransferred; |
| WINHTTP_WEB_SOCKET_BUFFER_TYPE eBufferType; |
| } |
| } |
| |
| |
| extern (Windows) { |
| BOOL WinHttpAddRequestHeaders(HINTERNET hRequest, LPCWSTR pwszHeaders, DWORD dwHeadersLength, DWORD dwModifiers); |
| |
| BOOL WinHttpCheckPlatform(); |
| |
| BOOL WinHttpCloseHandle(HINTERNET hInternet); |
| |
| HINTERNET WinHttpConnect(HINTERNET hSession, LPCWSTR pswzServerName, INTERNET_PORT nServerPort, DWORD dwReserved); |
| |
| BOOL WinHttpCrackUrl(LPCWSTR pwszUrl, DWORD dwUrlLength, DWORD dwFlags, LPURL_COMPONENTS lpUrlComponents); |
| |
| BOOL WinHttpCreateUrl(LPURL_COMPONENTS lpUrlComponents, DWORD dwFlags, LPWSTR pwszUrl, LPDWORD lpdwUrlLength); |
| BOOL WinHttpDetectAutoProxyConfigUrl(DWORD dwAutoDetectFlags, LPWSTR *ppwszAutoConfigUrl); |
| |
| BOOL WinHttpGetDefaultProxyConfiguration(WINHTTP_PROXY_INFO *pProxyInfo); |
| BOOL WinHttpGetIEProxyConfigForCurrentUser(WINHTTP_CURRENT_USER_IE_PROXY_CONFIG *pProxyConfig); |
| BOOL WinHttpGetProxyForUrl(HINTERNET hSession, LPCWSTR lpcwszUrl, |
| WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions, WINHTTP_PROXY_INFO *pProxyInfo); |
| |
| HINTERNET WinHttpOpen(LPCWSTR pwszUserAgent, DWORD dwAccessType, LPCWSTR pwszProxyName, |
| LPCWSTR pwszProxyBypass, DWORD dwFlags); |
| HINTERNET WinHttpOpenRequest(HINTERNET hConnect, LPCWSTR pwszVerb, LPCWSTR pwszObjectName, |
| LPCWSTR pwszVersion, LPCWSTR pwszReferrer, |
| LPCWSTR *ppwszAcceptTypes, DWORD dwFlags); |
| |
| BOOL WinHttpQueryAuthSchemes(HINTERNET hRequest, LPDWORD lpdwSupportedSchemes, |
| LPDWORD lpdwFirstScheme, LPDWORD pdwAuthTarget); |
| BOOL WinHttpQueryDataAvailable(HINTERNET hRequest, LPDWORD lpdwNumberOfBytesAvailable); |
| BOOL WinHttpQueryHeaders(HINTERNET hRequest, DWORD dwInfoLevel, LPCWSTR pwszName, |
| LPVOID lpBuffer, LPDWORD lpdwBufferLength, LPDWORD lpdwIndex); |
| BOOL WinHttpQueryOption(HINTERNET hInternet, DWORD dwOption, LPVOID lpBuffer, |
| LPDWORD lpdwBufferLength); |
| |
| BOOL WinHttpReadData(HINTERNET hRequest, LPVOID lpBuffer, DWORD dwNumberOfBytesToRead, |
| LPDWORD lpdwNumberOfBytesRead); |
| BOOL WinHttpReceiveResponse(HINTERNET hRequest, LPVOID lpReserved); |
| |
| BOOL WinHttpSendRequest(HINTERNET hRequest, LPCWSTR pwszHeaders, DWORD dwHeadersLength, |
| LPVOID lpOptional, DWORD dwOptionalLength, DWORD dwTotalLength, DWORD_PTR dwContext); |
| |
| BOOL WinHttpSetCredentials(HINTERNET hRequest, DWORD AuthTargets, DWORD AuthScheme, |
| LPCWSTR pwszUserName, LPCWSTR pwszPassword, LPVOID pAuthParams); |
| BOOL WinHttpSetDefaultProxyConfiguration(WINHTTP_PROXY_INFO *pProxyInfo); |
| BOOL WinHttpSetOption(HINTERNET hInternet, DWORD dwOption, LPVOID lpBuffer, DWORD dwBufferLength); |
| WINHTTP_STATUS_CALLBACK WinHttpSetStatusCallback(HINTERNET hInternet, |
| WINHTTP_STATUS_CALLBACK lpfnInternetCallback, |
| DWORD dwNotificationFlags, DWORD_PTR dwReserved); |
| BOOL WinHttpSetTimeouts(HINTERNET hInternet, int dwResolveTimeout, int dwConnectTimeout, |
| int dwSendTimeout, int dwReceiveTimeout); |
| |
| BOOL WinHttpTimeFromSystemTime(const SYSTEMTIME *pst, LPWSTR pwszTime); |
| BOOL WinHttpTimeToSystemTime(LPCWSTR pwszTime, SYSTEMTIME *pst); |
| |
| BOOL WinHttpWriteData(HINTERNET hRequest, LPCVOID lpBuffer, DWORD dwNumberOfBytesToWrite, |
| LPDWORD lpdwNumberOfBytesWritten); |
| |
| // Version(Windows8) || Version(Windows2012): |
| static if (_WIN32_WINNT >= 0x602) { |
| DWORD WinHttpCreateProxyResolver(HINTERNET hSession, HINTERNET *phResolver); |
| void WinHttpFreeProxyResult(WINHTTP_PROXY_RESULT *pProxyResult); |
| DWORD WinHttpGetProxyForUrlEx(HINTERNET hResolver, PCWSTR pcwszUrl, |
| WINHTTP_AUTOPROXY_OPTIONS *pAutoProxyOptions, DWORD_PTR pContext); |
| DWORD WinHttpGetProxyResult(HINTERNET hResolver, WINHTTP_PROXY_RESULT *pProxyResult); |
| DWORD WinHttpResetAutoProxy(HINTERNET hSession, DWORD dwFlags); |
| DWORD WinHttpWebSocketClose(HINTERNET hWebSocket, USHORT usStatus, PVOID pvReason, DWORD dwReasonLength); |
| HINTERNET WinHttpWebSocketCompleteUpgrade(HINTERNET hRequest, DWORD_PTR pContext); |
| DWORD WinHttpWebSocketQueryCloseStatus(HINTERNET hWebSocket, USHORT *pusStatus, PVOID pvReason, |
| DWORD dwReasonLength, DWORD *pdwReasonLengthConsumed); |
| DWORD WinHttpWebSocketReceive(HINTERNET hWebSocket, PVOID pvBuffer, DWORD dwBufferLength, |
| DWORD *pdwBytesRead, WINHTTP_WEB_SOCKET_BUFFER_TYPE *peBufferType); |
| DWORD WinHttpWebSocketSend(HINTERNET hWebSocket, WINHTTP_WEB_SOCKET_BUFFER_TYPE eBufferType, |
| PVOID pvBuffer, DWORD dwBufferLength); |
| DWORD WinHttpWebSocketShutdown(HINTERNET hWebSocket, USHORT usStatus, PVOID pvReason, DWORD dwReasonLength); |
| } |
| } |