mirror of
https://github.com/openRuyi-Project/gcc.git
synced 2026-09-06 22:11:37 +00:00
D front-end changes: - Import latest fixes from dmd v2.110.0-beta.1. - The `align' attribute now allows to specify `default' explicitly. - Add primary expression of the form `__rvalue(expression)' which causes `expression' to be treated as an rvalue, even if it is an lvalue. - Shortened method syntax can now be used in constructors. D runtime changes: - Import latest fixes from druntime v2.110.0-beta.1. Phobos changes: - Import latest fixes from phobos v2.110.0-beta.1. gcc/d/ChangeLog: * dmd/MERGE: Merge upstream dmd c57da0cf59. * d-codegen.cc (can_elide_copy_p): New. (d_build_call): Use it. * d-lang.cc (d_post_options): Update for new front-end interface. libphobos/ChangeLog: * libdruntime/MERGE: Merge upstream druntime c57da0cf59. * src/MERGE: Merge upstream phobos ad8ee5587. * testsuite/libphobos.init_fini/custom_gc.d: Adjust test. gcc/testsuite/ChangeLog: * gdc.dg/copy1.d: New test.
849 lines
37 KiB
D
849 lines
37 KiB
D
/**
|
|
* 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 core/sys/windows/_winhttp.d)
|
|
*/
|
|
module core.sys.windows.winhttp;
|
|
version (Windows):
|
|
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) nothrow @nogc {
|
|
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);
|
|
}
|
|
}
|