From: Biswapriyo Nath <nathbappai(a)gmail.com>
Here is the updated patch. `HTTP_STATUS_PERMANENT_REDIRECT` is present
in 10.0.18362.0.
v3: Add WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE to
WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS.
Signed-off-by: Biswapriyo Nath <nathbappai(a)gmail.com>
Signed-off-by: Hans Leidekker <hans(a)codeweavers.com>
---
include/winhttp.h | 230 +++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 227 insertions(+), 3 deletions(-)
diff --git a/include/winhttp.h b/include/winhttp.h
index e873e7719e..33fc1f915d 100644
--- a/include/winhttp.h
+++ b/include/winhttp.h
@@ -46,6 +46,8 @@ typedef INTERNET_PORT *LPINTERNET_PORT;
typedef int INTERNET_SCHEME, *LPINTERNET_SCHEME;
#define ICU_ESCAPE 0x80000000
+#define ICU_ESCAPE_AUTHORITY 0x00002000
+#define ICU_REJECT_USERPWD 0x00004000
/* flags for WinHttpOpen */
#define WINHTTP_FLAG_ASYNC 0x10000000
@@ -62,6 +64,7 @@ typedef int INTERNET_SCHEME, *LPINTERNET_SCHEME;
#define WINHTTP_ACCESS_TYPE_DEFAULT_PROXY 0
#define WINHTTP_ACCESS_TYPE_NO_PROXY 1
#define WINHTTP_ACCESS_TYPE_NAMED_PROXY 3
+#define WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY 4
#define WINHTTP_NO_PROXY_NAME NULL
#define WINHTTP_NO_PROXY_BYPASS NULL
@@ -108,6 +111,7 @@ typedef int INTERNET_SCHEME, *LPINTERNET_SCHEME;
#define WINHTTP_OPTION_URL 34
#define WINHTTP_OPTION_SECURITY_KEY_BITNESS 36
#define WINHTTP_OPTION_PROXY 38
+#define WINHTTP_OPTION_PROXY_RESULT_ENTRY 39
#define WINHTTP_OPTION_USER_AGENT 41
#define WINHTTP_OPTION_CONTEXT_VALUE 45
#define WINHTTP_OPTION_CLIENT_CERT_CONTEXT 47
@@ -141,7 +145,35 @@ typedef int INTERNET_SCHEME, *LPINTERNET_SCHEME;
#define WINHTTP_OPTION_UNLOAD_NOTIFY_EVENT 99
#define WINHTTP_OPTION_REJECT_USERPWD_IN_URL 100
#define WINHTTP_OPTION_USE_GLOBAL_SERVER_CREDENTIALS 101
-#define WINHTTP_LAST_OPTION WINHTTP_OPTION_USE_GLOBAL_SERVER_CREDENTIALS
+#define WINHTTP_OPTION_RECEIVE_PROXY_CONNECT_RESPONSE 103
+#define WINHTTP_OPTION_IS_PROXY_CONNECT_RESPONSE 104
+#define WINHTTP_OPTION_SERVER_SPN_USED 106
+#define WINHTTP_OPTION_PROXY_SPN_USED 107
+#define WINHTTP_OPTION_SERVER_CBT 108
+#define WINHTTP_OPTION_UNSAFE_HEADER_PARSING 110
+#define WINHTTP_OPTION_ASSURED_NON_BLOCKING_CALLBACKS 111
+#define WINHTTP_OPTION_UPGRADE_TO_WEB_SOCKET 114
+#define WINHTTP_OPTION_WEB_SOCKET_CLOSE_TIMEOUT 115
+#define WINHTTP_OPTION_WEB_SOCKET_KEEPALIVE_INTERVAL 116
+#define WINHTTP_OPTION_DECOMPRESSION 118
+#define WINHTTP_OPTION_WEB_SOCKET_RECEIVE_BUFFER_SIZE 122
+#define WINHTTP_OPTION_WEB_SOCKET_SEND_BUFFER_SIZE 123
+#define WINHTTP_OPTION_TCP_PRIORITY_HINT 128
+#define WINHTTP_OPTION_CONNECTION_FILTER 131
+#define WINHTTP_OPTION_ENABLE_HTTP_PROTOCOL 133
+#define WINHTTP_OPTION_HTTP_PROTOCOL_USED 134
+#define WINHTTP_OPTION_KDC_PROXY_SETTINGS 136
+#define WINHTTP_OPTION_ENCODE_EXTRA 138
+#define WINHTTP_OPTION_DISABLE_STREAM_QUEUE 139
+#define WINHTTP_OPTION_IPV6_FAST_FALLBACK 140
+#define WINHTTP_OPTION_CONNECTION_STATS_V0 141
+#define WINHTTP_OPTION_REQUEST_TIMES 142
+#define WINHTTP_OPTION_EXPIRE_CONNECTION 143
+#define WINHTTP_OPTION_DISABLE_SECURE_PROTOCOL_FALLBACK 144
+#define WINHTTP_OPTION_HTTP_PROTOCOL_REQUIRED 145
+#define WINHTTP_OPTION_REQUEST_STATS 146
+#define WINHTTP_OPTION_SERVER_CERT_CHAIN_CONTEXT 147
+#define WINHTTP_LAST_OPTION WINHTTP_OPTION_SERVER_CERT_CHAIN_CONTEXT
#define WINHTTP_OPTION_USERNAME 0x1000
#define WINHTTP_OPTION_PASSWORD 0x1001
#define WINHTTP_OPTION_PROXY_USERNAME 0x1002
@@ -149,6 +181,14 @@ typedef int INTERNET_SCHEME, *LPINTERNET_SCHEME;
#define WINHTTP_CONNS_PER_SERVER_UNLIMITED 0xFFFFFFFF
+#define WINHTTP_DECOMPRESSION_FLAG_GZIP 0x00000001
+#define WINHTTP_DECOMPRESSION_FLAG_DEFLATE 0x00000002
+
+#define WINHTTP_DECOMPRESSION_FLAG_ALL ( WINHTTP_DECOMPRESSION_FLAG_GZIP | WINHTTP_DECOMPRESSION_FLAG_DEFLATE )
+
+#define WINHTTP_PROTOCOL_FLAG_HTTP2 0x1
+#define WINHTTP_PROTOCOL_MASK WINHTTP_PROTOCOL_FLAG_HTTP2
+
#define WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM 0
#define WINHTTP_AUTOLOGON_SECURITY_LEVEL_LOW 1
#define WINHTTP_AUTOLOGON_SECURITY_LEVEL_HIGH 2
@@ -223,6 +263,8 @@ typedef int INTERNET_SCHEME, *LPINTERNET_SCHEME;
#define ERROR_WINHTTP_SECURE_CERT_REVOKED (WINHTTP_ERROR_BASE + 170)
#define ERROR_WINHTTP_NOT_INITIALIZED (WINHTTP_ERROR_BASE + 172)
#define ERROR_WINHTTP_SECURE_FAILURE (WINHTTP_ERROR_BASE + 175)
+#define ERROR_WINHTTP_UNHANDLED_SCRIPT_TYPE (WINHTTP_ERROR_BASE + 176)
+#define ERROR_WINHTTP_SCRIPT_EXECUTION_ERROR (WINHTTP_ERROR_BASE + 177)
#define ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERROR (WINHTTP_ERROR_BASE + 178)
#define ERROR_WINHTTP_SECURE_CERT_WRONG_USAGE (WINHTTP_ERROR_BASE + 179)
#define ERROR_WINHTTP_AUTODETECTION_FAILED (WINHTTP_ERROR_BASE + 180)
@@ -232,7 +274,20 @@ typedef int INTERNET_SCHEME, *LPINTERNET_SCHEME;
#define ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW (WINHTTP_ERROR_BASE + 184)
#define ERROR_WINHTTP_CLIENT_CERT_NO_PRIVATE_KEY (WINHTTP_ERROR_BASE + 185)
#define ERROR_WINHTTP_CLIENT_CERT_NO_ACCESS_PRIVATE_KEY (WINHTTP_ERROR_BASE + 186)
-#define WINHTTP_ERROR_LAST (WINHTTP_ERROR_BASE + 186)
+#define ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED_PROXY (WINHTTP_ERROR_BASE + 187)
+#define ERROR_WINHTTP_SECURE_FAILURE_PROXY (WINHTTP_ERROR_BASE + 188)
+#define ERROR_WINHTTP_RESERVED_189 (WINHTTP_ERROR_BASE + 189)
+#define ERROR_WINHTTP_HTTP_PROTOCOL_MISMATCH (WINHTTP_ERROR_BASE + 190)
+#define WINHTTP_ERROR_LAST (WINHTTP_ERROR_BASE + 188)
+
+#define WINHTTP_RESET_STATE 0x00000001
+#define WINHTTP_RESET_SWPAD_CURRENT_NETWORK 0x00000002
+#define WINHTTP_RESET_SWPAD_ALL 0x00000004
+#define WINHTTP_RESET_SCRIPT_CACHE 0x00000008
+#define WINHTTP_RESET_ALL 0x0000FFFF
+#define WINHTTP_RESET_NOTIFY_NETWORK_CHANGED 0x00010000
+#define WINHTTP_RESET_OUT_OF_PROC 0x00020000
+#define WINHTTP_RESET_DISCARD_RESOLVERS 0x00040000
/* WinHttp status codes */
#define HTTP_STATUS_CONTINUE 100
@@ -252,6 +307,7 @@ typedef int INTERNET_SCHEME, *LPINTERNET_SCHEME;
#define HTTP_STATUS_NOT_MODIFIED 304
#define HTTP_STATUS_USE_PROXY 305
#define HTTP_STATUS_REDIRECT_KEEP_VERB 307
+#define HTTP_STATUS_PERMANENT_REDIRECT 308
#define HTTP_STATUS_BAD_REQUEST 400
#define HTTP_STATUS_DENIED 401
#define HTTP_STATUS_PAYMENT_REQ 402
@@ -375,6 +431,7 @@ typedef int INTERNET_SCHEME, *LPINTERNET_SCHEME;
#define WINHTTP_QUERY_FLAG_REQUEST_HEADERS 0x80000000
#define WINHTTP_QUERY_FLAG_SYSTEMTIME 0x40000000
#define WINHTTP_QUERY_FLAG_NUMBER 0x20000000
+#define WINHTTP_QUERY_FLAG_NUMBER64 0x08000000
/* Callback options */
#define WINHTTP_CALLBACK_STATUS_RESOLVING_NAME 0x00000001
@@ -399,6 +456,11 @@ typedef int INTERNET_SCHEME, *LPINTERNET_SCHEME;
#define WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE 0x00100000
#define WINHTTP_CALLBACK_STATUS_REQUEST_ERROR 0x00200000
#define WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE 0x00400000
+#define WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE 0x01000000
+#define WINHTTP_CALLBACK_STATUS_CLOSE_COMPLETE 0x02000000
+#define WINHTTP_CALLBACK_STATUS_SHUTDOWN_COMPLETE 0x04000000
+#define WINHTTP_CALLBACK_STATUS_SETTINGS_WRITE_COMPLETE 0x10000000
+#define WINHTTP_CALLBACK_STATUS_SETTINGS_READ_COMPLETE 0x20000000
#define WINHTTP_CALLBACK_FLAG_RESOLVE_NAME (WINHTTP_CALLBACK_STATUS_RESOLVING_NAME | WINHTTP_CALLBACK_STATUS_NAME_RESOLVED)
#define WINHTTP_CALLBACK_FLAG_CONNECT_TO_SERVER (WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER | WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER)
#define WINHTTP_CALLBACK_FLAG_SEND_REQUEST (WINHTTP_CALLBACK_STATUS_SENDING_REQUEST | WINHTTP_CALLBACK_STATUS_REQUEST_SENT)
@@ -415,9 +477,11 @@ typedef int INTERNET_SCHEME, *LPINTERNET_SCHEME;
#define WINHTTP_CALLBACK_FLAG_READ_COMPLETE WINHTTP_CALLBACK_STATUS_READ_COMPLETE
#define WINHTTP_CALLBACK_FLAG_WRITE_COMPLETE WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE
#define WINHTTP_CALLBACK_FLAG_REQUEST_ERROR WINHTTP_CALLBACK_STATUS_REQUEST_ERROR
+#define WINHTTP_CALLBACK_FLAG_GETPROXYFORURL_COMPLETE WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE
#define 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_WRITE_COMPLETE | WINHTTP_CALLBACK_STATUS_REQUEST_ERROR \
+ | WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE)
#define WINHTTP_CALLBACK_FLAG_ALL_NOTIFICATIONS 0xffffffff
#define WINHTTP_INVALID_STATUS_CALLBACK ((WINHTTP_STATUS_CALLBACK)(-1))
@@ -426,6 +490,7 @@ typedef int INTERNET_SCHEME, *LPINTERNET_SCHEME;
#define API_READ_DATA (3)
#define API_WRITE_DATA (4)
#define API_SEND_REQUEST (5)
+#define API_GET_PROXY_FOR_URL (6)
#define WINHTTP_HANDLE_TYPE_SESSION 1
#define WINHTTP_HANDLE_TYPE_CONNECT 2
@@ -445,6 +510,7 @@ typedef int INTERNET_SCHEME, *LPINTERNET_SCHEME;
#define WINHTTP_FLAG_SECURE_PROTOCOL_TLS1 0x00000080
#define WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_1 0x00000200
#define WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2 0x00000800
+#define WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_3 0x00002000
#define WINHTTP_FLAG_SECURE_PROTOCOL_ALL (WINHTTP_FLAG_SECURE_PROTOCOL_SSL2 |\
WINHTTP_FLAG_SECURE_PROTOCOL_SSL3 |\
WINHTTP_FLAG_SECURE_PROTOCOL_TLS1)
@@ -517,14 +583,24 @@ typedef struct
} WINHTTP_CURRENT_USER_IE_PROXY_CONFIG;
typedef VOID (CALLBACK *WINHTTP_STATUS_CALLBACK)(HINTERNET,DWORD_PTR,DWORD,LPVOID,DWORD);
+typedef WINHTTP_STATUS_CALLBACK * LPWINHTTP_STATUS_CALLBACK;
#define WINHTTP_AUTO_DETECT_TYPE_DHCP 0x00000001
#define WINHTTP_AUTO_DETECT_TYPE_DNS_A 0x00000002
#define WINHTTP_AUTOPROXY_AUTO_DETECT 0x00000001
#define WINHTTP_AUTOPROXY_CONFIG_URL 0x00000002
+#define WINHTTP_AUTOPROXY_HOST_KEEPCASE 0x00000004
+#define WINHTTP_AUTOPROXY_HOST_LOWERCASE 0x00000008
+#define WINHTTP_AUTOPROXY_ALLOW_AUTOCONFIG 0x00000100
+#define WINHTTP_AUTOPROXY_ALLOW_STATIC 0x00000200
+#define WINHTTP_AUTOPROXY_ALLOW_CM 0x00000400
#define WINHTTP_AUTOPROXY_RUN_INPROCESS 0x00010000
#define WINHTTP_AUTOPROXY_RUN_OUTPROCESS_ONLY 0x00020000
+#define WINHTTP_AUTOPROXY_NO_DIRECTACCESS 0x00040000
+#define WINHTTP_AUTOPROXY_NO_CACHE_CLIENT 0x00080000
+#define WINHTTP_AUTOPROXY_NO_CACHE_SVC 0x00100000
+#define WINHTTP_AUTOPROXY_SORT_RESULTS 0x00400000
typedef struct
{
@@ -536,6 +612,56 @@ typedef struct
BOOL fAutoLogonIfChallenged;
} WINHTTP_AUTOPROXY_OPTIONS;
+typedef struct _WINHTTP_PROXY_RESULT_ENTRY
+{
+ BOOL fProxy;
+ BOOL fBypass;
+ INTERNET_SCHEME ProxyScheme;
+ PWSTR pwszProxy;
+ INTERNET_PORT ProxyPort;
+} WINHTTP_PROXY_RESULT_ENTRY;
+
+typedef struct _WINHTTP_PROXY_RESULT
+{
+ DWORD cEntries;
+ WINHTTP_PROXY_RESULT_ENTRY *pEntries;
+} WINHTTP_PROXY_RESULT;
+
+typedef struct _WINHTTP_PROXY_RESULT_EX
+{
+ DWORD cEntries;
+ WINHTTP_PROXY_RESULT_ENTRY *pEntries;
+ HANDLE hProxyDetectionHandle;
+ DWORD dwProxyInterfaceAffinity;
+} WINHTTP_PROXY_RESULT_EX;
+
+#define NETWORKING_KEY_BUFSIZE 128
+
+typedef struct _WinHttpProxyNetworkKey
+{
+ unsigned char pbBuffer[NETWORKING_KEY_BUFSIZE];
+} WINHTTP_PROXY_NETWORKING_KEY, *PWINHTTP_PROXY_NETWORKING_KEY;
+
+typedef struct _WINHTTP_PROXY_SETTINGS
+{
+ DWORD dwStructSize;
+ DWORD dwFlags;
+ DWORD dwCurrentSettingsVersion;
+ PWSTR pwszConnectionName;
+ PWSTR pwszProxy;
+ PWSTR pwszProxyBypass;
+ PWSTR pwszAutoconfigUrl;
+ PWSTR pwszAutoconfigSecondaryUrl;
+ DWORD dwAutoDiscoveryFlags;
+ PWSTR pwszLastKnownGoodAutoConfigUrl;
+ DWORD dwAutoconfigReloadDelayMins;
+ FILETIME ftLastKnownDetectTime;
+ DWORD dwDetectedInterfaceIpCount;
+ PDWORD pdwDetectedInterfaceIp;
+ DWORD cNetworkKeys;
+ PWINHTTP_PROXY_NETWORKING_KEY pNetworkKeys;
+} WINHTTP_PROXY_SETTINGS, *PWINHTTP_PROXY_SETTINGS;
+
typedef struct
{
DWORD dwMajorVersion;
@@ -551,6 +677,91 @@ typedef struct
} WINHTTP_CONNECTION_INFO;
#endif
+typedef enum _WINHTTP_REQUEST_TIME_ENTRY
+{
+ WinHttpProxyDetectionStart = 0,
+ WinHttpProxyDetectionEnd,
+ WinHttpConnectionAcquireStart,
+ WinHttpConnectionAcquireWaitEnd,
+ WinHttpConnectionAcquireEnd,
+ WinHttpNameResolutionStart,
+ WinHttpNameResolutionEnd,
+ WinHttpConnectionEstablishmentStart,
+ WinHttpConnectionEstablishmentEnd,
+ WinHttpTlsHandshakeClientLeg1Start,
+ WinHttpTlsHandshakeClientLeg1End,
+ WinHttpTlsHandshakeClientLeg2Start,
+ WinHttpTlsHandshakeClientLeg2End,
+ WinHttpTlsHandshakeClientLeg3Start,
+ WinHttpTlsHandshakeClientLeg3End,
+ WinHttpStreamWaitStart,
+ WinHttpStreamWaitEnd,
+ WinHttpSendRequestStart,
+ WinHttpSendRequestHeadersCompressionStart,
+ WinHttpSendRequestHeadersCompressionEnd,
+ WinHttpSendRequestHeadersEnd,
+ WinHttpSendRequestEnd,
+ WinHttpReceiveResponseStart,
+ WinHttpReceiveResponseHeadersDecompressionStart,
+ WinHttpReceiveResponseHeadersDecompressionEnd,
+ WinHttpReceiveResponseHeadersEnd,
+ WinHttpReceiveResponseBodyDecompressionDelta,
+ WinHttpReceiveResponseEnd,
+ WinHttpProxyTunnelStart,
+ WinHttpProxyTunnelEnd,
+ WinHttpProxyTlsHandshakeClientLeg1Start,
+ WinHttpProxyTlsHandshakeClientLeg1End,
+ WinHttpProxyTlsHandshakeClientLeg2Start,
+ WinHttpProxyTlsHandshakeClientLeg2End,
+ WinHttpProxyTlsHandshakeClientLeg3Start,
+ WinHttpProxyTlsHandshakeClientLeg3End,
+ WinHttpRequestTimeLast,
+ WinHttpRequestTimeMax = 64
+} WINHTTP_REQUEST_TIME_ENTRY;
+
+typedef struct _WINHTTP_REQUEST_TIMES
+{
+ ULONG cTimes;
+ ULONGLONG rgullTimes[WinHttpRequestTimeMax];
+} WINHTTP_REQUEST_TIMES, *PWINHTTP_REQUEST_TIMES;
+
+typedef enum _WINHTTP_REQUEST_STAT_ENTRY
+{
+ WinHttpConnectFailureCount = 0,
+ WinHttpProxyFailureCount,
+ WinHttpTlsHandshakeClientLeg1Size,
+ WinHttpTlsHandshakeServerLeg1Size,
+ WinHttpTlsHandshakeClientLeg2Size,
+ WinHttpTlsHandshakeServerLeg2Size,
+ WinHttpRequestHeadersSize,
+ WinHttpRequestHeadersCompressedSize,
+ WinHttpResponseHeadersSize,
+ WinHttpResponseHeadersCompressedSize,
+ WinHttpResponseBodySize,
+ WinHttpResponseBodyCompressedSize,
+ WinHttpProxyTlsHandshakeClientLeg1Size,
+ WinHttpProxyTlsHandshakeServerLeg1Size,
+ WinHttpProxyTlsHandshakeClientLeg2Size,
+ WinHttpProxyTlsHandshakeServerLeg2Size,
+ WinHttpRequestStatLast,
+ WinHttpRequestStatMax = 32
+} WINHTTP_REQUEST_STAT_ENTRY;
+
+#define WINHTTP_REQUEST_STAT_FLAG_TCP_FAST_OPEN 0x00000001
+#define WINHTTP_REQUEST_STAT_FLAG_TLS_SESSION_RESUMPTION 0x00000002
+#define WINHTTP_REQUEST_STAT_FLAG_TLS_FALSE_START 0x00000004
+#define WINHTTP_REQUEST_STAT_FLAG_PROXY_TLS_SESSION_RESUMPTION 0x00000008
+#define WINHTTP_REQUEST_STAT_FLAG_PROXY_TLS_FALSE_START 0x00000010
+#define WINHTTP_REQUEST_STAT_FLAG_FIRST_REQUEST 0x00000020
+
+typedef struct _WINHTTP_REQUEST_STATS
+{
+ ULONGLONG ullFlags;
+ ULONG ulIndex;
+ ULONG cStats;
+ ULONGLONG rgullStats[WinHttpRequestStatMax];
+} WINHTTP_REQUEST_STATS, *PWINHTTP_REQUEST_STATS;
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -561,10 +772,20 @@ BOOL WINAPI WinHttpCheckPlatform(void);
BOOL WINAPI WinHttpCloseHandle(HINTERNET);
HINTERNET WINAPI WinHttpConnect(HINTERNET,LPCWSTR,INTERNET_PORT,DWORD);
BOOL WINAPI WinHttpCrackUrl(LPCWSTR,DWORD,DWORD,LPURL_COMPONENTS);
+DWORD WINAPI WinHttpCreateProxyResolver(HINTERNET,HINTERNET*);
BOOL WINAPI WinHttpCreateUrl(LPURL_COMPONENTS,DWORD,LPWSTR,LPDWORD);
+VOID WINAPI WinHttpFreeProxyResult(WINHTTP_PROXY_RESULT*);
+VOID WINAPI WinHttpFreeProxyResultEx(WINHTTP_PROXY_RESULT_EX*);
+VOID WINAPI WinHttpFreeProxySettings(WINHTTP_PROXY_SETTINGS*);
BOOL WINAPI WinHttpGetDefaultProxyConfiguration(WINHTTP_PROXY_INFO*);
BOOL WINAPI WinHttpGetIEProxyConfigForCurrentUser(WINHTTP_CURRENT_USER_IE_PROXY_CONFIG*);
BOOL WINAPI WinHttpGetProxyForUrl(HINTERNET,LPCWSTR,WINHTTP_AUTOPROXY_OPTIONS*,WINHTTP_PROXY_INFO*);
+DWORD WINAPI WinHttpGetProxyForUrlEx(HINTERNET,PCWSTR,WINHTTP_AUTOPROXY_OPTIONS*,DWORD_PTR);
+DWORD WINAPI WinHttpGetProxyForUrlEx2(HINTERNET,PCWSTR,WINHTTP_AUTOPROXY_OPTIONS*,DWORD,BYTE*,DWORD_PTR);
+DWORD WINAPI WinHttpGetProxyResult(HINTERNET,WINHTTP_PROXY_RESULT*);
+DWORD WINAPI WinHttpGetProxyResultEx(HINTERNET,WINHTTP_PROXY_RESULT_EX*);
+DWORD WINAPI WinHttpGetProxySettingsVersion(HINTERNET,DWORD*);
+DWORD WINAPI WinHttpIsHostInProxyBypassList(const WINHTTP_PROXY_INFO*,PCWSTR,INTERNET_SCHEME,INTERNET_PORT,BOOL*);
HINTERNET WINAPI WinHttpOpen(LPCWSTR,DWORD,LPCWSTR,LPCWSTR,DWORD);
HINTERNET WINAPI WinHttpOpenRequest(HINTERNET,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR*,DWORD);
BOOL WINAPI WinHttpQueryAuthParams(HINTERNET,DWORD,LPVOID*);
@@ -573,7 +794,9 @@ BOOL WINAPI WinHttpQueryDataAvailable(HINTERNET,LPDWORD);
BOOL WINAPI WinHttpQueryHeaders(HINTERNET,DWORD,LPCWSTR,LPVOID,LPDWORD,LPDWORD);
BOOL WINAPI WinHttpQueryOption(HINTERNET,DWORD,LPVOID,LPDWORD);
BOOL WINAPI WinHttpReadData(HINTERNET,LPVOID,DWORD,LPDWORD);
+DWORD WINAPI WinHttpReadProxySettings(HINTERNET,PCWSTR,BOOL,BOOL,DWORD*,BOOL*,WINHTTP_PROXY_SETTINGS*);
BOOL WINAPI WinHttpReceiveResponse(HINTERNET,LPVOID);
+DWORD WINAPI WinHttpResetAutoProxy(HINTERNET,DWORD);
BOOL WINAPI WinHttpSendRequest(HINTERNET,LPCWSTR,DWORD,LPVOID,DWORD,DWORD,DWORD_PTR);
BOOL WINAPI WinHttpSetDefaultProxyConfiguration(WINHTTP_PROXY_INFO*);
BOOL WINAPI WinHttpSetCredentials(HINTERNET,DWORD,DWORD,LPCWSTR,LPCWSTR,LPVOID);
@@ -583,6 +806,7 @@ BOOL WINAPI WinHttpSetTimeouts(HINTERNET,int,int,int,int);
BOOL WINAPI WinHttpTimeFromSystemTime(const SYSTEMTIME *,LPWSTR);
BOOL WINAPI WinHttpTimeToSystemTime(LPCWSTR,SYSTEMTIME*);
BOOL WINAPI WinHttpWriteData(HINTERNET,LPCVOID,DWORD,LPDWORD);
+DWORD WINAPI WinHttpWriteProxySettings(HINTERNET,BOOL,WINHTTP_PROXY_SETTINGS*);
#ifdef __cplusplus
}
--
2.20.1