From: Biswapriyo Nath nathbappai@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@gmail.com Signed-off-by: Hans Leidekker hans@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 }