Hex Artifact Content

Not logged in

Artifact 8de3ce2cdcaacc84f09e926e355a9e76d9be1bb5:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0040: 2a 2a 2a 2a 2a 2a 2a 2a 5c 0a 2a 20 20 20 20 20  ********\.*     
0050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0060: 20 20 20 20 20 20 20 20 20 20 20 77 69 6e 68 74             winht
0070: 74 70 2e 64 20 20 20 20 20 20 20 20 20 20 20 20  tp.d            
0080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0090: 20 20 2a 0a 2a 20 20 20 20 20 20 20 20 20 20 20    *.*           
00a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00d0: 20 20 20 20 20 20 20 20 20 20 20 20 2a 0a 2a 20              *.* 
00e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00f0: 20 20 20 20 20 20 57 69 6e 64 6f 77 73 20 41 50        Windows AP
0100: 49 20 68 65 61 64 65 72 20 6d 6f 64 75 6c 65 20  I header module 
0110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0120: 20 20 20 20 20 20 2a 0a 2a 20 20 20 20 20 20 20        *.*       
0130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0170: 2a 0a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20  *.*             
0180: 20 20 20 20 20 54 72 61 6e 73 6c 61 74 65 64 20       Translated 
0190: 66 72 6f 6d 20 57 69 6e 64 6f 77 73 20 53 44 4b  from Windows SDK
01a0: 20 48 65 61 64 65 72 73 20 20 20 20 20 20 20 20   Headers        
01b0: 20 20 20 20 20 20 20 20 20 20 2a 0a 2a 20 20 20            *.*   
01c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
01d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
01e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
01f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0200: 20 20 20 20 2a 0a 2a 20 20 20 20 20 20 20 20 20      *.*         
0210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 6c                Pl
0220: 61 63 65 64 20 69 6e 74 6f 20 70 75 62 6c 69 63  aced into public
0230: 20 64 6f 6d 61 69 6e 20 20 20 20 20 20 20 20 20   domain         
0240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 0a                *.
0250: 5c 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  \***************
0260: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0270: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0280: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0290: 2a 2a 2a 2a 2a 2a 2a 2a 2f 0a 6d 6f 64 75 6c 65  ********/.module
02a0: 20 77 69 6e 33 32 2e 77 69 6e 68 74 74 70 3b 0a   win32.winhttp;.
02b0: 70 72 61 67 6d 61 28 6c 69 62 2c 20 22 77 69 6e  pragma(lib, "win
02c0: 68 74 74 70 22 29 3b 0a 2f 2f 20 46 49 58 4d 45  http");.// FIXME
02d0: 3a 20 47 72 6f 75 70 69 6e 67 20 6f 66 20 63 6f  : Grouping of co
02e0: 6e 73 74 61 6e 74 73 2e 20 57 69 6e 64 6f 77 73  nstants. Windows
02f0: 20 53 44 4b 20 64 6f 65 73 6e 27 74 20 6d 61 6b   SDK doesn't mak
0300: 65 20 74 68 69 73 20 65 6e 74 69 72 65 6c 79 20  e this entirely 
0310: 63 6c 65 61 72 0a 2f 2f 20 46 49 58 4d 45 3a 20  clear.// FIXME: 
0320: 56 65 72 69 66 79 20 57 49 4e 48 54 54 50 5f 53  Verify WINHTTP_S
0330: 54 41 54 55 53 5f 43 41 4c 4c 42 41 43 4b 20 66  TATUS_CALLBACK f
0340: 75 6e 63 74 69 6f 6e 20 64 65 63 6c 61 72 61 74  unction declarat
0350: 69 6f 6e 20 77 6f 72 6b 73 20 63 6f 72 72 65 63  ion works correc
0360: 74 6c 79 0a 0a 69 6d 70 6f 72 74 20 77 69 6e 33  tly..import win3
0370: 32 2e 77 33 32 61 70 69 3b 0a 69 6d 70 6f 72 74  2.w32api;.import
0380: 20 77 69 6e 33 32 2e 77 69 6e 62 61 73 65 3b 0a   win32.winbase;.
0390: 69 6d 70 6f 72 74 20 77 69 6e 33 32 2e 77 69 6e  import win32.win
03a0: 64 65 66 3b 0a 69 6d 70 6f 72 74 20 77 69 6e 33  def;.import win3
03b0: 32 2e 77 69 6e 73 6f 63 6b 32 3b 09 2f 2f 20 53  2.winsock2;.// S
03c0: 65 6c 65 63 74 69 76 65 20 49 6d 70 6f 72 74 73  elective Imports
03d0: 20 42 55 47 20 28 3a 20 53 4f 43 4b 41 44 44 52   BUG (: SOCKADDR
03e0: 5f 53 54 4f 52 41 47 45 3b 29 0a 0a 61 6c 69 61  _STORAGE;)..alia
03f0: 73 20 48 49 4e 54 45 52 4e 45 54 20 3d 20 76 6f  s HINTERNET = vo
0400: 69 64 2a 3b 0a 61 6c 69 61 73 20 4c 50 48 49 4e  id*;.alias LPHIN
0410: 54 45 52 4e 45 54 20 3d 20 48 49 4e 54 45 52 4e  TERNET = HINTERN
0420: 45 54 2a 3b 0a 61 6c 69 61 73 20 49 4e 54 45 52  ET*;.alias INTER
0430: 4e 45 54 5f 50 4f 52 54 20 3d 20 57 4f 52 44 3b  NET_PORT = WORD;
0440: 0a 61 6c 69 61 73 20 4c 50 49 4e 54 45 52 4e 45  .alias LPINTERNE
0450: 54 5f 50 4f 52 54 20 3d 20 49 4e 54 45 52 4e 45  T_PORT = INTERNE
0460: 54 5f 50 4f 52 54 2a 3b 0a 61 6c 69 61 73 20 49  T_PORT*;.alias I
0470: 4e 54 45 52 4e 45 54 5f 53 43 48 45 4d 45 20 3d  NTERNET_SCHEME =
0480: 20 69 6e 74 3b 0a 61 6c 69 61 73 20 4c 50 49 4e   int;.alias LPIN
0490: 54 45 52 4e 45 54 5f 53 43 48 45 4d 45 20 3d 20  TERNET_SCHEME = 
04a0: 49 4e 54 45 52 4e 45 54 5f 53 43 48 45 4d 45 2a  INTERNET_SCHEME*
04b0: 3b 0a 0a 2f 2f 20 50 72 6f 74 6f 63 6f 6c 20 27  ;..// Protocol '
04c0: 4d 61 6e 69 66 65 73 74 73 27 0a 65 6e 75 6d 20  Manifests'.enum 
04d0: 3a 20 44 57 4f 52 44 20 7b 0a 09 49 4e 54 45 52  : DWORD {..INTER
04e0: 4e 45 54 5f 44 45 46 41 55 4c 54 5f 50 4f 52 54  NET_DEFAULT_PORT
04f0: 20 20 20 20 20 20 20 3d 20 30 2c 0a 09 49 4e 54         = 0,..INT
0500: 45 52 4e 45 54 5f 44 45 46 41 55 4c 54 5f 48 54  ERNET_DEFAULT_HT
0510: 54 50 5f 50 4f 52 54 20 20 3d 20 38 30 2c 0a 09  TP_PORT  = 80,..
0520: 49 4e 54 45 52 4e 45 54 5f 44 45 46 41 55 4c 54  INTERNET_DEFAULT
0530: 5f 48 54 54 50 53 5f 50 4f 52 54 20 3d 20 34 34  _HTTPS_PORT = 44
0540: 33 0a 7d 0a 0a 2f 2f 20 57 69 6e 48 74 74 70 4f  3.}..// WinHttpO
0550: 70 65 6e 28 29 20 46 6c 61 67 73 3a 0a 65 6e 75  pen() Flags:.enu
0560: 6d 20 44 57 4f 52 44 20 57 49 4e 48 54 54 50 5f  m DWORD WINHTTP_
0570: 46 4c 41 47 5f 41 53 59 4e 43 20 3d 20 30 78 31  FLAG_ASYNC = 0x1
0580: 30 30 30 30 30 30 30 3b 0a 0a 2f 2f 20 57 69 6e  0000000;..// Win
0590: 48 74 74 70 4f 70 65 6e 52 65 71 75 65 73 74 28  HttpOpenRequest(
05a0: 29 20 46 6c 61 67 73 3a 0a 65 6e 75 6d 20 3a 20  ) Flags:.enum : 
05b0: 44 57 4f 52 44 20 7b 0a 09 57 49 4e 48 54 54 50  DWORD {..WINHTTP
05c0: 5f 46 4c 41 47 5f 53 45 43 55 52 45 20 20 20 20  _FLAG_SECURE    
05d0: 20 20 20 20 20 20 20 20 20 20 20 3d 20 30 78 30             = 0x0
05e0: 30 38 30 30 30 30 30 2c 20 0a 09 57 49 4e 48 54  0800000, ..WINHT
05f0: 54 50 5f 46 4c 41 47 5f 45 53 43 41 50 45 5f 50  TP_FLAG_ESCAPE_P
0600: 45 52 43 45 4e 54 20 20 20 20 20 20 20 3d 20 30  ERCENT       = 0
0610: 78 30 30 30 30 30 30 30 34 2c 20 0a 09 57 49 4e  x00000004, ..WIN
0620: 48 54 54 50 5f 46 4c 41 47 5f 4e 55 4c 4c 5f 43  HTTP_FLAG_NULL_C
0630: 4f 44 45 50 41 47 45 20 20 20 20 20 20 20 20 3d  ODEPAGE        =
0640: 20 30 78 30 30 30 30 30 30 30 38 2c 20 0a 09 57   0x00000008, ..W
0650: 49 4e 48 54 54 50 5f 46 4c 41 47 5f 42 59 50 41  INHTTP_FLAG_BYPA
0660: 53 53 5f 50 52 4f 58 59 5f 43 41 43 48 45 20 20  SS_PROXY_CACHE  
0670: 20 3d 20 30 78 30 30 30 30 30 31 30 30 2c 20 0a   = 0x00000100, .
0680: 09 57 49 4e 48 54 54 50 5f 46 4c 41 47 5f 52 45  .WINHTTP_FLAG_RE
0690: 46 52 45 53 48 20 20 20 20 20 20 20 20 20 20 20  FRESH           
06a0: 20 20 20 3d 20 57 49 4e 48 54 54 50 5f 46 4c 41     = WINHTTP_FLA
06b0: 47 5f 42 59 50 41 53 53 5f 50 52 4f 58 59 5f 43  G_BYPASS_PROXY_C
06c0: 41 43 48 45 2c 0a 09 57 49 4e 48 54 54 50 5f 46  ACHE,..WINHTTP_F
06d0: 4c 41 47 5f 45 53 43 41 50 45 5f 44 49 53 41 42  LAG_ESCAPE_DISAB
06e0: 4c 45 20 20 20 20 20 20 20 3d 20 30 78 30 30 30  LE       = 0x000
06f0: 30 30 30 34 30 2c 20 0a 09 57 49 4e 48 54 54 50  00040, ..WINHTTP
0700: 5f 46 4c 41 47 5f 45 53 43 41 50 45 5f 44 49 53  _FLAG_ESCAPE_DIS
0710: 41 42 4c 45 5f 51 55 45 52 59 20 3d 20 30 78 30  ABLE_QUERY = 0x0
0720: 30 30 30 30 30 38 30 2c 20 0a 09 0a 09 53 45 43  0000080, ....SEC
0730: 55 52 49 54 59 5f 46 4c 41 47 5f 49 47 4e 4f 52  URITY_FLAG_IGNOR
0740: 45 5f 55 4e 4b 4e 4f 57 4e 5f 43 41 20 20 20 20  E_UNKNOWN_CA    
0750: 20 20 20 20 3d 20 30 78 30 30 30 30 30 31 30 30      = 0x00000100
0760: 2c 0a 09 53 45 43 55 52 49 54 59 5f 46 4c 41 47  ,..SECURITY_FLAG
0770: 5f 49 47 4e 4f 52 45 5f 43 45 52 54 5f 44 41 54  _IGNORE_CERT_DAT
0780: 45 5f 49 4e 56 41 4c 49 44 20 3d 20 30 78 30 30  E_INVALID = 0x00
0790: 30 30 32 30 30 30 2c 20 0a 09 53 45 43 55 52 49  002000, ..SECURI
07a0: 54 59 5f 46 4c 41 47 5f 49 47 4e 4f 52 45 5f 43  TY_FLAG_IGNORE_C
07b0: 45 52 54 5f 43 4e 5f 49 4e 56 41 4c 49 44 20 20  ERT_CN_INVALID  
07c0: 20 3d 20 30 78 30 30 30 30 31 30 30 30 2c 0a 09   = 0x00001000,..
07d0: 53 45 43 55 52 49 54 59 5f 46 4c 41 47 5f 49 47  SECURITY_FLAG_IG
07e0: 4e 4f 52 45 5f 43 45 52 54 5f 57 52 4f 4e 47 5f  NORE_CERT_WRONG_
07f0: 55 53 41 47 45 20 20 3d 20 30 78 30 30 30 30 30  USAGE  = 0x00000
0800: 32 30 30 0a 7d 0a 0a 73 74 72 75 63 74 20 57 49  200.}..struct WI
0810: 4e 48 54 54 50 5f 41 53 59 4e 43 5f 52 45 53 55  NHTTP_ASYNC_RESU
0820: 4c 54 20 7b 0a 20 20 20 20 44 57 4f 52 44 5f 50  LT {.    DWORD_P
0830: 54 52 20 64 77 52 65 73 75 6c 74 3b 20 20 0a 20  TR dwResult;  . 
0840: 20 20 20 44 57 4f 52 44 20 64 77 45 72 72 6f 72     DWORD dwError
0850: 3b 20 20 20 20 20 20 20 0a 7d 0a 61 6c 69 61 73  ;       .}.alias
0860: 20 4c 50 57 49 4e 48 54 54 50 5f 41 53 59 4e 43   LPWINHTTP_ASYNC
0870: 5f 52 45 53 55 4c 54 20 3d 20 57 49 4e 48 54 54  _RESULT = WINHTT
0880: 50 5f 41 53 59 4e 43 5f 52 45 53 55 4c 54 2a 3b  P_ASYNC_RESULT*;
0890: 0a 0a 73 74 72 75 63 74 20 48 54 54 50 5f 56 45  ..struct HTTP_VE
08a0: 52 53 49 4f 4e 5f 49 4e 46 4f 20 7b 0a 20 20 20  RSION_INFO {.   
08b0: 20 44 57 4f 52 44 20 64 77 4d 61 6a 6f 72 56 65   DWORD dwMajorVe
08c0: 72 73 69 6f 6e 3b 0a 20 20 20 20 44 57 4f 52 44  rsion;.    DWORD
08d0: 20 64 77 4d 69 6e 6f 72 56 65 72 73 69 6f 6e 3b   dwMinorVersion;
08e0: 0a 7d 0a 61 6c 69 61 73 20 4c 50 48 54 54 50 5f  .}.alias LPHTTP_
08f0: 56 45 52 53 49 4f 4e 5f 49 4e 46 4f 20 3d 20 48  VERSION_INFO = H
0900: 54 54 50 5f 56 45 52 53 49 4f 4e 5f 49 4e 46 4f  TTP_VERSION_INFO
0910: 2a 3b 0a 0a 2f 2f 20 55 52 4c 20 53 63 68 65 6d  *;..// URL Schem
0920: 65 0a 65 6e 75 6d 20 3a 20 44 57 4f 52 44 20 7b  e.enum : DWORD {
0930: 0a 09 49 4e 54 45 52 4e 45 54 5f 53 43 48 45 4d  ..INTERNET_SCHEM
0940: 45 5f 48 54 54 50 20 20 3d 20 31 2c 0a 09 49 4e  E_HTTP  = 1,..IN
0950: 54 45 52 4e 45 54 5f 53 43 48 45 4d 45 5f 48 54  TERNET_SCHEME_HT
0960: 54 50 53 20 3d 20 32 2c 0a 09 49 4e 54 45 52 4e  TPS = 2,..INTERN
0970: 45 54 5f 53 43 48 45 4d 45 5f 46 54 50 20 20 20  ET_SCHEME_FTP   
0980: 3d 20 33 2c 0a 09 49 4e 54 45 52 4e 45 54 5f 53  = 3,..INTERNET_S
0990: 43 48 45 4d 45 5f 53 4f 43 4b 53 20 3d 20 34 0a  CHEME_SOCKS = 4.
09a0: 7d 0a 0a 73 74 72 75 63 74 20 55 52 4c 5f 43 4f  }..struct URL_CO
09b0: 4d 50 4f 4e 45 4e 54 53 20 7b 0a 20 20 20 20 44  MPONENTS {.    D
09c0: 57 4f 52 44 20 20 20 64 77 53 74 72 75 63 74 53  WORD   dwStructS
09d0: 69 7a 65 3b 20 20 20 20 20 20 20 0a 20 20 20 20  ize;       .    
09e0: 4c 50 57 53 54 52 20 20 6c 70 73 7a 53 63 68 65  LPWSTR  lpszSche
09f0: 6d 65 3b 20 20 20 20 20 20 20 20 20 0a 20 20 20  me;         .   
0a00: 20 44 57 4f 52 44 20 20 20 64 77 53 63 68 65 6d   DWORD   dwSchem
0a10: 65 4c 65 6e 67 74 68 3b 20 20 20 20 20 0a 20 20  eLength;     .  
0a20: 20 20 49 4e 54 45 52 4e 45 54 5f 53 43 48 45 4d    INTERNET_SCHEM
0a30: 45 20 6e 53 63 68 65 6d 65 3b 20 20 20 20 0a 20  E nScheme;    . 
0a40: 20 20 20 4c 50 57 53 54 52 20 20 6c 70 73 7a 48     LPWSTR  lpszH
0a50: 6f 73 74 4e 61 6d 65 3b 20 20 20 20 20 20 20 0a  ostName;       .
0a60: 20 20 20 20 44 57 4f 52 44 20 20 20 64 77 48 6f      DWORD   dwHo
0a70: 73 74 4e 61 6d 65 4c 65 6e 67 74 68 3b 20 20 20  stNameLength;   
0a80: 0a 20 20 20 20 49 4e 54 45 52 4e 45 54 5f 50 4f  .    INTERNET_PO
0a90: 52 54 20 6e 50 6f 72 74 3b 20 20 20 20 20 20 20  RT nPort;       
0aa0: 20 0a 20 20 20 20 4c 50 57 53 54 52 20 20 6c 70   .    LPWSTR  lp
0ab0: 73 7a 55 73 65 72 4e 61 6d 65 3b 20 20 20 20 20  szUserName;     
0ac0: 20 20 0a 20 20 20 20 44 57 4f 52 44 20 20 20 64    .    DWORD   d
0ad0: 77 55 73 65 72 4e 61 6d 65 4c 65 6e 67 74 68 3b  wUserNameLength;
0ae0: 20 20 20 0a 20 20 20 20 4c 50 57 53 54 52 20 20     .    LPWSTR  
0af0: 6c 70 73 7a 50 61 73 73 77 6f 72 64 3b 20 20 20  lpszPassword;   
0b00: 20 20 20 20 0a 20 20 20 20 44 57 4f 52 44 20 20      .    DWORD  
0b10: 20 64 77 50 61 73 73 77 6f 72 64 4c 65 6e 67 74   dwPasswordLengt
0b20: 68 3b 20 20 20 0a 20 20 20 20 4c 50 57 53 54 52  h;   .    LPWSTR
0b30: 20 20 6c 70 73 7a 55 72 6c 50 61 74 68 3b 20 20    lpszUrlPath;  
0b40: 20 20 20 20 20 20 0a 20 20 20 20 44 57 4f 52 44        .    DWORD
0b50: 20 20 20 64 77 55 72 6c 50 61 74 68 4c 65 6e 67     dwUrlPathLeng
0b60: 74 68 3b 20 20 20 20 0a 20 20 20 20 4c 50 57 53  th;    .    LPWS
0b70: 54 52 20 20 6c 70 73 7a 45 78 74 72 61 49 6e 66  TR  lpszExtraInf
0b80: 6f 3b 20 20 20 20 20 20 0a 20 20 20 20 44 57 4f  o;      .    DWO
0b90: 52 44 20 20 20 64 77 45 78 74 72 61 49 6e 66 6f  RD   dwExtraInfo
0ba0: 4c 65 6e 67 74 68 3b 20 20 0a 7d 0a 61 6c 69 61  Length;  .}.alia
0bb0: 73 20 4c 50 55 52 4c 5f 43 4f 4d 50 4f 4e 45 4e  s LPURL_COMPONEN
0bc0: 54 53 20 3d 20 55 52 4c 5f 43 4f 4d 50 4f 4e 45  TS = URL_COMPONE
0bd0: 4e 54 53 2a 3b 0a 61 6c 69 61 73 20 55 52 4c 5f  NTS*;.alias URL_
0be0: 43 4f 4d 50 4f 4e 45 4e 54 53 57 20 3d 20 55 52  COMPONENTSW = UR
0bf0: 4c 5f 43 4f 4d 50 4f 4e 45 4e 54 53 3b 0a 61 6c  L_COMPONENTS;.al
0c00: 69 61 73 20 4c 50 55 52 4c 5f 43 4f 4d 50 4f 4e  ias LPURL_COMPON
0c10: 45 4e 54 53 57 20 3d 20 55 52 4c 5f 43 4f 4d 50  ENTSW = URL_COMP
0c20: 4f 4e 45 4e 54 53 2a 3b 0a 0a 73 74 72 75 63 74  ONENTS*;..struct
0c30: 20 57 49 4e 48 54 54 50 5f 50 52 4f 58 59 5f 49   WINHTTP_PROXY_I
0c40: 4e 46 4f 20 7b 0a 20 20 20 20 44 57 4f 52 44 20  NFO {.    DWORD 
0c50: 20 64 77 41 63 63 65 73 73 54 79 70 65 3b 20 20   dwAccessType;  
0c60: 20 20 20 20 0a 20 20 20 20 4c 50 57 53 54 52 20      .    LPWSTR 
0c70: 6c 70 73 7a 50 72 6f 78 79 3b 20 20 20 20 20 20  lpszProxy;      
0c80: 20 20 20 0a 20 20 20 20 4c 50 57 53 54 52 20 6c     .    LPWSTR l
0c90: 70 73 7a 50 72 6f 78 79 42 79 70 61 73 73 3b 20  pszProxyBypass; 
0ca0: 20 20 0a 7d 0a 61 6c 69 61 73 20 4c 50 57 49 4e    .}.alias LPWIN
0cb0: 48 54 54 50 5f 50 52 4f 58 59 5f 49 4e 46 4f 20  HTTP_PROXY_INFO 
0cc0: 3d 20 57 49 4e 48 54 54 50 5f 50 52 4f 58 59 5f  = WINHTTP_PROXY_
0cd0: 49 4e 46 4f 2a 3b 0a 61 6c 69 61 73 20 57 49 4e  INFO*;.alias WIN
0ce0: 48 54 54 50 5f 50 52 4f 58 59 5f 49 4e 46 4f 57  HTTP_PROXY_INFOW
0cf0: 20 3d 20 57 49 4e 48 54 54 50 5f 50 52 4f 58 59   = WINHTTP_PROXY
0d00: 5f 49 4e 46 4f 3b 0a 61 6c 69 61 73 20 4c 50 57  _INFO;.alias LPW
0d10: 49 4e 48 54 54 50 5f 50 52 4f 58 59 5f 49 4e 46  INHTTP_PROXY_INF
0d20: 4f 57 20 3d 20 57 49 4e 48 54 54 50 5f 50 52 4f  OW = WINHTTP_PRO
0d30: 58 59 5f 49 4e 46 4f 2a 3b 0a 0a 73 74 72 75 63  XY_INFO*;..struc
0d40: 74 20 57 49 4e 48 54 54 50 5f 41 55 54 4f 50 52  t WINHTTP_AUTOPR
0d50: 4f 58 59 5f 4f 50 54 49 4f 4e 53 20 7b 0a 20 20  OXY_OPTIONS {.  
0d60: 20 20 44 57 4f 52 44 20 20 20 64 77 46 6c 61 67    DWORD   dwFlag
0d70: 73 3b 0a 20 20 20 20 44 57 4f 52 44 20 20 20 64  s;.    DWORD   d
0d80: 77 41 75 74 6f 44 65 74 65 63 74 46 6c 61 67 73  wAutoDetectFlags
0d90: 3b 0a 20 20 20 20 4c 50 43 57 53 54 52 20 6c 70  ;.    LPCWSTR lp
0da0: 73 7a 41 75 74 6f 43 6f 6e 66 69 67 55 72 6c 3b  szAutoConfigUrl;
0db0: 0a 20 20 20 20 4c 50 56 4f 49 44 20 20 6c 70 76  .    LPVOID  lpv
0dc0: 52 65 73 65 72 76 65 64 3b 0a 20 20 20 20 44 57  Reserved;.    DW
0dd0: 4f 52 44 20 20 20 64 77 52 65 73 65 72 76 65 64  ORD   dwReserved
0de0: 3b 0a 20 20 20 20 42 4f 4f 4c 20 20 20 20 66 41  ;.    BOOL    fA
0df0: 75 74 6f 4c 6f 67 6f 6e 49 66 43 68 61 6c 6c 65  utoLogonIfChalle
0e00: 6e 67 65 64 3b 0a 7d 0a 0a 65 6e 75 6d 20 3a 20  nged;.}..enum : 
0e10: 44 57 4f 52 44 20 7b 0a 09 57 49 4e 48 54 54 50  DWORD {..WINHTTP
0e20: 5f 41 55 54 4f 50 52 4f 58 59 5f 41 55 54 4f 5f  _AUTOPROXY_AUTO_
0e30: 44 45 54 45 43 54 20 20 20 20 20 20 20 20 20 20  DETECT          
0e40: 20 3d 20 30 78 30 30 30 30 30 30 30 31 2c 0a 09   = 0x00000001,..
0e50: 57 49 4e 48 54 54 50 5f 41 55 54 4f 50 52 4f 58  WINHTTP_AUTOPROX
0e60: 59 5f 43 4f 4e 46 49 47 5f 55 52 4c 20 20 20 20  Y_CONFIG_URL    
0e70: 20 20 20 20 20 20 20 20 3d 20 30 78 30 30 30 30          = 0x0000
0e80: 30 30 30 32 2c 0a 09 57 49 4e 48 54 54 50 5f 41  0002,..WINHTTP_A
0e90: 55 54 4f 50 52 4f 58 59 5f 48 4f 53 54 5f 4b 45  UTOPROXY_HOST_KE
0ea0: 45 50 43 41 53 45 20 20 20 20 20 20 20 20 20 3d  EPCASE         =
0eb0: 20 30 78 30 30 30 30 30 30 30 34 2c 0a 09 57 49   0x00000004,..WI
0ec0: 4e 48 54 54 50 5f 41 55 54 4f 50 52 4f 58 59 5f  NHTTP_AUTOPROXY_
0ed0: 48 4f 53 54 5f 4c 4f 57 45 52 43 41 53 45 20 20  HOST_LOWERCASE  
0ee0: 20 20 20 20 20 20 3d 20 30 78 30 30 30 30 30 30        = 0x000000
0ef0: 30 38 2c 0a 09 57 49 4e 48 54 54 50 5f 41 55 54  08,..WINHTTP_AUT
0f00: 4f 50 52 4f 58 59 5f 52 55 4e 5f 49 4e 50 52 4f  OPROXY_RUN_INPRO
0f10: 43 45 53 53 20 20 20 20 20 20 20 20 20 3d 20 30  CESS         = 0
0f20: 78 30 30 30 31 30 30 30 30 2c 0a 09 57 49 4e 48  x00010000,..WINH
0f30: 54 54 50 5f 41 55 54 4f 50 52 4f 58 59 5f 52 55  TTP_AUTOPROXY_RU
0f40: 4e 5f 4f 55 54 50 52 4f 43 45 53 53 5f 4f 4e 4c  N_OUTPROCESS_ONL
0f50: 59 20 20 20 3d 20 30 78 30 30 30 32 30 30 30 30  Y   = 0x00020000
0f60: 2c 0a 09 57 49 4e 48 54 54 50 5f 41 55 54 4f 50  ,..WINHTTP_AUTOP
0f70: 52 4f 58 59 5f 4e 4f 5f 44 49 52 45 43 54 41 43  ROXY_NO_DIRECTAC
0f80: 43 45 53 53 20 20 20 20 20 20 20 3d 20 30 78 30  CESS       = 0x0
0f90: 30 30 34 30 30 30 30 2c 0a 09 57 49 4e 48 54 54  0040000,..WINHTT
0fa0: 50 5f 41 55 54 4f 50 52 4f 58 59 5f 4e 4f 5f 43  P_AUTOPROXY_NO_C
0fb0: 41 43 48 45 5f 43 4c 49 45 4e 54 20 20 20 20 20  ACHE_CLIENT     
0fc0: 20 20 3d 20 30 78 30 30 30 38 30 30 30 30 2c 0a    = 0x00080000,.
0fd0: 09 57 49 4e 48 54 54 50 5f 41 55 54 4f 50 52 4f  .WINHTTP_AUTOPRO
0fe0: 58 59 5f 4e 4f 5f 43 41 43 48 45 5f 53 56 43 20  XY_NO_CACHE_SVC 
0ff0: 20 20 20 20 20 20 20 20 20 3d 20 30 78 30 30 31           = 0x001
1000: 30 30 30 30 30 2c 0a 0a 09 57 49 4e 48 54 54 50  00000,...WINHTTP
1010: 5f 41 55 54 4f 50 52 4f 58 59 5f 53 4f 52 54 5f  _AUTOPROXY_SORT_
1020: 52 45 53 55 4c 54 53 20 20 20 20 20 20 20 20 20  RESULTS         
1030: 20 3d 20 30 78 30 30 34 30 30 30 30 30 0a 7d 0a   = 0x00400000.}.
1040: 0a 2f 2f 20 64 77 41 75 74 6f 44 65 74 65 63 74  .// dwAutoDetect
1050: 46 6c 61 67 73 0a 65 6e 75 6d 20 3a 20 44 57 4f  Flags.enum : DWO
1060: 52 44 20 7b 0a 09 57 49 4e 48 54 54 50 5f 41 55  RD {..WINHTTP_AU
1070: 54 4f 5f 44 45 54 45 43 54 5f 54 59 50 45 5f 44  TO_DETECT_TYPE_D
1080: 48 43 50 20 20 20 20 20 20 20 20 20 20 20 3d 20  HCP           = 
1090: 30 78 30 30 30 30 30 30 30 31 2c 0a 09 57 49 4e  0x00000001,..WIN
10a0: 48 54 54 50 5f 41 55 54 4f 5f 44 45 54 45 43 54  HTTP_AUTO_DETECT
10b0: 5f 54 59 50 45 5f 44 4e 53 5f 41 20 20 20 20 20  _TYPE_DNS_A     
10c0: 20 20 20 20 20 3d 20 30 78 30 30 30 30 30 30 30       = 0x0000000
10d0: 32 0a 7d 0a 0a 73 74 72 75 63 74 20 57 49 4e 48  2.}..struct WINH
10e0: 54 54 50 5f 43 45 52 54 49 46 49 43 41 54 45 5f  TTP_CERTIFICATE_
10f0: 49 4e 46 4f 20 7b 0a 20 20 20 20 46 49 4c 45 54  INFO {.    FILET
1100: 49 4d 45 20 66 74 45 78 70 69 72 79 3b 0a 20 20  IME ftExpiry;.  
1110: 20 20 46 49 4c 45 54 49 4d 45 20 66 74 53 74 61    FILETIME ftSta
1120: 72 74 3b 0a 20 20 20 20 4c 50 57 53 54 52 20 6c  rt;.    LPWSTR l
1130: 70 73 7a 53 75 62 6a 65 63 74 49 6e 66 6f 3b 0a  pszSubjectInfo;.
1140: 20 20 20 20 4c 50 57 53 54 52 20 6c 70 73 7a 49      LPWSTR lpszI
1150: 73 73 75 65 72 49 6e 66 6f 3b 0a 20 20 20 20 4c  ssuerInfo;.    L
1160: 50 57 53 54 52 20 6c 70 73 7a 50 72 6f 74 6f 63  PWSTR lpszProtoc
1170: 6f 6c 4e 61 6d 65 3b 0a 20 20 20 20 4c 50 57 53  olName;.    LPWS
1180: 54 52 20 6c 70 73 7a 53 69 67 6e 61 74 75 72 65  TR lpszSignature
1190: 41 6c 67 4e 61 6d 65 3b 0a 20 20 20 20 4c 50 57  AlgName;.    LPW
11a0: 53 54 52 20 6c 70 73 7a 45 6e 63 72 79 70 74 69  STR lpszEncrypti
11b0: 6f 6e 41 6c 67 4e 61 6d 65 3b 0a 20 20 20 20 44  onAlgName;.    D
11c0: 57 4f 52 44 20 64 77 4b 65 79 53 69 7a 65 3b 0a  WORD dwKeySize;.
11d0: 7d 0a 0a 2f 2f 20 54 68 69 73 20 73 74 72 75 63  }..// This struc
11e0: 74 75 72 65 20 69 73 20 6f 6e 6c 79 20 64 65 66  ture is only def
11f0: 69 6e 65 64 20 23 69 66 20 5f 57 53 32 44 45 46  ined #if _WS2DEF
1200: 5f 20 64 65 66 69 6e 65 64 20 28 66 72 6f 6d 20  _ defined (from 
1210: 3c 77 73 32 64 65 66 2e 68 3e 29 20 2d 20 70 65  <ws2def.h>) - pe
1220: 72 20 57 69 6e 64 6f 77 73 20 53 44 4b 0a 73 74  r Windows SDK.st
1230: 72 75 63 74 20 57 49 4e 48 54 54 50 5f 43 4f 4e  ruct WINHTTP_CON
1240: 4e 45 43 54 49 4f 4e 5f 49 4e 46 4f 20 7b 0a 20  NECTION_INFO {. 
1250: 20 20 20 44 57 4f 52 44 20 63 62 53 69 7a 65 3b     DWORD cbSize;
1260: 0a 20 20 20 20 53 4f 43 4b 41 44 44 52 5f 53 54  .    SOCKADDR_ST
1270: 4f 52 41 47 45 20 4c 6f 63 61 6c 41 64 64 72 65  ORAGE LocalAddre
1280: 73 73 3b 20 20 0a 20 20 20 20 53 4f 43 4b 41 44  ss;  .    SOCKAD
1290: 44 52 5f 53 54 4f 52 41 47 45 20 52 65 6d 6f 74  DR_STORAGE Remot
12a0: 65 41 64 64 72 65 73 73 3b 20 0a 7d 0a 0a 2f 2f  eAddress; .}..//
12b0: 20 57 69 6e 48 74 74 70 54 69 6d 65 46 72 6f 6d   WinHttpTimeFrom
12c0: 53 79 73 74 65 6d 54 69 6d 65 0a 65 6e 75 6d 20  SystemTime.enum 
12d0: 44 57 4f 52 44 20 57 49 4e 48 54 54 50 5f 54 49  DWORD WINHTTP_TI
12e0: 4d 45 5f 46 4f 52 4d 41 54 5f 42 55 46 53 49 5a  ME_FORMAT_BUFSIZ
12f0: 45 20 20 3d 20 36 32 3b 0a 0a 2f 2f 20 43 72 61  E  = 62;..// Cra
1300: 63 6b 55 72 6c 2c 20 43 6f 6d 62 69 6e 65 55 72  ckUrl, CombineUr
1310: 6c 0a 65 6e 75 6d 20 3a 20 44 57 4f 52 44 20 7b  l.enum : DWORD {
1320: 0a 09 49 43 55 5f 4e 4f 5f 45 4e 43 4f 44 45 20  ..ICU_NO_ENCODE 
1330: 20 20 20 20 20 20 20 20 20 20 3d 20 30 78 32 30            = 0x20
1340: 30 30 30 30 30 30 2c 20 20 0a 09 49 43 55 5f 44  000000,  ..ICU_D
1350: 45 43 4f 44 45 20 20 20 20 20 20 20 20 20 20 20  ECODE           
1360: 20 20 20 3d 20 30 78 31 30 30 30 30 30 30 30 2c     = 0x10000000,
1370: 20 20 0a 09 49 43 55 5f 4e 4f 5f 4d 45 54 41 20    ..ICU_NO_META 
1380: 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 30 78              = 0x
1390: 30 38 30 30 30 30 30 30 2c 20 20 0a 09 49 43 55  08000000,  ..ICU
13a0: 5f 45 4e 43 4f 44 45 5f 53 50 41 43 45 53 5f 4f  _ENCODE_SPACES_O
13b0: 4e 4c 59 20 20 3d 20 30 78 30 34 30 30 30 30 30  NLY  = 0x0400000
13c0: 30 2c 20 20 0a 09 49 43 55 5f 42 52 4f 57 53 45  0,  ..ICU_BROWSE
13d0: 52 5f 4d 4f 44 45 20 20 20 20 20 20 20 20 3d 20  R_MODE        = 
13e0: 30 78 30 32 30 30 30 30 30 30 2c 20 0a 09 49 43  0x02000000, ..IC
13f0: 55 5f 45 4e 43 4f 44 45 5f 50 45 52 43 45 4e 54  U_ENCODE_PERCENT
1400: 20 20 20 20 20 20 3d 20 30 78 30 30 30 30 31 30        = 0x000010
1410: 30 30 20 20 20 20 20 20 0a 7d 0a 2f 2f 20 57 69  00      .}.// Wi
1420: 6e 48 74 74 70 43 72 61 63 6b 55 72 6c 2c 20 57  nHttpCrackUrl, W
1430: 69 6e 48 74 74 70 43 72 65 61 74 65 55 72 6c 0a  inHttpCreateUrl.
1440: 65 6e 75 6d 20 3a 20 44 57 4f 52 44 20 7b 0a 09  enum : DWORD {..
1450: 49 43 55 5f 45 53 43 41 50 45 20 20 20 20 20 20  ICU_ESCAPE      
1460: 20 20 20 20 20 20 3d 20 30 78 38 30 30 30 30 30        = 0x800000
1470: 30 30 2c 20 20 0a 09 49 43 55 5f 45 53 43 41 50  00,  ..ICU_ESCAP
1480: 45 5f 41 55 54 48 4f 52 49 54 59 20 20 3d 20 30  E_AUTHORITY  = 0
1490: 78 30 30 30 30 32 30 30 30 2c 20 0a 09 49 43 55  x00002000, ..ICU
14a0: 5f 52 45 4a 45 43 54 5f 55 53 45 52 50 57 44 20  _REJECT_USERPWD 
14b0: 20 20 20 3d 20 30 78 30 30 30 30 34 30 30 30 20     = 0x00004000 
14c0: 20 0a 7d 0a 65 6e 75 6d 20 3a 20 44 57 4f 52 44   .}.enum : DWORD
14d0: 20 7b 0a 09 57 49 4e 48 54 54 50 5f 41 43 43 45   {..WINHTTP_ACCE
14e0: 53 53 5f 54 59 50 45 5f 44 45 46 41 55 4c 54 5f  SS_TYPE_DEFAULT_
14f0: 50 52 4f 58 59 20 20 20 20 20 20 20 20 20 20 20  PROXY           
1500: 20 20 3d 20 30 2c 0a 09 57 49 4e 48 54 54 50 5f    = 0,..WINHTTP_
1510: 41 43 43 45 53 53 5f 54 59 50 45 5f 4e 4f 5f 50  ACCESS_TYPE_NO_P
1520: 52 4f 58 59 20 20 20 20 20 20 20 20 20 20 20 20  ROXY            
1530: 20 20 20 20 20 20 3d 20 31 2c 0a 09 57 49 4e 48        = 1,..WINH
1540: 54 54 50 5f 41 43 43 45 53 53 5f 54 59 50 45 5f  TTP_ACCESS_TYPE_
1550: 4e 41 4d 45 44 5f 50 52 4f 58 59 20 20 20 20 20  NAMED_PROXY     
1560: 20 20 20 20 20 20 20 20 20 20 3d 20 33 2c 0a 09            = 3,..
1570: 57 49 4e 48 54 54 50 5f 41 43 43 45 53 53 5f 54  WINHTTP_ACCESS_T
1580: 59 50 45 5f 41 55 54 4f 4d 41 54 49 43 5f 50 52  YPE_AUTOMATIC_PR
1590: 4f 58 59 20 20 20 20 20 20 20 20 20 20 20 3d 20  OXY           = 
15a0: 34 0a 7d 0a 2f 2f 20 57 69 6e 48 74 74 70 4f 70  4.}.// WinHttpOp
15b0: 65 6e 20 27 70 72 65 74 74 69 66 69 65 72 73 27  en 'prettifiers'
15c0: 0a 65 6e 75 6d 20 4c 50 43 57 53 54 52 20 57 49  .enum LPCWSTR WI
15d0: 4e 48 54 54 50 5f 4e 4f 5f 50 52 4f 58 59 5f 4e  NHTTP_NO_PROXY_N
15e0: 41 4d 45 20 20 20 20 20 20 20 20 20 3d 20 6e 75  AME         = nu
15f0: 6c 6c 3b 0a 65 6e 75 6d 20 4c 50 43 57 53 54 52  ll;.enum LPCWSTR
1600: 20 57 49 4e 48 54 54 50 5f 4e 4f 5f 50 52 4f 58   WINHTTP_NO_PROX
1610: 59 5f 42 59 50 41 53 53 20 20 20 20 20 20 20 3d  Y_BYPASS       =
1620: 20 6e 75 6c 6c 3b 0a 0a 65 6e 75 6d 20 4c 50 56   null;..enum LPV
1630: 4f 49 44 20 57 49 4e 48 54 54 50 5f 4e 4f 5f 43  OID WINHTTP_NO_C
1640: 4c 49 45 4e 54 5f 43 45 52 54 5f 43 4f 4e 54 45  LIENT_CERT_CONTE
1650: 58 54 20 3d 20 6e 75 6c 6c 3b 0a 0a 2f 2f 20 57  XT = null;..// W
1660: 69 6e 48 74 74 70 7b 51 75 65 72 79 7c 53 65 74  inHttp{Query|Set
1670: 7d 4f 70 74 69 6f 6e 0a 65 6e 75 6d 20 3a 20 44  }Option.enum : D
1680: 57 4f 52 44 20 7b 0a 09 57 49 4e 48 54 54 50 5f  WORD {..WINHTTP_
1690: 46 49 52 53 54 5f 4f 50 54 49 4f 4e 20 20 20 20  FIRST_OPTION    
16a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16b0: 20 20 20 20 20 3d 20 57 49 4e 48 54 54 50 5f 4f       = WINHTTP_O
16c0: 50 54 49 4f 4e 5f 43 41 4c 4c 42 41 43 4b 2c 0a  PTION_CALLBACK,.
16d0: 0a 09 57 49 4e 48 54 54 50 5f 4f 50 54 49 4f 4e  ..WINHTTP_OPTION
16e0: 5f 43 41 4c 4c 42 41 43 4b 20 20 20 20 20 20 20  _CALLBACK       
16f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d                 =
1700: 20 31 2c 0a 09 57 49 4e 48 54 54 50 5f 4f 50 54   1,..WINHTTP_OPT
1710: 49 4f 4e 5f 52 45 53 4f 4c 56 45 5f 54 49 4d 45  ION_RESOLVE_TIME
1720: 4f 55 54 20 20 20 20 20 20 20 20 20 20 20 20 20  OUT             
1730: 20 20 3d 20 32 2c 0a 09 57 49 4e 48 54 54 50 5f    = 2,..WINHTTP_
1740: 4f 50 54 49 4f 4e 5f 43 4f 4e 4e 45 43 54 5f 54  OPTION_CONNECT_T
1750: 49 4d 45 4f 55 54 20 20 20 20 20 20 20 20 20 20  IMEOUT          
1760: 20 20 20 20 20 3d 20 33 2c 0a 09 57 49 4e 48 54       = 3,..WINHT
1770: 54 50 5f 4f 50 54 49 4f 4e 5f 43 4f 4e 4e 45 43  TP_OPTION_CONNEC
1780: 54 5f 52 45 54 52 49 45 53 20 20 20 20 20 20 20  T_RETRIES       
1790: 20 20 20 20 20 20 20 20 3d 20 34 2c 0a 09 57 49          = 4,..WI
17a0: 4e 48 54 54 50 5f 4f 50 54 49 4f 4e 5f 53 45 4e  NHTTP_OPTION_SEN
17b0: 44 5f 54 49 4d 45 4f 55 54 20 20 20 20 20 20 20  D_TIMEOUT       
17c0: 20 20 20 20 20 20 20 20 20 20 20 3d 20 35 2c 0a             = 5,.
17d0: 09 57 49 4e 48 54 54 50 5f 4f 50 54 49 4f 4e 5f  .WINHTTP_OPTION_
17e0: 52 45 43 45 49 56 45 5f 54 49 4d 45 4f 55 54 20  RECEIVE_TIMEOUT 
17f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20                = 
1800: 36 2c 0a 09 57 49 4e 48 54 54 50 5f 4f 50 54 49  6,..WINHTTP_OPTI
1810: 4f 4e 5f 52 45 43 45 49 56 45 5f 52 45 53 50 4f  ON_RECEIVE_RESPO
1820: 4e 53 45 5f 54 49 4d 45 4f 55 54 20 20 20 20 20  NSE_TIMEOUT     
1830: 20 3d 20 37 2c 0a 09 57 49 4e 48 54 54 50 5f 4f   = 7,..WINHTTP_O
1840: 50 54 49 4f 4e 5f 48 41 4e 44 4c 45 5f 54 59 50  PTION_HANDLE_TYP
1850: 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  E               
1860: 20 20 20 20 3d 20 39 2c 0a 09 57 49 4e 48 54 54      = 9,..WINHTT
1870: 50 5f 4f 50 54 49 4f 4e 5f 52 45 41 44 5f 42 55  P_OPTION_READ_BU
1880: 46 46 45 52 5f 53 49 5a 45 20 20 20 20 20 20 20  FFER_SIZE       
1890: 20 20 20 20 20 20 3d 20 31 32 2c 0a 09 57 49 4e        = 12,..WIN
18a0: 48 54 54 50 5f 4f 50 54 49 4f 4e 5f 57 52 49 54  HTTP_OPTION_WRIT
18b0: 45 5f 42 55 46 46 45 52 5f 53 49 5a 45 20 20 20  E_BUFFER_SIZE   
18c0: 20 20 20 20 20 20 20 20 20 3d 20 31 33 2c 0a 09           = 13,..
18d0: 57 49 4e 48 54 54 50 5f 4f 50 54 49 4f 4e 5f 50  WINHTTP_OPTION_P
18e0: 41 52 45 4e 54 5f 48 41 4e 44 4c 45 20 20 20 20  ARENT_HANDLE    
18f0: 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 32 31              = 21
1900: 2c 0a 09 57 49 4e 48 54 54 50 5f 4f 50 54 49 4f  ,..WINHTTP_OPTIO
1910: 4e 5f 45 58 54 45 4e 44 45 44 5f 45 52 52 4f 52  N_EXTENDED_ERROR
1920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d                 =
1930: 20 32 34 2c 0a 09 57 49 4e 48 54 54 50 5f 4f 50   24,..WINHTTP_OP
1940: 54 49 4f 4e 5f 53 45 43 55 52 49 54 59 5f 46 4c  TION_SECURITY_FL
1950: 41 47 53 20 20 20 20 20 20 20 20 20 20 20 20 20  AGS             
1960: 20 20 3d 20 33 31 2c 0a 09 57 49 4e 48 54 54 50    = 31,..WINHTTP
1970: 5f 4f 50 54 49 4f 4e 5f 53 45 43 55 52 49 54 59  _OPTION_SECURITY
1980: 5f 43 45 52 54 49 46 49 43 41 54 45 5f 53 54 52  _CERTIFICATE_STR
1990: 55 43 54 20 20 3d 20 33 32 2c 0a 09 57 49 4e 48  UCT  = 32,..WINH
19a0: 54 54 50 5f 4f 50 54 49 4f 4e 5f 55 52 4c 20 20  TTP_OPTION_URL  
19b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19c0: 20 20 20 20 20 20 20 20 3d 20 33 34 2c 0a 09 57          = 34,..W
19d0: 49 4e 48 54 54 50 5f 4f 50 54 49 4f 4e 5f 53 45  INHTTP_OPTION_SE
19e0: 43 55 52 49 54 59 5f 4b 45 59 5f 42 49 54 4e 45  CURITY_KEY_BITNE
19f0: 53 53 20 20 20 20 20 20 20 20 20 3d 20 33 36 2c  SS         = 36,
1a00: 0a 09 57 49 4e 48 54 54 50 5f 4f 50 54 49 4f 4e  ..WINHTTP_OPTION
1a10: 5f 50 52 4f 58 59 20 20 20 20 20 20 20 20 20 20  _PROXY          
1a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20                = 
1a30: 33 38 2c 0a 09 57 49 4e 48 54 54 50 5f 4f 50 54  38,..WINHTTP_OPT
1a40: 49 4f 4e 5f 50 52 4f 58 59 5f 52 45 53 55 4c 54  ION_PROXY_RESULT
1a50: 5f 45 4e 54 52 59 20 20 20 20 20 20 20 20 20 20  _ENTRY          
1a60: 20 3d 20 33 39 2c 0a 09 0a 09 57 49 4e 48 54 54   = 39,....WINHTT
1a70: 50 5f 4f 50 54 49 4f 4e 5f 55 53 45 52 5f 41 47  P_OPTION_USER_AG
1a80: 45 4e 54 20 20 20 20 20 20 20 20 20 20 20 20 20  ENT             
1a90: 20 20 20 20 20 20 3d 20 34 31 2c 0a 09 57 49 4e        = 41,..WIN
1aa0: 48 54 54 50 5f 4f 50 54 49 4f 4e 5f 43 4f 4e 54  HTTP_OPTION_CONT
1ab0: 45 58 54 5f 56 41 4c 55 45 20 20 20 20 20 20 20  EXT_VALUE       
1ac0: 20 20 20 20 20 20 20 20 20 3d 20 34 35 2c 0a 09           = 45,..
1ad0: 57 49 4e 48 54 54 50 5f 4f 50 54 49 4f 4e 5f 43  WINHTTP_OPTION_C
1ae0: 4c 49 45 4e 54 5f 43 45 52 54 5f 43 4f 4e 54 45  LIENT_CERT_CONTE
1af0: 58 54 20 20 20 20 20 20 20 20 20 20 3d 20 34 37  XT          = 47
1b00: 2c 0a 09 57 49 4e 48 54 54 50 5f 4f 50 54 49 4f  ,..WINHTTP_OPTIO
1b10: 4e 5f 52 45 51 55 45 53 54 5f 50 52 49 4f 52 49  N_REQUEST_PRIORI
1b20: 54 59 20 20 20 20 20 20 20 20 20 20 20 20 20 3d  TY             =
1b30: 20 35 38 2c 0a 09 57 49 4e 48 54 54 50 5f 4f 50   58,..WINHTTP_OP
1b40: 54 49 4f 4e 5f 48 54 54 50 5f 56 45 52 53 49 4f  TION_HTTP_VERSIO
1b50: 4e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  N               
1b60: 20 20 3d 20 35 39 2c 0a 09 57 49 4e 48 54 54 50    = 59,..WINHTTP
1b70: 5f 4f 50 54 49 4f 4e 5f 44 49 53 41 42 4c 45 5f  _OPTION_DISABLE_
1b80: 46 45 41 54 55 52 45 20 20 20 20 20 20 20 20 20  FEATURE         
1b90: 20 20 20 20 20 3d 20 36 33 2c 0a 09 0a 09 57 49       = 63,....WI
1ba0: 4e 48 54 54 50 5f 4f 50 54 49 4f 4e 5f 43 4f 44  NHTTP_OPTION_COD
1bb0: 45 50 41 47 45 20 20 20 20 20 20 20 20 20 20 20  EPAGE           
1bc0: 20 20 20 20 20 20 20 20 20 20 3d 20 36 38 2c 0a            = 68,.
1bd0: 09 57 49 4e 48 54 54 50 5f 4f 50 54 49 4f 4e 5f  .WINHTTP_OPTION_
1be0: 4d 41 58 5f 43 4f 4e 4e 53 5f 50 45 52 5f 53 45  MAX_CONNS_PER_SE
1bf0: 52 56 45 52 20 20 20 20 20 20 20 20 20 3d 20 37  RVER         = 7
1c00: 33 2c 0a 09 57 49 4e 48 54 54 50 5f 4f 50 54 49  3,..WINHTTP_OPTI
1c10: 4f 4e 5f 4d 41 58 5f 43 4f 4e 4e 53 5f 50 45 52  ON_MAX_CONNS_PER
1c20: 5f 31 5f 30 5f 53 45 52 56 45 52 20 20 20 20 20  _1_0_SERVER     
1c30: 3d 20 37 34 2c 0a 09 57 49 4e 48 54 54 50 5f 4f  = 74,..WINHTTP_O
1c40: 50 54 49 4f 4e 5f 41 55 54 4f 4c 4f 47 4f 4e 5f  PTION_AUTOLOGON_
1c50: 50 4f 4c 49 43 59 20 20 20 20 20 20 20 20 20 20  POLICY          
1c60: 20 20 20 3d 20 37 37 2c 0a 09 57 49 4e 48 54 54     = 77,..WINHTT
1c70: 50 5f 4f 50 54 49 4f 4e 5f 53 45 52 56 45 52 5f  P_OPTION_SERVER_
1c80: 43 45 52 54 5f 43 4f 4e 54 45 58 54 20 20 20 20  CERT_CONTEXT    
1c90: 20 20 20 20 20 20 3d 20 37 38 2c 0a 09 57 49 4e        = 78,..WIN
1ca0: 48 54 54 50 5f 4f 50 54 49 4f 4e 5f 45 4e 41 42  HTTP_OPTION_ENAB
1cb0: 4c 45 5f 46 45 41 54 55 52 45 20 20 20 20 20 20  LE_FEATURE      
1cc0: 20 20 20 20 20 20 20 20 20 3d 20 37 39 2c 0a 09           = 79,..
1cd0: 57 49 4e 48 54 54 50 5f 4f 50 54 49 4f 4e 5f 57  WINHTTP_OPTION_W
1ce0: 4f 52 4b 45 52 5f 54 48 52 45 41 44 5f 43 4f 55  ORKER_THREAD_COU
1cf0: 4e 54 20 20 20 20 20 20 20 20 20 20 3d 20 38 30  NT          = 80
1d00: 2c 0a 09 57 49 4e 48 54 54 50 5f 4f 50 54 49 4f  ,..WINHTTP_OPTIO
1d10: 4e 5f 50 41 53 53 50 4f 52 54 5f 43 4f 42 52 41  N_PASSPORT_COBRA
1d20: 4e 44 49 4e 47 5f 54 45 58 54 20 20 20 20 20 3d  NDING_TEXT     =
1d30: 20 38 31 2c 0a 09 57 49 4e 48 54 54 50 5f 4f 50   81,..WINHTTP_OP
1d40: 54 49 4f 4e 5f 50 41 53 53 50 4f 52 54 5f 43 4f  TION_PASSPORT_CO
1d50: 42 52 41 4e 44 49 4e 47 5f 55 52 4c 20 20 20 20  BRANDING_URL    
1d60: 20 20 3d 20 38 32 2c 0a 09 57 49 4e 48 54 54 50    = 82,..WINHTTP
1d70: 5f 4f 50 54 49 4f 4e 5f 43 4f 4e 46 49 47 55 52  _OPTION_CONFIGUR
1d80: 45 5f 50 41 53 53 50 4f 52 54 5f 41 55 54 48 20  E_PASSPORT_AUTH 
1d90: 20 20 20 20 20 3d 20 38 33 2c 0a 09 57 49 4e 48       = 83,..WINH
1da0: 54 54 50 5f 4f 50 54 49 4f 4e 5f 53 45 43 55 52  TTP_OPTION_SECUR
1db0: 45 5f 50 52 4f 54 4f 43 4f 4c 53 20 20 20 20 20  E_PROTOCOLS     
1dc0: 20 20 20 20 20 20 20 20 3d 20 38 34 2c 0a 09 57          = 84,..W
1dd0: 49 4e 48 54 54 50 5f 4f 50 54 49 4f 4e 5f 45 4e  INHTTP_OPTION_EN
1de0: 41 42 4c 45 54 52 41 43 49 4e 47 20 20 20 20 20  ABLETRACING     
1df0: 20 20 20 20 20 20 20 20 20 20 20 3d 20 38 35 2c             = 85,
1e00: 0a 09 57 49 4e 48 54 54 50 5f 4f 50 54 49 4f 4e  ..WINHTTP_OPTION
1e10: 5f 50 41 53 53 50 4f 52 54 5f 53 49 47 4e 5f 4f  _PASSPORT_SIGN_O
1e20: 55 54 20 20 20 20 20 20 20 20 20 20 20 20 3d 20  UT            = 
1e30: 38 36 2c 0a 09 57 49 4e 48 54 54 50 5f 4f 50 54  86,..WINHTTP_OPT
1e40: 49 4f 4e 5f 50 41 53 53 50 4f 52 54 5f 52 45 54  ION_PASSPORT_RET
1e50: 55 52 4e 5f 55 52 4c 20 20 20 20 20 20 20 20 20  URN_URL         
1e60: 20 3d 20 38 37 2c 0a 09 57 49 4e 48 54 54 50 5f   = 87,..WINHTTP_
1e70: 4f 50 54 49 4f 4e 5f 52 45 44 49 52 45 43 54 5f  OPTION_REDIRECT_
1e80: 50 4f 4c 49 43 59 20 20 20 20 20 20 20 20 20 20  POLICY          
1e90: 20 20 20 20 3d 20 38 38 2c 0a 09 57 49 4e 48 54      = 88,..WINHT
1ea0: 54 50 5f 4f 50 54 49 4f 4e 5f 4d 41 58 5f 48 54  TP_OPTION_MAX_HT
1eb0: 54 50 5f 41 55 54 4f 4d 41 54 49 43 5f 52 45 44  TP_AUTOMATIC_RED
1ec0: 49 52 45 43 54 53 20 3d 20 38 39 2c 0a 09 57 49  IRECTS = 89,..WI
1ed0: 4e 48 54 54 50 5f 4f 50 54 49 4f 4e 5f 4d 41 58  NHTTP_OPTION_MAX
1ee0: 5f 48 54 54 50 5f 53 54 41 54 55 53 5f 43 4f 4e  _HTTP_STATUS_CON
1ef0: 54 49 4e 55 45 20 20 20 20 20 3d 20 39 30 2c 0a  TINUE     = 90,.
1f00: 09 57 49 4e 48 54 54 50 5f 4f 50 54 49 4f 4e 5f  .WINHTTP_OPTION_
1f10: 4d 41 58 5f 52 45 53 50 4f 4e 53 45 5f 48 45 41  MAX_RESPONSE_HEA
1f20: 44 45 52 5f 53 49 5a 45 20 20 20 20 20 3d 20 39  DER_SIZE     = 9
1f30: 31 2c 0a 09 57 49 4e 48 54 54 50 5f 4f 50 54 49  1,..WINHTTP_OPTI
1f40: 4f 4e 5f 4d 41 58 5f 52 45 53 50 4f 4e 53 45 5f  ON_MAX_RESPONSE_
1f50: 44 52 41 49 4e 5f 53 49 5a 45 20 20 20 20 20 20  DRAIN_SIZE      
1f60: 3d 20 39 32 2c 0a 09 57 49 4e 48 54 54 50 5f 4f  = 92,..WINHTTP_O
1f70: 50 54 49 4f 4e 5f 43 4f 4e 4e 45 43 54 49 4f 4e  PTION_CONNECTION
1f80: 5f 49 4e 46 4f 20 20 20 20 20 20 20 20 20 20 20  _INFO           
1f90: 20 20 20 3d 20 39 33 2c 0a 09 57 49 4e 48 54 54     = 93,..WINHTT
1fa0: 50 5f 4f 50 54 49 4f 4e 5f 43 4c 49 45 4e 54 5f  P_OPTION_CLIENT_
1fb0: 43 45 52 54 5f 49 53 53 55 45 52 5f 4c 49 53 54  CERT_ISSUER_LIST
1fc0: 20 20 20 20 20 20 3d 20 39 34 2c 0a 09 57 49 4e        = 94,..WIN
1fd0: 48 54 54 50 5f 4f 50 54 49 4f 4e 5f 53 50 4e 20  HTTP_OPTION_SPN 
1fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ff0: 20 20 20 20 20 20 20 20 20 3d 20 39 36 2c 0a 09           = 96,..
2000: 0a 09 57 49 4e 48 54 54 50 5f 4f 50 54 49 4f 4e  ..WINHTTP_OPTION
2010: 5f 47 4c 4f 42 41 4c 5f 50 52 4f 58 59 5f 43 52  _GLOBAL_PROXY_CR
2020: 45 44 53 20 20 20 20 20 20 20 20 20 20 20 3d 20  EDS           = 
2030: 39 37 2c 0a 09 57 49 4e 48 54 54 50 5f 4f 50 54  97,..WINHTTP_OPT
2040: 49 4f 4e 5f 47 4c 4f 42 41 4c 5f 53 45 52 56 45  ION_GLOBAL_SERVE
2050: 52 5f 43 52 45 44 53 20 20 20 20 20 20 20 20 20  R_CREDS         
2060: 20 3d 20 39 38 2c 0a 0a 09 57 49 4e 48 54 54 50   = 98,...WINHTTP
2070: 5f 4f 50 54 49 4f 4e 5f 55 4e 4c 4f 41 44 5f 4e  _OPTION_UNLOAD_N
2080: 4f 54 49 46 59 5f 45 56 45 4e 54 20 20 20 20 20  OTIFY_EVENT     
2090: 20 20 20 20 20 20 20 3d 20 39 39 2c 0a 09 57 49         = 99,..WI
20a0: 4e 48 54 54 50 5f 4f 50 54 49 4f 4e 5f 52 45 4a  NHTTP_OPTION_REJ
20b0: 45 43 54 5f 55 53 45 52 50 57 44 5f 49 4e 5f 55  ECT_USERPWD_IN_U
20c0: 52 4c 20 20 20 20 20 20 20 20 20 20 3d 20 31 30  RL          = 10
20d0: 30 2c 0a 09 57 49 4e 48 54 54 50 5f 4f 50 54 49  0,..WINHTTP_OPTI
20e0: 4f 4e 5f 55 53 45 5f 47 4c 4f 42 41 4c 5f 53 45  ON_USE_GLOBAL_SE
20f0: 52 56 45 52 5f 43 52 45 44 45 4e 54 49 41 4c 53  RVER_CREDENTIALS
2100: 20 20 3d 20 31 30 31 2c 0a 0a 09 57 49 4e 48 54    = 101,...WINHT
2110: 54 50 5f 4f 50 54 49 4f 4e 5f 52 45 43 45 49 56  TP_OPTION_RECEIV
2120: 45 5f 50 52 4f 58 59 5f 43 4f 4e 4e 45 43 54 5f  E_PROXY_CONNECT_
2130: 52 45 53 50 4f 4e 53 45 20 3d 20 31 30 33 2c 0a  RESPONSE = 103,.
2140: 09 57 49 4e 48 54 54 50 5f 4f 50 54 49 4f 4e 5f  .WINHTTP_OPTION_
2150: 49 53 5f 50 52 4f 58 59 5f 43 4f 4e 4e 45 43 54  IS_PROXY_CONNECT
2160: 5f 52 45 53 50 4f 4e 53 45 20 20 20 20 20 20 3d  _RESPONSE      =
2170: 20 31 30 34 2c 0a 0a 09 57 49 4e 48 54 54 50 5f   104,...WINHTTP_
2180: 4f 50 54 49 4f 4e 5f 53 45 52 56 45 52 5f 53 50  OPTION_SERVER_SP
2190: 4e 5f 55 53 45 44 20 20 20 20 20 20 20 20 20 20  N_USED          
21a0: 20 20 20 20 3d 20 31 30 36 2c 0a 09 57 49 4e 48      = 106,..WINH
21b0: 54 54 50 5f 4f 50 54 49 4f 4e 5f 50 52 4f 58 59  TTP_OPTION_PROXY
21c0: 5f 53 50 4e 5f 55 53 45 44 20 20 20 20 20 20 20  _SPN_USED       
21d0: 20 20 20 20 20 20 20 20 3d 20 31 30 37 2c 0a 0a          = 107,..
21e0: 09 57 49 4e 48 54 54 50 5f 4f 50 54 49 4f 4e 5f  .WINHTTP_OPTION_
21f0: 53 45 52 56 45 52 5f 43 42 54 20 20 20 20 20 20  SERVER_CBT      
2200: 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 31               = 1
2210: 30 38 2c 0a 09 0a 09 57 49 4e 48 54 54 50 5f 4f  08,....WINHTTP_O
2220: 50 54 49 4f 4e 5f 55 4e 53 41 46 45 5f 48 45 41  PTION_UNSAFE_HEA
2230: 44 45 52 5f 50 41 52 53 49 4e 47 20 20 20 20 20  DER_PARSING     
2240: 20 20 20 20 20 3d 20 31 31 30 2c 0a 09 57 49 4e       = 110,..WIN
2250: 48 54 54 50 5f 4f 50 54 49 4f 4e 5f 41 53 53 55  HTTP_OPTION_ASSU
2260: 52 45 44 5f 4e 4f 4e 5f 42 4c 4f 43 4b 49 4e 47  RED_NON_BLOCKING
2270: 5f 43 41 4c 4c 42 41 43 4b 53 20 3d 20 31 31 31  _CALLBACKS = 111
2280: 2c 0a 09 0a 09 57 49 4e 48 54 54 50 5f 4f 50 54  ,....WINHTTP_OPT
2290: 49 4f 4e 5f 55 50 47 52 41 44 45 5f 54 4f 5f 57  ION_UPGRADE_TO_W
22a0: 45 42 5f 53 4f 43 4b 45 54 20 20 20 20 20 20 20  EB_SOCKET       
22b0: 20 20 20 3d 20 31 31 34 2c 0a 09 57 49 4e 48 54     = 114,..WINHT
22c0: 54 50 5f 4f 50 54 49 4f 4e 5f 57 45 42 5f 53 4f  TP_OPTION_WEB_SO
22d0: 43 4b 45 54 5f 43 4c 4f 53 45 5f 54 49 4d 45 4f  CKET_CLOSE_TIMEO
22e0: 55 54 20 20 20 20 20 20 20 3d 20 31 31 35 2c 0a  UT       = 115,.
22f0: 09 57 49 4e 48 54 54 50 5f 4f 50 54 49 4f 4e 5f  .WINHTTP_OPTION_
2300: 57 45 42 5f 53 4f 43 4b 45 54 5f 4b 45 45 50 41  WEB_SOCKET_KEEPA
2310: 4c 49 56 45 5f 49 4e 54 45 52 56 41 4c 20 20 3d  LIVE_INTERVAL  =
2320: 20 31 31 36 2c 0a 0a 09 57 49 4e 48 54 54 50 5f   116,...WINHTTP_
2330: 4f 50 54 49 4f 4e 5f 44 45 43 4f 4d 50 52 45 53  OPTION_DECOMPRES
2340: 53 49 4f 4e 20 20 20 20 20 20 20 20 20 20 20 20  SION            
2350: 20 20 20 20 20 20 3d 20 31 31 38 2c 0a 0a 09 57        = 118,...W
2360: 49 4e 48 54 54 50 5f 4f 50 54 49 4f 4e 5f 57 45  INHTTP_OPTION_WE
2370: 42 5f 53 4f 43 4b 45 54 5f 52 45 43 45 49 56 45  B_SOCKET_RECEIVE
2380: 5f 42 55 46 46 45 52 5f 53 49 5a 45 20 3d 20 31  _BUFFER_SIZE = 1
2390: 32 32 2c 0a 09 57 49 4e 48 54 54 50 5f 4f 50 54  22,..WINHTTP_OPT
23a0: 49 4f 4e 5f 57 45 42 5f 53 4f 43 4b 45 54 5f 53  ION_WEB_SOCKET_S
23b0: 45 4e 44 5f 42 55 46 46 45 52 5f 53 49 5a 45 20  END_BUFFER_SIZE 
23c0: 20 20 20 3d 20 31 32 33 2c 0a 0a 09 2f 2f 57 49     = 123,...//WI
23d0: 4e 48 54 54 50 5f 4c 41 53 54 5f 4f 50 54 49 4f  NHTTP_LAST_OPTIO
23e0: 4e 20 3d 3e 20 4d 6f 76 65 64 20 6f 75 74 73 69  N => Moved outsi
23f0: 64 65 20 6f 66 20 65 6e 75 6d 20 2d 20 73 74 61  de of enum - sta
2400: 74 69 63 20 69 66 28 29 20 63 6f 6e 73 74 72 61  tic if() constra
2410: 69 6e 74 73 20 77 69 74 68 69 6e 20 65 6e 75 6d  ints within enum
2420: 73 0a 0a 09 57 49 4e 48 54 54 50 5f 4f 50 54 49  s...WINHTTP_OPTI
2430: 4f 4e 5f 55 53 45 52 4e 41 4d 45 20 20 20 20 20  ON_USERNAME     
2440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2450: 20 3d 20 30 78 31 30 30 30 2c 0a 09 57 49 4e 48   = 0x1000,..WINH
2460: 54 54 50 5f 4f 50 54 49 4f 4e 5f 50 41 53 53 57  TTP_OPTION_PASSW
2470: 4f 52 44 20 20 20 20 20 20 20 20 20 20 20 20 20  ORD             
2480: 20 20 20 20 20 20 20 20 20 3d 20 30 78 31 30 30           = 0x100
2490: 31 2c 0a 09 57 49 4e 48 54 54 50 5f 4f 50 54 49  1,..WINHTTP_OPTI
24a0: 4f 4e 5f 50 52 4f 58 59 5f 55 53 45 52 4e 41 4d  ON_PROXY_USERNAM
24b0: 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  E               
24c0: 20 3d 20 30 78 31 30 30 32 2c 0a 09 57 49 4e 48   = 0x1002,..WINH
24d0: 54 54 50 5f 4f 50 54 49 4f 4e 5f 50 52 4f 58 59  TTP_OPTION_PROXY
24e0: 5f 50 41 53 53 57 4f 52 44 20 20 20 20 20 20 20  _PASSWORD       
24f0: 20 20 20 20 20 20 20 20 20 3d 20 30 78 31 30 30           = 0x100
2500: 33 2c 0a 09 0a 09 57 49 4e 48 54 54 50 5f 43 4f  3,....WINHTTP_CO
2510: 4e 4e 53 5f 50 45 52 5f 53 45 52 56 45 52 5f 55  NNS_PER_SERVER_U
2520: 4e 4c 49 4d 49 54 45 44 20 20 20 20 3d 20 30 78  NLIMITED    = 0x
2530: 46 46 46 46 46 46 46 46 2c 0a 09 0a 09 57 49 4e  FFFFFFFF,....WIN
2540: 48 54 54 50 5f 41 55 54 4f 4c 4f 47 4f 4e 5f 53  HTTP_AUTOLOGON_S
2550: 45 43 55 52 49 54 59 5f 4c 45 56 45 4c 5f 4d 45  ECURITY_LEVEL_ME
2560: 44 49 55 4d 20 3d 20 30 2c 0a 09 57 49 4e 48 54  DIUM = 0,..WINHT
2570: 54 50 5f 41 55 54 4f 4c 4f 47 4f 4e 5f 53 45 43  TP_AUTOLOGON_SEC
2580: 55 52 49 54 59 5f 4c 45 56 45 4c 5f 4c 4f 57 20  URITY_LEVEL_LOW 
2590: 20 20 20 3d 20 31 2c 0a 09 57 49 4e 48 54 54 50     = 1,..WINHTTP
25a0: 5f 41 55 54 4f 4c 4f 47 4f 4e 5f 53 45 43 55 52  _AUTOLOGON_SECUR
25b0: 49 54 59 5f 4c 45 56 45 4c 5f 48 49 47 48 20 20  ITY_LEVEL_HIGH  
25c0: 20 3d 20 32 2c 0a 0a 09 57 49 4e 48 54 54 50 5f   = 2,...WINHTTP_
25d0: 41 55 54 4f 4c 4f 47 4f 4e 5f 53 45 43 55 52 49  AUTOLOGON_SECURI
25e0: 54 59 5f 4c 45 56 45 4c 5f 44 45 46 41 55 4c 54  TY_LEVEL_DEFAULT
25f0: 20 3d 20 57 49 4e 48 54 54 50 5f 41 55 54 4f 4c   = WINHTTP_AUTOL
2600: 4f 47 4f 4e 5f 53 45 43 55 52 49 54 59 5f 4c 45  OGON_SECURITY_LE
2610: 56 45 4c 5f 4d 45 44 49 55 4d 2c 0a 09 0a 09 57  VEL_MEDIUM,....W
2620: 49 4e 48 54 54 50 5f 4f 50 54 49 4f 4e 5f 52 45  INHTTP_OPTION_RE
2630: 44 49 52 45 43 54 5f 50 4f 4c 49 43 59 5f 4e 45  DIRECT_POLICY_NE
2640: 56 45 52 20 20 20 20 20 20 20 20 20 20 20 20 20  VER             
2650: 20 20 20 20 20 20 20 20 20 3d 20 30 2c 0a 09 57           = 0,..W
2660: 49 4e 48 54 54 50 5f 4f 50 54 49 4f 4e 5f 52 45  INHTTP_OPTION_RE
2670: 44 49 52 45 43 54 5f 50 4f 4c 49 43 59 5f 44 49  DIRECT_POLICY_DI
2680: 53 41 4c 4c 4f 57 5f 48 54 54 50 53 5f 54 4f 5f  SALLOW_HTTPS_TO_
2690: 48 54 54 50 20 20 20 20 20 3d 20 31 2c 0a 09 57  HTTP     = 1,..W
26a0: 49 4e 48 54 54 50 5f 4f 50 54 49 4f 4e 5f 52 45  INHTTP_OPTION_RE
26b0: 44 49 52 45 43 54 5f 50 4f 4c 49 43 59 5f 41 4c  DIRECT_POLICY_AL
26c0: 57 41 59 53 20 20 20 20 20 20 20 20 20 20 20 20  WAYS            
26d0: 20 20 20 20 20 20 20 20 20 3d 20 32 2c 0a 0a 09           = 2,...
26e0: 57 49 4e 48 54 54 50 5f 4f 50 54 49 4f 4e 5f 52  WINHTTP_OPTION_R
26f0: 45 44 49 52 45 43 54 5f 50 4f 4c 49 43 59 5f 4c  EDIRECT_POLICY_L
2700: 41 53 54 20 20 20 20 20 20 3d 20 57 49 4e 48 54  AST      = WINHT
2710: 54 50 5f 4f 50 54 49 4f 4e 5f 52 45 44 49 52 45  TP_OPTION_REDIRE
2720: 43 54 5f 50 4f 4c 49 43 59 5f 41 4c 57 41 59 53  CT_POLICY_ALWAYS
2730: 2c 0a 09 57 49 4e 48 54 54 50 5f 4f 50 54 49 4f  ,..WINHTTP_OPTIO
2740: 4e 5f 52 45 44 49 52 45 43 54 5f 50 4f 4c 49 43  N_REDIRECT_POLIC
2750: 59 5f 44 45 46 41 55 4c 54 20 20 20 3d 20 57 49  Y_DEFAULT   = WI
2760: 4e 48 54 54 50 5f 4f 50 54 49 4f 4e 5f 52 45 44  NHTTP_OPTION_RED
2770: 49 52 45 43 54 5f 50 4f 4c 49 43 59 5f 44 49 53  IRECT_POLICY_DIS
2780: 41 4c 4c 4f 57 5f 48 54 54 50 53 5f 54 4f 5f 48  ALLOW_HTTPS_TO_H
2790: 54 54 50 2c 0a 0a 09 57 49 4e 48 54 54 50 5f 44  TTP,...WINHTTP_D
27a0: 49 53 41 42 4c 45 5f 50 41 53 53 50 4f 52 54 5f  ISABLE_PASSPORT_
27b0: 41 55 54 48 20 20 20 20 3d 20 30 78 30 30 30 30  AUTH    = 0x0000
27c0: 30 30 30 30 2c 0a 09 57 49 4e 48 54 54 50 5f 45  0000,..WINHTTP_E
27d0: 4e 41 42 4c 45 5f 50 41 53 53 50 4f 52 54 5f 41  NABLE_PASSPORT_A
27e0: 55 54 48 20 20 20 20 20 3d 20 30 78 31 30 30 30  UTH     = 0x1000
27f0: 30 30 30 30 2c 0a 09 57 49 4e 48 54 54 50 5f 44  0000,..WINHTTP_D
2800: 49 53 41 42 4c 45 5f 50 41 53 53 50 4f 52 54 5f  ISABLE_PASSPORT_
2810: 4b 45 59 52 49 4e 47 20 3d 20 30 78 32 30 30 30  KEYRING = 0x2000
2820: 30 30 30 30 2c 0a 09 57 49 4e 48 54 54 50 5f 45  0000,..WINHTTP_E
2830: 4e 41 42 4c 45 5f 50 41 53 53 50 4f 52 54 5f 4b  NABLE_PASSPORT_K
2840: 45 59 52 49 4e 47 20 20 3d 20 30 78 34 30 30 30  EYRING  = 0x4000
2850: 30 30 30 30 2c 0a 09 0a 09 57 49 4e 48 54 54 50  0000,....WINHTTP
2860: 5f 44 49 53 41 42 4c 45 5f 43 4f 4f 4b 49 45 53  _DISABLE_COOKIES
2870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2880: 20 20 20 3d 20 30 78 30 30 30 30 30 30 30 31 2c     = 0x00000001,
2890: 0a 09 57 49 4e 48 54 54 50 5f 44 49 53 41 42 4c  ..WINHTTP_DISABL
28a0: 45 5f 52 45 44 49 52 45 43 54 53 20 20 20 20 20  E_REDIRECTS     
28b0: 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 30 78              = 0x
28c0: 30 30 30 30 30 30 30 32 2c 0a 09 57 49 4e 48 54  00000002,..WINHT
28d0: 54 50 5f 44 49 53 41 42 4c 45 5f 41 55 54 48 45  TP_DISABLE_AUTHE
28e0: 4e 54 49 43 41 54 49 4f 4e 20 20 20 20 20 20 20  NTICATION       
28f0: 20 20 20 20 20 3d 20 30 78 30 30 30 30 30 30 30       = 0x0000000
2900: 34 2c 0a 09 57 49 4e 48 54 54 50 5f 44 49 53 41  4,..WINHTTP_DISA
2910: 42 4c 45 5f 4b 45 45 50 5f 41 4c 49 56 45 20 20  BLE_KEEP_ALIVE  
2920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20                = 
2930: 30 78 30 30 30 30 30 30 30 38 2c 0a 09 0a 09 57  0x00000008,....W
2940: 49 4e 48 54 54 50 5f 45 4e 41 42 4c 45 5f 53 53  INHTTP_ENABLE_SS
2950: 4c 5f 52 45 56 4f 43 41 54 49 4f 4e 20 20 20 20  L_REVOCATION    
2960: 20 20 20 20 20 20 20 20 20 3d 20 30 78 30 30 30           = 0x000
2970: 30 30 30 30 31 2c 0a 09 57 49 4e 48 54 54 50 5f  00001,..WINHTTP_
2980: 45 4e 41 42 4c 45 5f 53 53 4c 5f 52 45 56 45 52  ENABLE_SSL_REVER
2990: 54 5f 49 4d 50 45 52 53 4f 4e 41 54 49 4f 4e 20  T_IMPERSONATION 
29a0: 20 20 3d 20 30 78 30 30 30 30 30 30 30 32 2c 0a    = 0x00000002,.
29b0: 09 0a 09 57 49 4e 48 54 54 50 5f 44 49 53 41 42  ...WINHTTP_DISAB
29c0: 4c 45 5f 53 50 4e 5f 53 45 52 56 45 52 5f 50 4f  LE_SPN_SERVER_PO
29d0: 52 54 20 20 20 20 20 20 20 20 20 20 20 3d 20 30  RT           = 0
29e0: 78 30 30 30 30 30 30 30 30 2c 0a 09 57 49 4e 48  x00000000,..WINH
29f0: 54 54 50 5f 45 4e 41 42 4c 45 5f 53 50 4e 5f 53  TTP_ENABLE_SPN_S
2a00: 45 52 56 45 52 5f 50 4f 52 54 20 20 20 20 20 20  ERVER_PORT      
2a10: 20 20 20 20 20 20 3d 20 30 78 30 30 30 30 30 30        = 0x000000
2a20: 30 31 2c 0a 09 57 49 4e 48 54 54 50 5f 4f 50 54  01,..WINHTTP_OPT
2a30: 49 4f 4e 5f 53 50 4e 5f 4d 41 53 4b 20 20 20 20  ION_SPN_MASK    
2a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d                 =
2a50: 20 57 49 4e 48 54 54 50 5f 45 4e 41 42 4c 45 5f   WINHTTP_ENABLE_
2a60: 53 50 4e 5f 53 45 52 56 45 52 5f 50 4f 52 54 0a  SPN_SERVER_PORT.
2a70: 7d 0a 0a 2f 2f 20 57 69 6e 64 6f 77 73 20 38 2e  }..// Windows 8.
2a80: 31 20 53 44 4b 3a 0a 73 74 61 74 69 63 20 69 66  1 SDK:.static if
2a90: 20 28 5f 57 49 4e 33 32 5f 57 49 4e 4e 54 20 3e   (_WIN32_WINNT >
2aa0: 3d 20 30 78 36 30 32 29 20 7b 09 0a 09 65 6e 75  = 0x602) {...enu
2ab0: 6d 20 44 57 4f 52 44 20 57 49 4e 48 54 54 50 5f  m DWORD WINHTTP_
2ac0: 4c 41 53 54 5f 4f 50 54 49 4f 4e 20 20 20 20 20  LAST_OPTION     
2ad0: 20 20 20 20 20 20 20 3d 20 57 49 4e 48 54 54 50         = WINHTTP
2ae0: 5f 4f 50 54 49 4f 4e 5f 57 45 42 5f 53 4f 43 4b  _OPTION_WEB_SOCK
2af0: 45 54 5f 53 45 4e 44 5f 42 55 46 46 45 52 5f 53  ET_SEND_BUFFER_S
2b00: 49 5a 45 3b 0a 7d 20 65 6c 73 65 20 7b 09 2f 2f  IZE;.} else {.//
2b10: 20 57 69 6e 64 6f 77 73 20 37 2e 30 41 20 53 44   Windows 7.0A SD
2b20: 4b 3a 0a 09 65 6e 75 6d 20 44 57 4f 52 44 20 57  K:..enum DWORD W
2b30: 49 4e 48 54 54 50 5f 4c 41 53 54 5f 4f 50 54 49  INHTTP_LAST_OPTI
2b40: 4f 4e 20 20 20 20 20 20 20 20 20 20 20 20 3d 20  ON            = 
2b50: 57 49 4e 48 54 54 50 5f 4f 50 54 49 4f 4e 5f 53  WINHTTP_OPTION_S
2b60: 45 52 56 45 52 5f 43 42 54 3b 0a 7d 0a 0a 65 6e  ERVER_CBT;.}..en
2b70: 75 6d 20 3a 20 44 57 4f 52 44 20 7b 0a 09 57 49  um : DWORD {..WI
2b80: 4e 48 54 54 50 5f 44 45 43 4f 4d 50 52 45 53 53  NHTTP_DECOMPRESS
2b90: 49 4f 4e 5f 46 4c 41 47 5f 47 5a 49 50 20 20 20  ION_FLAG_GZIP   
2ba0: 20 3d 20 30 78 30 30 30 30 30 30 30 31 2c 0a 09   = 0x00000001,..
2bb0: 57 49 4e 48 54 54 50 5f 44 45 43 4f 4d 50 52 45  WINHTTP_DECOMPRE
2bc0: 53 53 49 4f 4e 5f 46 4c 41 47 5f 44 45 46 4c 41  SSION_FLAG_DEFLA
2bd0: 54 45 20 3d 20 30 78 30 30 30 30 30 30 30 32 2c  TE = 0x00000002,
2be0: 0a 09 57 49 4e 48 54 54 50 5f 44 45 43 4f 4d 50  ..WINHTTP_DECOMP
2bf0: 52 45 53 53 49 4f 4e 5f 46 4c 41 47 5f 41 4c 4c  RESSION_FLAG_ALL
2c00: 20 3d 20 28 57 49 4e 48 54 54 50 5f 44 45 43 4f   = (WINHTTP_DECO
2c10: 4d 50 52 45 53 53 49 4f 4e 5f 46 4c 41 47 5f 47  MPRESSION_FLAG_G
2c20: 5a 49 50 20 7c 20 57 49 4e 48 54 54 50 5f 44 45  ZIP | WINHTTP_DE
2c30: 43 4f 4d 50 52 45 53 53 49 4f 4e 5f 46 4c 41 47  COMPRESSION_FLAG
2c40: 5f 44 45 46 4c 41 54 45 29 0a 7d 0a 0a 73 74 72  _DEFLATE).}..str
2c50: 75 63 74 20 57 49 4e 48 54 54 50 5f 43 52 45 44  uct WINHTTP_CRED
2c60: 53 20 7b 0a 20 20 20 20 4c 50 53 54 52 20 6c 70  S {.    LPSTR lp
2c70: 73 7a 55 73 65 72 4e 61 6d 65 3b 0a 20 20 20 20  szUserName;.    
2c80: 4c 50 53 54 52 20 6c 70 73 7a 50 61 73 73 77 6f  LPSTR lpszPasswo
2c90: 72 64 3b 0a 20 20 20 20 4c 50 53 54 52 20 6c 70  rd;.    LPSTR lp
2ca0: 73 7a 52 65 61 6c 6d 3b 0a 20 20 20 20 44 57 4f  szRealm;.    DWO
2cb0: 52 44 20 64 77 41 75 74 68 53 63 68 65 6d 65 3b  RD dwAuthScheme;
2cc0: 0a 20 20 20 20 4c 50 53 54 52 20 6c 70 73 7a 48  .    LPSTR lpszH
2cd0: 6f 73 74 4e 61 6d 65 3b 0a 20 20 20 20 44 57 4f  ostName;.    DWO
2ce0: 52 44 20 64 77 50 6f 72 74 3b 0a 7d 0a 61 6c 69  RD dwPort;.}.ali
2cf0: 61 73 20 50 57 49 4e 48 54 54 50 5f 43 52 45 44  as PWINHTTP_CRED
2d00: 53 20 3d 20 57 49 4e 48 54 54 50 5f 43 52 45 44  S = WINHTTP_CRED
2d10: 53 2a 3b 0a 0a 73 74 72 75 63 74 20 57 49 4e 48  S*;..struct WINH
2d20: 54 54 50 5f 43 52 45 44 53 5f 45 58 20 7b 0a 20  TTP_CREDS_EX {. 
2d30: 20 20 20 4c 50 53 54 52 20 6c 70 73 7a 55 73 65     LPSTR lpszUse
2d40: 72 4e 61 6d 65 3b 0a 20 20 20 20 4c 50 53 54 52  rName;.    LPSTR
2d50: 20 6c 70 73 7a 50 61 73 73 77 6f 72 64 3b 0a 20   lpszPassword;. 
2d60: 20 20 20 4c 50 53 54 52 20 6c 70 73 7a 52 65 61     LPSTR lpszRea
2d70: 6c 6d 3b 0a 20 20 20 20 44 57 4f 52 44 20 64 77  lm;.    DWORD dw
2d80: 41 75 74 68 53 63 68 65 6d 65 3b 0a 20 20 20 20  AuthScheme;.    
2d90: 4c 50 53 54 52 20 6c 70 73 7a 48 6f 73 74 4e 61  LPSTR lpszHostNa
2da0: 6d 65 3b 0a 20 20 20 20 44 57 4f 52 44 20 64 77  me;.    DWORD dw
2db0: 50 6f 72 74 3b 0a 20 20 20 20 4c 50 53 54 52 20  Port;.    LPSTR 
2dc0: 6c 70 73 7a 55 72 6c 3b 0a 7d 0a 61 6c 69 61 73  lpszUrl;.}.alias
2dd0: 20 50 57 49 4e 48 54 54 50 5f 43 52 45 44 53 5f   PWINHTTP_CREDS_
2de0: 45 58 20 3d 20 57 49 4e 48 54 54 50 5f 43 52 45  EX = WINHTTP_CRE
2df0: 44 53 5f 45 58 2a 3b 0a 0a 65 6e 75 6d 20 3a 20  DS_EX*;..enum : 
2e00: 44 57 4f 52 44 20 7b 0a 09 57 49 4e 48 54 54 50  DWORD {..WINHTTP
2e10: 5f 48 41 4e 44 4c 45 5f 54 59 50 45 5f 53 45 53  _HANDLE_TYPE_SES
2e20: 53 49 4f 4e 20 20 20 20 20 20 20 20 20 20 20 20  SION            
2e30: 20 20 20 20 3d 20 31 2c 0a 09 57 49 4e 48 54 54      = 1,..WINHTT
2e40: 50 5f 48 41 4e 44 4c 45 5f 54 59 50 45 5f 43 4f  P_HANDLE_TYPE_CO
2e50: 4e 4e 45 43 54 20 20 20 20 20 20 20 20 20 20 20  NNECT           
2e60: 20 20 20 20 20 3d 20 32 2c 0a 09 57 49 4e 48 54       = 2,..WINHT
2e70: 54 50 5f 48 41 4e 44 4c 45 5f 54 59 50 45 5f 52  TP_HANDLE_TYPE_R
2e80: 45 51 55 45 53 54 20 20 20 20 20 20 20 20 20 20  EQUEST          
2e90: 20 20 20 20 20 20 3d 20 33 2c 0a 0a 09 57 49 4e        = 3,...WIN
2ea0: 48 54 54 50 5f 41 55 54 48 5f 53 43 48 45 4d 45  HTTP_AUTH_SCHEME
2eb0: 5f 42 41 53 49 43 20 20 20 20 20 20 3d 20 30 78  _BASIC      = 0x
2ec0: 30 30 30 30 30 30 30 31 2c 0a 09 57 49 4e 48 54  00000001,..WINHT
2ed0: 54 50 5f 41 55 54 48 5f 53 43 48 45 4d 45 5f 4e  TP_AUTH_SCHEME_N
2ee0: 54 4c 4d 20 20 20 20 20 20 20 3d 20 30 78 30 30  TLM       = 0x00
2ef0: 30 30 30 30 30 32 2c 0a 09 57 49 4e 48 54 54 50  000002,..WINHTTP
2f00: 5f 41 55 54 48 5f 53 43 48 45 4d 45 5f 50 41 53  _AUTH_SCHEME_PAS
2f10: 53 50 4f 52 54 20 20 20 3d 20 30 78 30 30 30 30  SPORT   = 0x0000
2f20: 30 30 30 34 2c 0a 09 57 49 4e 48 54 54 50 5f 41  0004,..WINHTTP_A
2f30: 55 54 48 5f 53 43 48 45 4d 45 5f 44 49 47 45 53  UTH_SCHEME_DIGES
2f40: 54 20 20 20 20 20 3d 20 30 78 30 30 30 30 30 30  T     = 0x000000
2f50: 30 38 2c 0a 09 57 49 4e 48 54 54 50 5f 41 55 54  08,..WINHTTP_AUT
2f60: 48 5f 53 43 48 45 4d 45 5f 4e 45 47 4f 54 49 41  H_SCHEME_NEGOTIA
2f70: 54 45 20 20 3d 20 30 78 30 30 30 30 30 30 31 30  TE  = 0x00000010
2f80: 2c 0a 09 0a 09 57 49 4e 48 54 54 50 5f 41 55 54  ,....WINHTTP_AUT
2f90: 48 5f 54 41 52 47 45 54 5f 53 45 52 56 45 52 20  H_TARGET_SERVER 
2fa0: 3d 20 30 78 30 30 30 30 30 30 30 30 2c 0a 09 57  = 0x00000000,..W
2fb0: 49 4e 48 54 54 50 5f 41 55 54 48 5f 54 41 52 47  INHTTP_AUTH_TARG
2fc0: 45 54 5f 50 52 4f 58 59 20 20 3d 20 30 78 30 30  ET_PROXY  = 0x00
2fd0: 30 30 30 30 30 31 2c 0a 09 0a 09 53 45 43 55 52  000001,....SECUR
2fe0: 49 54 59 5f 46 4c 41 47 5f 53 45 43 55 52 45 20  ITY_FLAG_SECURE 
2ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3000: 20 20 20 3d 20 30 78 30 30 30 30 30 30 30 31 2c     = 0x00000001,
3010: 20 0a 09 53 45 43 55 52 49 54 59 5f 46 4c 41 47   ..SECURITY_FLAG
3020: 5f 53 54 52 45 4e 47 54 48 5f 57 45 41 4b 20 20  _STRENGTH_WEAK  
3030: 20 20 20 20 20 20 20 20 20 20 20 3d 20 30 78 31             = 0x1
3040: 30 30 30 30 30 30 30 2c 0a 09 53 45 43 55 52 49  0000000,..SECURI
3050: 54 59 5f 46 4c 41 47 5f 53 54 52 45 4e 47 54 48  TY_FLAG_STRENGTH
3060: 5f 4d 45 44 49 55 4d 20 20 20 20 20 20 20 20 20  _MEDIUM         
3070: 20 20 3d 20 30 78 34 30 30 30 30 30 30 30 2c 0a    = 0x40000000,.
3080: 09 53 45 43 55 52 49 54 59 5f 46 4c 41 47 5f 53  .SECURITY_FLAG_S
3090: 54 52 45 4e 47 54 48 5f 53 54 52 4f 4e 47 20 20  TRENGTH_STRONG  
30a0: 20 20 20 20 20 20 20 20 20 3d 20 30 78 32 30 30           = 0x200
30b0: 30 30 30 30 30 2c 0a 09 0a 09 57 49 4e 48 54 54  00000,....WINHTT
30c0: 50 5f 43 41 4c 4c 42 41 43 4b 5f 53 54 41 54 55  P_CALLBACK_STATU
30d0: 53 5f 46 4c 41 47 5f 43 45 52 54 5f 52 45 56 5f  S_FLAG_CERT_REV_
30e0: 46 41 49 4c 45 44 20 20 20 20 20 20 20 20 20 3d  FAILED         =
30f0: 20 30 78 30 30 30 30 30 30 30 31 2c 0a 09 57 49   0x00000001,..WI
3100: 4e 48 54 54 50 5f 43 41 4c 4c 42 41 43 4b 5f 53  NHTTP_CALLBACK_S
3110: 54 41 54 55 53 5f 46 4c 41 47 5f 49 4e 56 41 4c  TATUS_FLAG_INVAL
3120: 49 44 5f 43 45 52 54 20 20 20 20 20 20 20 20 20  ID_CERT         
3130: 20 20 20 3d 20 30 78 30 30 30 30 30 30 30 32 2c     = 0x00000002,
3140: 0a 09 57 49 4e 48 54 54 50 5f 43 41 4c 4c 42 41  ..WINHTTP_CALLBA
3150: 43 4b 5f 53 54 41 54 55 53 5f 46 4c 41 47 5f 43  CK_STATUS_FLAG_C
3160: 45 52 54 5f 52 45 56 4f 4b 45 44 20 20 20 20 20  ERT_REVOKED     
3170: 20 20 20 20 20 20 20 3d 20 30 78 30 30 30 30 30         = 0x00000
3180: 30 30 34 2c 0a 09 57 49 4e 48 54 54 50 5f 43 41  004,..WINHTTP_CA
3190: 4c 4c 42 41 43 4b 5f 53 54 41 54 55 53 5f 46 4c  LLBACK_STATUS_FL
31a0: 41 47 5f 49 4e 56 41 4c 49 44 5f 43 41 20 20 20  AG_INVALID_CA   
31b0: 20 20 20 20 20 20 20 20 20 20 20 3d 20 30 78 30             = 0x0
31c0: 30 30 30 30 30 30 38 2c 0a 09 57 49 4e 48 54 54  0000008,..WINHTT
31d0: 50 5f 43 41 4c 4c 42 41 43 4b 5f 53 54 41 54 55  P_CALLBACK_STATU
31e0: 53 5f 46 4c 41 47 5f 43 45 52 54 5f 43 4e 5f 49  S_FLAG_CERT_CN_I
31f0: 4e 56 41 4c 49 44 20 20 20 20 20 20 20 20 20 3d  NVALID         =
3200: 20 30 78 30 30 30 30 30 30 31 30 2c 0a 09 57 49   0x00000010,..WI
3210: 4e 48 54 54 50 5f 43 41 4c 4c 42 41 43 4b 5f 53  NHTTP_CALLBACK_S
3220: 54 41 54 55 53 5f 46 4c 41 47 5f 43 45 52 54 5f  TATUS_FLAG_CERT_
3230: 44 41 54 45 5f 49 4e 56 41 4c 49 44 20 20 20 20  DATE_INVALID    
3240: 20 20 20 3d 20 30 78 30 30 30 30 30 30 32 30 2c     = 0x00000020,
3250: 0a 09 57 49 4e 48 54 54 50 5f 43 41 4c 4c 42 41  ..WINHTTP_CALLBA
3260: 43 4b 5f 53 54 41 54 55 53 5f 46 4c 41 47 5f 43  CK_STATUS_FLAG_C
3270: 45 52 54 5f 57 52 4f 4e 47 5f 55 53 41 47 45 20  ERT_WRONG_USAGE 
3280: 20 20 20 20 20 20 20 3d 20 30 78 30 30 30 30 30         = 0x00000
3290: 30 34 30 2c 0a 09 57 49 4e 48 54 54 50 5f 43 41  040,..WINHTTP_CA
32a0: 4c 4c 42 41 43 4b 5f 53 54 41 54 55 53 5f 46 4c  LLBACK_STATUS_FL
32b0: 41 47 5f 53 45 43 55 52 49 54 59 5f 43 48 41 4e  AG_SECURITY_CHAN
32c0: 4e 45 4c 5f 45 52 52 4f 52 20 20 3d 20 30 78 38  NEL_ERROR  = 0x8
32d0: 30 30 30 30 30 30 30 2c 0a 0a 09 57 49 4e 48 54  0000000,...WINHT
32e0: 54 50 5f 46 4c 41 47 5f 53 45 43 55 52 45 5f 50  TP_FLAG_SECURE_P
32f0: 52 4f 54 4f 43 4f 4c 5f 53 53 4c 32 20 20 20 3d  ROTOCOL_SSL2   =
3300: 20 30 78 30 30 30 30 30 30 30 38 2c 0a 09 57 49   0x00000008,..WI
3310: 4e 48 54 54 50 5f 46 4c 41 47 5f 53 45 43 55 52  NHTTP_FLAG_SECUR
3320: 45 5f 50 52 4f 54 4f 43 4f 4c 5f 53 53 4c 33 20  E_PROTOCOL_SSL3 
3330: 20 20 3d 20 30 78 30 30 30 30 30 30 32 30 2c 0a    = 0x00000020,.
3340: 09 57 49 4e 48 54 54 50 5f 46 4c 41 47 5f 53 45  .WINHTTP_FLAG_SE
3350: 43 55 52 45 5f 50 52 4f 54 4f 43 4f 4c 5f 54 4c  CURE_PROTOCOL_TL
3360: 53 31 20 20 20 3d 20 30 78 30 30 30 30 30 30 38  S1   = 0x0000008
3370: 30 2c 0a 09 57 49 4e 48 54 54 50 5f 46 4c 41 47  0,..WINHTTP_FLAG
3380: 5f 53 45 43 55 52 45 5f 50 52 4f 54 4f 43 4f 4c  _SECURE_PROTOCOL
3390: 5f 54 4c 53 31 5f 31 20 3d 20 30 78 30 30 30 30  _TLS1_1 = 0x0000
33a0: 30 32 30 30 2c 0a 09 57 49 4e 48 54 54 50 5f 46  0200,..WINHTTP_F
33b0: 4c 41 47 5f 53 45 43 55 52 45 5f 50 52 4f 54 4f  LAG_SECURE_PROTO
33c0: 43 4f 4c 5f 54 4c 53 31 5f 32 20 3d 20 30 78 30  COL_TLS1_2 = 0x0
33d0: 30 30 30 30 38 30 30 2c 0a 09 57 49 4e 48 54 54  0000800,..WINHTT
33e0: 50 5f 46 4c 41 47 5f 53 45 43 55 52 45 5f 50 52  P_FLAG_SECURE_PR
33f0: 4f 54 4f 43 4f 4c 5f 41 4c 4c 20 20 20 20 3d 20  OTOCOL_ALL    = 
3400: 28 57 49 4e 48 54 54 50 5f 46 4c 41 47 5f 53 45  (WINHTTP_FLAG_SE
3410: 43 55 52 45 5f 50 52 4f 54 4f 43 4f 4c 5f 53 53  CURE_PROTOCOL_SS
3420: 4c 32 20 7c 20 0a 09 09 09 09 09 09 09 09 09 09  L2 | ...........
3430: 09 09 20 57 49 4e 48 54 54 50 5f 46 4c 41 47 5f  .. WINHTTP_FLAG_
3440: 53 45 43 55 52 45 5f 50 52 4f 54 4f 43 4f 4c 5f  SECURE_PROTOCOL_
3450: 53 53 4c 33 20 7c 20 0a 09 09 09 09 09 09 09 09  SSL3 | .........
3460: 09 09 09 09 20 57 49 4e 48 54 54 50 5f 46 4c 41  .... WINHTTP_FLA
3470: 47 5f 53 45 43 55 52 45 5f 50 52 4f 54 4f 43 4f  G_SECURE_PROTOCO
3480: 4c 5f 54 4c 53 31 29 0a 7d 0a 0a 61 6c 69 61 73  L_TLS1).}..alias
3490: 20 65 78 74 65 72 6e 28 57 69 6e 64 6f 77 73 29   extern(Windows)
34a0: 20 69 6e 74 20 66 6e 57 49 4e 48 54 54 50 5f 53   int fnWINHTTP_S
34b0: 54 41 54 55 53 5f 43 41 4c 4c 42 41 43 4b 28 48  TATUS_CALLBACK(H
34c0: 49 4e 54 45 52 4e 45 54 20 68 49 6e 74 65 72 6e  INTERNET hIntern
34d0: 65 74 2c 20 44 57 4f 52 44 5f 50 54 52 20 64 77  et, DWORD_PTR dw
34e0: 43 6f 6e 74 65 78 74 2c 0a 20 20 20 20 20 20 20  Context,.       
34f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3500: 20 20 20 44 57 4f 52 44 20 64 77 49 6e 74 65 72     DWORD dwInter
3510: 6e 65 74 53 74 61 74 75 73 2c 20 4c 50 56 4f 49  netStatus, LPVOI
3520: 44 20 6c 70 76 53 74 61 74 75 73 49 6e 66 6f 72  D lpvStatusInfor
3530: 6d 61 74 69 6f 6e 2c 44 57 4f 52 44 20 64 77 53  mation,DWORD dwS
3540: 74 61 74 75 73 49 6e 66 6f 72 6d 61 74 69 6f 6e  tatusInformation
3550: 4c 65 6e 67 74 68 29 3b 0a 61 6c 69 61 73 20 57  Length);.alias W
3560: 49 4e 48 54 54 50 5f 53 54 41 54 55 53 5f 43 41  INHTTP_STATUS_CA
3570: 4c 4c 42 41 43 4b 20 3d 20 66 6e 57 49 4e 48 54  LLBACK = fnWINHT
3580: 54 50 5f 53 54 41 54 55 53 5f 43 41 4c 4c 42 41  TP_STATUS_CALLBA
3590: 43 4b 2a 3b 0a 61 6c 69 61 73 20 4c 50 57 49 4e  CK*;.alias LPWIN
35a0: 48 54 54 50 5f 53 54 41 54 55 53 5f 43 41 4c 4c  HTTP_STATUS_CALL
35b0: 42 41 43 4b 20 3d 20 57 49 4e 48 54 54 50 5f 53  BACK = WINHTTP_S
35c0: 54 41 54 55 53 5f 43 41 4c 4c 42 41 43 4b 2a 3b  TATUS_CALLBACK*;
35d0: 0a 0a 65 6e 75 6d 20 3a 20 44 57 4f 52 44 20 7b  ..enum : DWORD {
35e0: 0a 09 57 49 4e 48 54 54 50 5f 43 41 4c 4c 42 41  ..WINHTTP_CALLBA
35f0: 43 4b 5f 53 54 41 54 55 53 5f 52 45 53 4f 4c 56  CK_STATUS_RESOLV
3600: 49 4e 47 5f 4e 41 4d 45 20 20 20 20 20 20 20 20  ING_NAME        
3610: 20 20 3d 20 30 78 30 30 30 30 30 30 30 31 2c 0a    = 0x00000001,.
3620: 09 57 49 4e 48 54 54 50 5f 43 41 4c 4c 42 41 43  .WINHTTP_CALLBAC
3630: 4b 5f 53 54 41 54 55 53 5f 4e 41 4d 45 5f 52 45  K_STATUS_NAME_RE
3640: 53 4f 4c 56 45 44 20 20 20 20 20 20 20 20 20 20  SOLVED          
3650: 20 3d 20 30 78 30 30 30 30 30 30 30 32 2c 0a 09   = 0x00000002,..
3660: 57 49 4e 48 54 54 50 5f 43 41 4c 4c 42 41 43 4b  WINHTTP_CALLBACK
3670: 5f 53 54 41 54 55 53 5f 43 4f 4e 4e 45 43 54 49  _STATUS_CONNECTI
3680: 4e 47 5f 54 4f 5f 53 45 52 56 45 52 20 20 20 20  NG_TO_SERVER    
3690: 3d 20 30 78 30 30 30 30 30 30 30 34 2c 0a 09 57  = 0x00000004,..W
36a0: 49 4e 48 54 54 50 5f 43 41 4c 4c 42 41 43 4b 5f  INHTTP_CALLBACK_
36b0: 53 54 41 54 55 53 5f 43 4f 4e 4e 45 43 54 45 44  STATUS_CONNECTED
36c0: 5f 54 4f 5f 53 45 52 56 45 52 20 20 20 20 20 3d  _TO_SERVER     =
36d0: 20 30 78 30 30 30 30 30 30 30 38 2c 0a 09 57 49   0x00000008,..WI
36e0: 4e 48 54 54 50 5f 43 41 4c 4c 42 41 43 4b 5f 53  NHTTP_CALLBACK_S
36f0: 54 41 54 55 53 5f 53 45 4e 44 49 4e 47 5f 52 45  TATUS_SENDING_RE
3700: 51 55 45 53 54 20 20 20 20 20 20 20 20 20 3d 20  QUEST         = 
3710: 30 78 30 30 30 30 30 30 31 30 2c 0a 09 57 49 4e  0x00000010,..WIN
3720: 48 54 54 50 5f 43 41 4c 4c 42 41 43 4b 5f 53 54  HTTP_CALLBACK_ST
3730: 41 54 55 53 5f 52 45 51 55 45 53 54 5f 53 45 4e  ATUS_REQUEST_SEN
3740: 54 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 30  T            = 0
3750: 78 30 30 30 30 30 30 32 30 2c 0a 09 57 49 4e 48  x00000020,..WINH
3760: 54 54 50 5f 43 41 4c 4c 42 41 43 4b 5f 53 54 41  TTP_CALLBACK_STA
3770: 54 55 53 5f 52 45 43 45 49 56 49 4e 47 5f 52 45  TUS_RECEIVING_RE
3780: 53 50 4f 4e 53 45 20 20 20 20 20 20 3d 20 30 78  SPONSE      = 0x
3790: 30 30 30 30 30 30 34 30 2c 0a 09 57 49 4e 48 54  00000040,..WINHT
37a0: 54 50 5f 43 41 4c 4c 42 41 43 4b 5f 53 54 41 54  TP_CALLBACK_STAT
37b0: 55 53 5f 52 45 53 50 4f 4e 53 45 5f 52 45 43 45  US_RESPONSE_RECE
37c0: 49 56 45 44 20 20 20 20 20 20 20 3d 20 30 78 30  IVED       = 0x0
37d0: 30 30 30 30 30 38 30 2c 0a 09 57 49 4e 48 54 54  0000080,..WINHTT
37e0: 50 5f 43 41 4c 4c 42 41 43 4b 5f 53 54 41 54 55  P_CALLBACK_STATU
37f0: 53 5f 43 4c 4f 53 49 4e 47 5f 43 4f 4e 4e 45 43  S_CLOSING_CONNEC
3800: 54 49 4f 4e 20 20 20 20 20 20 3d 20 30 78 30 30  TION      = 0x00
3810: 30 30 30 31 30 30 2c 0a 09 57 49 4e 48 54 54 50  000100,..WINHTTP
3820: 5f 43 41 4c 4c 42 41 43 4b 5f 53 54 41 54 55 53  _CALLBACK_STATUS
3830: 5f 43 4f 4e 4e 45 43 54 49 4f 4e 5f 43 4c 4f 53  _CONNECTION_CLOS
3840: 45 44 20 20 20 20 20 20 20 3d 20 30 78 30 30 30  ED       = 0x000
3850: 30 30 32 30 30 2c 0a 09 57 49 4e 48 54 54 50 5f  00200,..WINHTTP_
3860: 43 41 4c 4c 42 41 43 4b 5f 53 54 41 54 55 53 5f  CALLBACK_STATUS_
3870: 48 41 4e 44 4c 45 5f 43 52 45 41 54 45 44 20 20  HANDLE_CREATED  
3880: 20 20 20 20 20 20 20 20 3d 20 30 78 30 30 30 30          = 0x0000
3890: 30 34 30 30 2c 0a 09 57 49 4e 48 54 54 50 5f 43  0400,..WINHTTP_C
38a0: 41 4c 4c 42 41 43 4b 5f 53 54 41 54 55 53 5f 48  ALLBACK_STATUS_H
38b0: 41 4e 44 4c 45 5f 43 4c 4f 53 49 4e 47 20 20 20  ANDLE_CLOSING   
38c0: 20 20 20 20 20 20 20 3d 20 30 78 30 30 30 30 30         = 0x00000
38d0: 38 30 30 2c 0a 09 57 49 4e 48 54 54 50 5f 43 41  800,..WINHTTP_CA
38e0: 4c 4c 42 41 43 4b 5f 53 54 41 54 55 53 5f 44 45  LLBACK_STATUS_DE
38f0: 54 45 43 54 49 4e 47 5f 50 52 4f 58 59 20 20 20  TECTING_PROXY   
3900: 20 20 20 20 20 20 3d 20 30 78 30 30 30 30 31 30        = 0x000010
3910: 30 30 2c 0a 09 57 49 4e 48 54 54 50 5f 43 41 4c  00,..WINHTTP_CAL
3920: 4c 42 41 43 4b 5f 53 54 41 54 55 53 5f 52 45 44  LBACK_STATUS_RED
3930: 49 52 45 43 54 20 20 20 20 20 20 20 20 20 20 20  IRECT           
3940: 20 20 20 20 20 3d 20 30 78 30 30 30 30 34 30 30       = 0x0000400
3950: 30 2c 0a 09 57 49 4e 48 54 54 50 5f 43 41 4c 4c  0,..WINHTTP_CALL
3960: 42 41 43 4b 5f 53 54 41 54 55 53 5f 49 4e 54 45  BACK_STATUS_INTE
3970: 52 4d 45 44 49 41 54 45 5f 52 45 53 50 4f 4e 53  RMEDIATE_RESPONS
3980: 45 20 20 20 3d 20 30 78 30 30 30 30 38 30 30 30  E   = 0x00008000
3990: 2c 0a 09 57 49 4e 48 54 54 50 5f 43 41 4c 4c 42  ,..WINHTTP_CALLB
39a0: 41 43 4b 5f 53 54 41 54 55 53 5f 53 45 43 55 52  ACK_STATUS_SECUR
39b0: 45 5f 46 41 49 4c 55 52 45 20 20 20 20 20 20 20  E_FAILURE       
39c0: 20 20 20 3d 20 30 78 30 30 30 31 30 30 30 30 2c     = 0x00010000,
39d0: 0a 09 57 49 4e 48 54 54 50 5f 43 41 4c 4c 42 41  ..WINHTTP_CALLBA
39e0: 43 4b 5f 53 54 41 54 55 53 5f 48 45 41 44 45 52  CK_STATUS_HEADER
39f0: 53 5f 41 56 41 49 4c 41 42 4c 45 20 20 20 20 20  S_AVAILABLE     
3a00: 20 20 3d 20 30 78 30 30 30 32 30 30 30 30 2c 0a    = 0x00020000,.
3a10: 09 57 49 4e 48 54 54 50 5f 43 41 4c 4c 42 41 43  .WINHTTP_CALLBAC
3a20: 4b 5f 53 54 41 54 55 53 5f 44 41 54 41 5f 41 56  K_STATUS_DATA_AV
3a30: 41 49 4c 41 42 4c 45 20 20 20 20 20 20 20 20 20  AILABLE         
3a40: 20 3d 20 30 78 30 30 30 34 30 30 30 30 2c 0a 09   = 0x00040000,..
3a50: 57 49 4e 48 54 54 50 5f 43 41 4c 4c 42 41 43 4b  WINHTTP_CALLBACK
3a60: 5f 53 54 41 54 55 53 5f 52 45 41 44 5f 43 4f 4d  _STATUS_READ_COM
3a70: 50 4c 45 54 45 20 20 20 20 20 20 20 20 20 20 20  PLETE           
3a80: 3d 20 30 78 30 30 30 38 30 30 30 30 2c 0a 09 57  = 0x00080000,..W
3a90: 49 4e 48 54 54 50 5f 43 41 4c 4c 42 41 43 4b 5f  INHTTP_CALLBACK_
3aa0: 53 54 41 54 55 53 5f 57 52 49 54 45 5f 43 4f 4d  STATUS_WRITE_COM
3ab0: 50 4c 45 54 45 20 20 20 20 20 20 20 20 20 20 3d  PLETE          =
3ac0: 20 30 78 30 30 31 30 30 30 30 30 2c 0a 09 57 49   0x00100000,..WI
3ad0: 4e 48 54 54 50 5f 43 41 4c 4c 42 41 43 4b 5f 53  NHTTP_CALLBACK_S
3ae0: 54 41 54 55 53 5f 52 45 51 55 45 53 54 5f 45 52  TATUS_REQUEST_ER
3af0: 52 4f 52 20 20 20 20 20 20 20 20 20 20 20 3d 20  ROR           = 
3b00: 30 78 30 30 32 30 30 30 30 30 2c 0a 09 57 49 4e  0x00200000,..WIN
3b10: 48 54 54 50 5f 43 41 4c 4c 42 41 43 4b 5f 53 54  HTTP_CALLBACK_ST
3b20: 41 54 55 53 5f 53 45 4e 44 52 45 51 55 45 53 54  ATUS_SENDREQUEST
3b30: 5f 43 4f 4d 50 4c 45 54 45 20 20 20 20 3d 20 30  _COMPLETE    = 0
3b40: 78 30 30 34 30 30 30 30 30 0a 7d 0a 0a 65 6e 75  x00400000.}..enu
3b50: 6d 20 3a 20 44 57 4f 52 44 20 7b 0a 09 57 49 4e  m : DWORD {..WIN
3b60: 48 54 54 50 5f 43 41 4c 4c 42 41 43 4b 5f 53 54  HTTP_CALLBACK_ST
3b70: 41 54 55 53 5f 47 45 54 50 52 4f 58 59 46 4f 52  ATUS_GETPROXYFOR
3b80: 55 52 4c 5f 43 4f 4d 50 4c 45 54 45 20 3d 20 30  URL_COMPLETE = 0
3b90: 78 30 31 30 30 30 30 30 30 2c 0a 09 57 49 4e 48  x01000000,..WINH
3ba0: 54 54 50 5f 43 41 4c 4c 42 41 43 4b 5f 53 54 41  TTP_CALLBACK_STA
3bb0: 54 55 53 5f 43 4c 4f 53 45 5f 43 4f 4d 50 4c 45  TUS_CLOSE_COMPLE
3bc0: 54 45 20 20 20 20 20 20 20 20 20 20 3d 20 30 78  TE          = 0x
3bd0: 30 32 30 30 30 30 30 30 2c 0a 09 57 49 4e 48 54  02000000,..WINHT
3be0: 54 50 5f 43 41 4c 4c 42 41 43 4b 5f 53 54 41 54  TP_CALLBACK_STAT
3bf0: 55 53 5f 53 48 55 54 44 4f 57 4e 5f 43 4f 4d 50  US_SHUTDOWN_COMP
3c00: 4c 45 54 45 20 20 20 20 20 20 20 3d 20 30 78 30  LETE       = 0x0
3c10: 34 30 30 30 30 30 30 0a 7d 0a 0a 65 6e 75 6d 20  4000000.}..enum 
3c20: 3a 20 44 57 4f 52 44 20 7b 0a 09 41 50 49 5f 52  : DWORD {..API_R
3c30: 45 43 45 49 56 45 5f 52 45 53 50 4f 4e 53 45 20  ECEIVE_RESPONSE 
3c40: 20 20 20 20 20 20 20 3d 20 31 2c 0a 09 41 50 49         = 1,..API
3c50: 5f 51 55 45 52 59 5f 44 41 54 41 5f 41 56 41 49  _QUERY_DATA_AVAI
3c60: 4c 41 42 4c 45 20 20 20 20 3d 20 32 2c 0a 09 41  LABLE    = 2,..A
3c70: 50 49 5f 52 45 41 44 5f 44 41 54 41 20 20 20 20  PI_READ_DATA    
3c80: 20 20 20 20 20 20 20 20 20 20 20 3d 20 33 2c 0a             = 3,.
3c90: 09 41 50 49 5f 57 52 49 54 45 5f 44 41 54 41 20  .API_WRITE_DATA 
3ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 34               = 4
3cb0: 2c 0a 09 41 50 49 5f 53 45 4e 44 5f 52 45 51 55  ,..API_SEND_REQU
3cc0: 45 53 54 20 20 20 20 20 20 20 20 20 20 20 20 3d  EST            =
3cd0: 20 35 0a 7d 0a 0a 65 6e 75 6d 20 3a 20 44 57 4f   5.}..enum : DWO
3ce0: 52 44 20 7b 0a 09 57 49 4e 48 54 54 50 5f 43 41  RD {..WINHTTP_CA
3cf0: 4c 4c 42 41 43 4b 5f 46 4c 41 47 5f 52 45 53 4f  LLBACK_FLAG_RESO
3d00: 4c 56 45 5f 4e 41 4d 45 20 20 20 20 20 20 20 20  LVE_NAME        
3d10: 20 20 20 20 3d 20 28 57 49 4e 48 54 54 50 5f 43      = (WINHTTP_C
3d20: 41 4c 4c 42 41 43 4b 5f 53 54 41 54 55 53 5f 52  ALLBACK_STATUS_R
3d30: 45 53 4f 4c 56 49 4e 47 5f 4e 41 4d 45 20 7c 20  ESOLVING_NAME | 
3d40: 57 49 4e 48 54 54 50 5f 43 41 4c 4c 42 41 43 4b  WINHTTP_CALLBACK
3d50: 5f 53 54 41 54 55 53 5f 4e 41 4d 45 5f 52 45 53  _STATUS_NAME_RES
3d60: 4f 4c 56 45 44 29 2c 0a 09 57 49 4e 48 54 54 50  OLVED),..WINHTTP
3d70: 5f 43 41 4c 4c 42 41 43 4b 5f 46 4c 41 47 5f 43  _CALLBACK_FLAG_C
3d80: 4f 4e 4e 45 43 54 5f 54 4f 5f 53 45 52 56 45 52  ONNECT_TO_SERVER
3d90: 20 20 20 20 20 20 20 3d 20 28 57 49 4e 48 54 54         = (WINHTT
3da0: 50 5f 43 41 4c 4c 42 41 43 4b 5f 53 54 41 54 55  P_CALLBACK_STATU
3db0: 53 5f 43 4f 4e 4e 45 43 54 49 4e 47 5f 54 4f 5f  S_CONNECTING_TO_
3dc0: 53 45 52 56 45 52 20 7c 20 57 49 4e 48 54 54 50  SERVER | WINHTTP
3dd0: 5f 43 41 4c 4c 42 41 43 4b 5f 53 54 41 54 55 53  _CALLBACK_STATUS
3de0: 5f 43 4f 4e 4e 45 43 54 45 44 5f 54 4f 5f 53 45  _CONNECTED_TO_SE
3df0: 52 56 45 52 29 2c 0a 09 57 49 4e 48 54 54 50 5f  RVER),..WINHTTP_
3e00: 43 41 4c 4c 42 41 43 4b 5f 46 4c 41 47 5f 53 45  CALLBACK_FLAG_SE
3e10: 4e 44 5f 52 45 51 55 45 53 54 20 20 20 20 20 20  ND_REQUEST      
3e20: 20 20 20 20 20 20 3d 20 28 57 49 4e 48 54 54 50        = (WINHTTP
3e30: 5f 43 41 4c 4c 42 41 43 4b 5f 53 54 41 54 55 53  _CALLBACK_STATUS
3e40: 5f 53 45 4e 44 49 4e 47 5f 52 45 51 55 45 53 54  _SENDING_REQUEST
3e50: 20 7c 20 57 49 4e 48 54 54 50 5f 43 41 4c 4c 42   | WINHTTP_CALLB
3e60: 41 43 4b 5f 53 54 41 54 55 53 5f 52 45 51 55 45  ACK_STATUS_REQUE
3e70: 53 54 5f 53 45 4e 54 29 2c 0a 09 57 49 4e 48 54  ST_SENT),..WINHT
3e80: 54 50 5f 43 41 4c 4c 42 41 43 4b 5f 46 4c 41 47  TP_CALLBACK_FLAG
3e90: 5f 52 45 43 45 49 56 45 5f 52 45 53 50 4f 4e 53  _RECEIVE_RESPONS
3ea0: 45 20 20 20 20 20 20 20 20 3d 20 28 57 49 4e 48  E        = (WINH
3eb0: 54 54 50 5f 43 41 4c 4c 42 41 43 4b 5f 53 54 41  TTP_CALLBACK_STA
3ec0: 54 55 53 5f 52 45 43 45 49 56 49 4e 47 5f 52 45  TUS_RECEIVING_RE
3ed0: 53 50 4f 4e 53 45 20 7c 20 57 49 4e 48 54 54 50  SPONSE | WINHTTP
3ee0: 5f 43 41 4c 4c 42 41 43 4b 5f 53 54 41 54 55 53  _CALLBACK_STATUS
3ef0: 5f 52 45 53 50 4f 4e 53 45 5f 52 45 43 45 49 56  _RESPONSE_RECEIV
3f00: 45 44 29 2c 0a 09 57 49 4e 48 54 54 50 5f 43 41  ED),..WINHTTP_CA
3f10: 4c 4c 42 41 43 4b 5f 46 4c 41 47 5f 43 4c 4f 53  LLBACK_FLAG_CLOS
3f20: 45 5f 43 4f 4e 4e 45 43 54 49 4f 4e 20 20 20 20  E_CONNECTION    
3f30: 20 20 20 20 3d 20 28 57 49 4e 48 54 54 50 5f 43      = (WINHTTP_C
3f40: 41 4c 4c 42 41 43 4b 5f 53 54 41 54 55 53 5f 43  ALLBACK_STATUS_C
3f50: 4c 4f 53 49 4e 47 5f 43 4f 4e 4e 45 43 54 49 4f  LOSING_CONNECTIO
3f60: 4e 20 7c 20 57 49 4e 48 54 54 50 5f 43 41 4c 4c  N | WINHTTP_CALL
3f70: 42 41 43 4b 5f 53 54 41 54 55 53 5f 43 4f 4e 4e  BACK_STATUS_CONN
3f80: 45 43 54 49 4f 4e 5f 43 4c 4f 53 45 44 29 2c 0a  ECTION_CLOSED),.
3f90: 09 57 49 4e 48 54 54 50 5f 43 41 4c 4c 42 41 43  .WINHTTP_CALLBAC
3fa0: 4b 5f 46 4c 41 47 5f 48 41 4e 44 4c 45 53 20 20  K_FLAG_HANDLES  
3fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d                 =
3fc0: 20 28 57 49 4e 48 54 54 50 5f 43 41 4c 4c 42 41   (WINHTTP_CALLBA
3fd0: 43 4b 5f 53 54 41 54 55 53 5f 48 41 4e 44 4c 45  CK_STATUS_HANDLE
3fe0: 5f 43 52 45 41 54 45 44 20 7c 20 57 49 4e 48 54  _CREATED | WINHT
3ff0: 54 50 5f 43 41 4c 4c 42 41 43 4b 5f 53 54 41 54  TP_CALLBACK_STAT
4000: 55 53 5f 48 41 4e 44 4c 45 5f 43 4c 4f 53 49 4e  US_HANDLE_CLOSIN
4010: 47 29 2c 0a 09 57 49 4e 48 54 54 50 5f 43 41 4c  G),..WINHTTP_CAL
4020: 4c 42 41 43 4b 5f 46 4c 41 47 5f 44 45 54 45 43  LBACK_FLAG_DETEC
4030: 54 49 4e 47 5f 50 52 4f 58 59 20 20 20 20 20 20  TING_PROXY      
4040: 20 20 20 3d 20 57 49 4e 48 54 54 50 5f 43 41 4c     = WINHTTP_CAL
4050: 4c 42 41 43 4b 5f 53 54 41 54 55 53 5f 44 45 54  LBACK_STATUS_DET
4060: 45 43 54 49 4e 47 5f 50 52 4f 58 59 2c 0a 09 57  ECTING_PROXY,..W
4070: 49 4e 48 54 54 50 5f 43 41 4c 4c 42 41 43 4b 5f  INHTTP_CALLBACK_
4080: 46 4c 41 47 5f 52 45 44 49 52 45 43 54 20 20 20  FLAG_REDIRECT   
4090: 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 57               = W
40a0: 49 4e 48 54 54 50 5f 43 41 4c 4c 42 41 43 4b 5f  INHTTP_CALLBACK_
40b0: 53 54 41 54 55 53 5f 52 45 44 49 52 45 43 54 2c  STATUS_REDIRECT,
40c0: 0a 09 57 49 4e 48 54 54 50 5f 43 41 4c 4c 42 41  ..WINHTTP_CALLBA
40d0: 43 4b 5f 46 4c 41 47 5f 49 4e 54 45 52 4d 45 44  CK_FLAG_INTERMED
40e0: 49 41 54 45 5f 52 45 53 50 4f 4e 53 45 20 20 20  IATE_RESPONSE   
40f0: 3d 20 57 49 4e 48 54 54 50 5f 43 41 4c 4c 42 41  = WINHTTP_CALLBA
4100: 43 4b 5f 53 54 41 54 55 53 5f 49 4e 54 45 52 4d  CK_STATUS_INTERM
4110: 45 44 49 41 54 45 5f 52 45 53 50 4f 4e 53 45 2c  EDIATE_RESPONSE,
4120: 0a 09 57 49 4e 48 54 54 50 5f 43 41 4c 4c 42 41  ..WINHTTP_CALLBA
4130: 43 4b 5f 46 4c 41 47 5f 53 45 43 55 52 45 5f 46  CK_FLAG_SECURE_F
4140: 41 49 4c 55 52 45 20 20 20 20 20 20 20 20 20 20  AILURE          
4150: 3d 20 57 49 4e 48 54 54 50 5f 43 41 4c 4c 42 41  = WINHTTP_CALLBA
4160: 43 4b 5f 53 54 41 54 55 53 5f 53 45 43 55 52 45  CK_STATUS_SECURE
4170: 5f 46 41 49 4c 55 52 45 2c 0a 09 57 49 4e 48 54  _FAILURE,..WINHT
4180: 54 50 5f 43 41 4c 4c 42 41 43 4b 5f 46 4c 41 47  TP_CALLBACK_FLAG
4190: 5f 53 45 4e 44 52 45 51 55 45 53 54 5f 43 4f 4d  _SENDREQUEST_COM
41a0: 50 4c 45 54 45 20 20 20 20 3d 20 57 49 4e 48 54  PLETE    = WINHT
41b0: 54 50 5f 43 41 4c 4c 42 41 43 4b 5f 53 54 41 54  TP_CALLBACK_STAT
41c0: 55 53 5f 53 45 4e 44 52 45 51 55 45 53 54 5f 43  US_SENDREQUEST_C
41d0: 4f 4d 50 4c 45 54 45 2c 0a 09 57 49 4e 48 54 54  OMPLETE,..WINHTT
41e0: 50 5f 43 41 4c 4c 42 41 43 4b 5f 46 4c 41 47 5f  P_CALLBACK_FLAG_
41f0: 48 45 41 44 45 52 53 5f 41 56 41 49 4c 41 42 4c  HEADERS_AVAILABL
4200: 45 20 20 20 20 20 20 20 3d 20 57 49 4e 48 54 54  E       = WINHTT
4210: 50 5f 43 41 4c 4c 42 41 43 4b 5f 53 54 41 54 55  P_CALLBACK_STATU
4220: 53 5f 48 45 41 44 45 52 53 5f 41 56 41 49 4c 41  S_HEADERS_AVAILA
4230: 42 4c 45 2c 0a 09 57 49 4e 48 54 54 50 5f 43 41  BLE,..WINHTTP_CA
4240: 4c 4c 42 41 43 4b 5f 46 4c 41 47 5f 44 41 54 41  LLBACK_FLAG_DATA
4250: 5f 41 56 41 49 4c 41 42 4c 45 20 20 20 20 20 20  _AVAILABLE      
4260: 20 20 20 20 3d 20 57 49 4e 48 54 54 50 5f 43 41      = WINHTTP_CA
4270: 4c 4c 42 41 43 4b 5f 53 54 41 54 55 53 5f 44 41  LLBACK_STATUS_DA
4280: 54 41 5f 41 56 41 49 4c 41 42 4c 45 2c 0a 09 57  TA_AVAILABLE,..W
4290: 49 4e 48 54 54 50 5f 43 41 4c 4c 42 41 43 4b 5f  INHTTP_CALLBACK_
42a0: 46 4c 41 47 5f 52 45 41 44 5f 43 4f 4d 50 4c 45  FLAG_READ_COMPLE
42b0: 54 45 20 20 20 20 20 20 20 20 20 20 20 3d 20 57  TE           = W
42c0: 49 4e 48 54 54 50 5f 43 41 4c 4c 42 41 43 4b 5f  INHTTP_CALLBACK_
42d0: 53 54 41 54 55 53 5f 52 45 41 44 5f 43 4f 4d 50  STATUS_READ_COMP
42e0: 4c 45 54 45 2c 0a 09 57 49 4e 48 54 54 50 5f 43  LETE,..WINHTTP_C
42f0: 41 4c 4c 42 41 43 4b 5f 46 4c 41 47 5f 57 52 49  ALLBACK_FLAG_WRI
4300: 54 45 5f 43 4f 4d 50 4c 45 54 45 20 20 20 20 20  TE_COMPLETE     
4310: 20 20 20 20 20 3d 20 57 49 4e 48 54 54 50 5f 43       = WINHTTP_C
4320: 41 4c 4c 42 41 43 4b 5f 53 54 41 54 55 53 5f 57  ALLBACK_STATUS_W
4330: 52 49 54 45 5f 43 4f 4d 50 4c 45 54 45 2c 0a 09  RITE_COMPLETE,..
4340: 57 49 4e 48 54 54 50 5f 43 41 4c 4c 42 41 43 4b  WINHTTP_CALLBACK
4350: 5f 46 4c 41 47 5f 52 45 51 55 45 53 54 5f 45 52  _FLAG_REQUEST_ER
4360: 52 4f 52 20 20 20 20 20 20 20 20 20 20 20 3d 20  ROR           = 
4370: 57 49 4e 48 54 54 50 5f 43 41 4c 4c 42 41 43 4b  WINHTTP_CALLBACK
4380: 5f 53 54 41 54 55 53 5f 52 45 51 55 45 53 54 5f  _STATUS_REQUEST_
4390: 45 52 52 4f 52 0a 7d 0a 0a 65 6e 75 6d 20 44 57  ERROR.}..enum DW
43a0: 4f 52 44 20 57 49 4e 48 54 54 50 5f 43 41 4c 4c  ORD WINHTTP_CALL
43b0: 42 41 43 4b 5f 46 4c 41 47 5f 47 45 54 50 52 4f  BACK_FLAG_GETPRO
43c0: 58 59 46 4f 52 55 52 4c 5f 43 4f 4d 50 4c 45 54  XYFORURL_COMPLET
43d0: 45 20 20 3d 20 57 49 4e 48 54 54 50 5f 43 41 4c  E  = WINHTTP_CAL
43e0: 4c 42 41 43 4b 5f 53 54 41 54 55 53 5f 47 45 54  LBACK_STATUS_GET
43f0: 50 52 4f 58 59 46 4f 52 55 52 4c 5f 43 4f 4d 50  PROXYFORURL_COMP
4400: 4c 45 54 45 3b 0a 0a 2f 2f 20 57 69 6e 64 6f 77  LETE;..// Window
4410: 73 20 38 2b 2f 32 30 31 32 2b 0a 73 74 61 74 69  s 8+/2012+.stati
4420: 63 20 69 66 20 28 5f 57 49 4e 33 32 5f 57 49 4e  c if (_WIN32_WIN
4430: 4e 54 20 3e 3d 20 30 78 36 30 32 29 09 7b 0a 20  NT >= 0x602).{. 
4440: 20 65 6e 75 6d 20 44 57 4f 52 44 20 57 49 4e 48   enum DWORD WINH
4450: 54 54 50 5f 43 41 4c 4c 42 41 43 4b 5f 46 4c 41  TTP_CALLBACK_FLA
4460: 47 5f 41 4c 4c 5f 43 4f 4d 50 4c 45 54 49 4f 4e  G_ALL_COMPLETION
4470: 53 20 20 20 20 20 20 20 20 3d 20 20 28 57 49 4e  S        =  (WIN
4480: 48 54 54 50 5f 43 41 4c 4c 42 41 43 4b 5f 53 54  HTTP_CALLBACK_ST
4490: 41 54 55 53 5f 53 45 4e 44 52 45 51 55 45 53 54  ATUS_SENDREQUEST
44a0: 5f 43 4f 4d 50 4c 45 54 45 0a 20 20 20 20 20 20  _COMPLETE.      
44b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
44c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
44d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
44e0: 20 20 7c 20 57 49 4e 48 54 54 50 5f 43 41 4c 4c    | WINHTTP_CALL
44f0: 42 41 43 4b 5f 53 54 41 54 55 53 5f 48 45 41 44  BACK_STATUS_HEAD
4500: 45 52 53 5f 41 56 41 49 4c 41 42 4c 45 0a 20 20  ERS_AVAILABLE.  
4510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4540: 20 20 20 20 20 20 7c 20 57 49 4e 48 54 54 50 5f        | WINHTTP_
4550: 43 41 4c 4c 42 41 43 4b 5f 53 54 41 54 55 53 5f  CALLBACK_STATUS_
4560: 44 41 54 41 5f 41 56 41 49 4c 41 42 4c 45 0a 20  DATA_AVAILABLE. 
4570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
45a0: 20 20 20 20 20 20 20 7c 20 57 49 4e 48 54 54 50         | WINHTTP
45b0: 5f 43 41 4c 4c 42 41 43 4b 5f 53 54 41 54 55 53  _CALLBACK_STATUS
45c0: 5f 52 45 41 44 5f 43 4f 4d 50 4c 45 54 45 0a 20  _READ_COMPLETE. 
45d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
45e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
45f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4600: 20 20 20 20 20 20 20 7c 20 57 49 4e 48 54 54 50         | WINHTTP
4610: 5f 43 41 4c 4c 42 41 43 4b 5f 53 54 41 54 55 53  _CALLBACK_STATUS
4620: 5f 57 52 49 54 45 5f 43 4f 4d 50 4c 45 54 45 0a  _WRITE_COMPLETE.
4630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4660: 20 20 20 20 20 20 20 20 7c 20 57 49 4e 48 54 54          | WINHTT
4670: 50 5f 43 41 4c 4c 42 41 43 4b 5f 53 54 41 54 55  P_CALLBACK_STATU
4680: 53 5f 52 45 51 55 45 53 54 5f 45 52 52 4f 52 29  S_REQUEST_ERROR)
4690: 3b 0a 7d 20 65 6c 73 65 20 7b 0a 20 20 65 6e 75  ;.} else {.  enu
46a0: 6d 20 44 57 4f 52 44 20 57 49 4e 48 54 54 50 5f  m DWORD WINHTTP_
46b0: 43 41 4c 4c 42 41 43 4b 5f 46 4c 41 47 5f 41 4c  CALLBACK_FLAG_AL
46c0: 4c 5f 43 4f 4d 50 4c 45 54 49 4f 4e 53 20 20 20  L_COMPLETIONS   
46d0: 20 20 20 20 20 3d 20 20 28 57 49 4e 48 54 54 50       =  (WINHTTP
46e0: 5f 43 41 4c 4c 42 41 43 4b 5f 53 54 41 54 55 53  _CALLBACK_STATUS
46f0: 5f 53 45 4e 44 52 45 51 55 45 53 54 5f 43 4f 4d  _SENDREQUEST_COM
4700: 50 4c 45 54 45 0a 20 20 20 20 20 20 20 20 20 20  PLETE.          
4710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20                | 
4740: 57 49 4e 48 54 54 50 5f 43 41 4c 4c 42 41 43 4b  WINHTTP_CALLBACK
4750: 5f 53 54 41 54 55 53 5f 48 45 41 44 45 52 53 5f  _STATUS_HEADERS_
4760: 41 56 41 49 4c 41 42 4c 45 0a 20 20 20 20 20 20  AVAILABLE.      
4770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
47a0: 20 20 7c 20 57 49 4e 48 54 54 50 5f 43 41 4c 4c    | WINHTTP_CALL
47b0: 42 41 43 4b 5f 53 54 41 54 55 53 5f 44 41 54 41  BACK_STATUS_DATA
47c0: 5f 41 56 41 49 4c 41 42 4c 45 0a 20 20 20 20 20  _AVAILABLE.     
47d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
47e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
47f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4800: 20 20 20 7c 20 57 49 4e 48 54 54 50 5f 43 41 4c     | WINHTTP_CAL
4810: 4c 42 41 43 4b 5f 53 54 41 54 55 53 5f 52 45 41  LBACK_STATUS_REA
4820: 44 5f 43 4f 4d 50 4c 45 54 45 0a 20 20 20 20 20  D_COMPLETE.     
4830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4860: 20 20 20 7c 20 57 49 4e 48 54 54 50 5f 43 41 4c     | WINHTTP_CAL
4870: 4c 42 41 43 4b 5f 53 54 41 54 55 53 5f 57 52 49  LBACK_STATUS_WRI
4880: 54 45 5f 43 4f 4d 50 4c 45 54 45 0a 20 20 20 20  TE_COMPLETE.    
4890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
48a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
48b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
48c0: 20 20 20 20 7c 20 57 49 4e 48 54 54 50 5f 43 41      | WINHTTP_CA
48d0: 4c 4c 42 41 43 4b 5f 53 54 41 54 55 53 5f 52 45  LLBACK_STATUS_RE
48e0: 51 55 45 53 54 5f 45 52 52 4f 52 20 20 20 20 20  QUEST_ERROR     
48f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4920: 20 20 20 0a 20 20 20 20 20 20 20 20 20 20 20 20     .            
4930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4950: 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 57 49              | WI
4960: 4e 48 54 54 50 5f 43 41 4c 4c 42 41 43 4b 5f 53  NHTTP_CALLBACK_S
4970: 54 41 54 55 53 5f 47 45 54 50 52 4f 58 59 46 4f  TATUS_GETPROXYFO
4980: 52 55 52 4c 5f 43 4f 4d 50 4c 45 54 45 29 3b 0a  RURL_COMPLETE);.
4990: 7d 0a 0a 65 6e 75 6d 20 44 57 4f 52 44 20 20 57  }..enum DWORD  W
49a0: 49 4e 48 54 54 50 5f 43 41 4c 4c 42 41 43 4b 5f  INHTTP_CALLBACK_
49b0: 46 4c 41 47 5f 41 4c 4c 5f 4e 4f 54 49 46 49 43  FLAG_ALL_NOTIFIC
49c0: 41 54 49 4f 4e 53 20 20 20 20 20 20 3d 20 20 30  ATIONS      =  0
49d0: 78 66 66 66 66 66 66 66 66 3b 0a 0a 65 6e 75 6d  xffffffff;..enum
49e0: 20 57 49 4e 48 54 54 50 5f 49 4e 56 41 4c 49 44   WINHTTP_INVALID
49f0: 5f 53 54 41 54 55 53 5f 43 41 4c 4c 42 41 43 4b  _STATUS_CALLBACK
4a00: 20 20 20 20 20 20 20 20 3d 20 28 63 61 73 74 28          = (cast(
4a10: 57 49 4e 48 54 54 50 5f 53 54 41 54 55 53 5f 43  WINHTTP_STATUS_C
4a20: 41 4c 4c 42 41 43 4b 29 28 2d 31 4c 29 29 3b 0a  ALLBACK)(-1L));.
4a30: 0a 65 6e 75 6d 20 3a 20 44 57 4f 52 44 20 7b 0a  .enum : DWORD {.
4a40: 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f 4d  .WINHTTP_QUERY_M
4a50: 49 4d 45 5f 56 45 52 53 49 4f 4e 20 20 20 20 20  IME_VERSION     
4a60: 20 20 20 20 20 20 20 20 20 20 3d 20 30 2c 0a 09            = 0,..
4a70: 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f 43 4f  WINHTTP_QUERY_CO
4a80: 4e 54 45 4e 54 5f 54 59 50 45 20 20 20 20 20 20  NTENT_TYPE      
4a90: 20 20 20 20 20 20 20 20 20 3d 20 31 2c 0a 09 57           = 1,..W
4aa0: 49 4e 48 54 54 50 5f 51 55 45 52 59 5f 43 4f 4e  INHTTP_QUERY_CON
4ab0: 54 45 4e 54 5f 54 52 41 4e 53 46 45 52 5f 45 4e  TENT_TRANSFER_EN
4ac0: 43 4f 44 49 4e 47 20 20 3d 20 32 2c 0a 09 57 49  CODING  = 2,..WI
4ad0: 4e 48 54 54 50 5f 51 55 45 52 59 5f 43 4f 4e 54  NHTTP_QUERY_CONT
4ae0: 45 4e 54 5f 49 44 20 20 20 20 20 20 20 20 20 20  ENT_ID          
4af0: 20 20 20 20 20 20 20 3d 20 33 2c 0a 09 57 49 4e         = 3,..WIN
4b00: 48 54 54 50 5f 51 55 45 52 59 5f 43 4f 4e 54 45  HTTP_QUERY_CONTE
4b10: 4e 54 5f 44 45 53 43 52 49 50 54 49 4f 4e 20 20  NT_DESCRIPTION  
4b20: 20 20 20 20 20 20 3d 20 34 2c 0a 09 57 49 4e 48        = 4,..WINH
4b30: 54 54 50 5f 51 55 45 52 59 5f 43 4f 4e 54 45 4e  TTP_QUERY_CONTEN
4b40: 54 5f 4c 45 4e 47 54 48 20 20 20 20 20 20 20 20  T_LENGTH        
4b50: 20 20 20 20 20 3d 20 35 2c 0a 09 57 49 4e 48 54       = 5,..WINHT
4b60: 54 50 5f 51 55 45 52 59 5f 43 4f 4e 54 45 4e 54  TP_QUERY_CONTENT
4b70: 5f 4c 41 4e 47 55 41 47 45 20 20 20 20 20 20 20  _LANGUAGE       
4b80: 20 20 20 20 3d 20 36 2c 0a 09 57 49 4e 48 54 54      = 6,..WINHTT
4b90: 50 5f 51 55 45 52 59 5f 41 4c 4c 4f 57 20 20 20  P_QUERY_ALLOW   
4ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4bb0: 20 20 20 3d 20 37 2c 0a 09 57 49 4e 48 54 54 50     = 7,..WINHTTP
4bc0: 5f 51 55 45 52 59 5f 50 55 42 4c 49 43 20 20 20  _QUERY_PUBLIC   
4bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4be0: 20 20 3d 20 38 2c 0a 09 57 49 4e 48 54 54 50 5f    = 8,..WINHTTP_
4bf0: 51 55 45 52 59 5f 44 41 54 45 20 20 20 20 20 20  QUERY_DATE      
4c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4c10: 20 3d 20 39 2c 0a 09 57 49 4e 48 54 54 50 5f 51   = 9,..WINHTTP_Q
4c20: 55 45 52 59 5f 45 58 50 49 52 45 53 20 20 20 20  UERY_EXPIRES    
4c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4c40: 3d 20 31 30 2c 0a 09 57 49 4e 48 54 54 50 5f 51  = 10,..WINHTTP_Q
4c50: 55 45 52 59 5f 4c 41 53 54 5f 4d 4f 44 49 46 49  UERY_LAST_MODIFI
4c60: 45 44 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ED              
4c70: 3d 20 31 31 2c 0a 09 57 49 4e 48 54 54 50 5f 51  = 11,..WINHTTP_Q
4c80: 55 45 52 59 5f 4d 45 53 53 41 47 45 5f 49 44 20  UERY_MESSAGE_ID 
4c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4ca0: 3d 20 31 32 2c 0a 09 57 49 4e 48 54 54 50 5f 51  = 12,..WINHTTP_Q
4cb0: 55 45 52 59 5f 55 52 49 20 20 20 20 20 20 20 20  UERY_URI        
4cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4cd0: 3d 20 31 33 2c 0a 09 57 49 4e 48 54 54 50 5f 51  = 13,..WINHTTP_Q
4ce0: 55 45 52 59 5f 44 45 52 49 56 45 44 5f 46 52 4f  UERY_DERIVED_FRO
4cf0: 4d 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  M               
4d00: 3d 20 31 34 2c 0a 09 57 49 4e 48 54 54 50 5f 51  = 14,..WINHTTP_Q
4d10: 55 45 52 59 5f 43 4f 53 54 20 20 20 20 20 20 20  UERY_COST       
4d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4d30: 3d 20 31 35 2c 0a 09 57 49 4e 48 54 54 50 5f 51  = 15,..WINHTTP_Q
4d40: 55 45 52 59 5f 4c 49 4e 4b 20 20 20 20 20 20 20  UERY_LINK       
4d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4d60: 3d 20 31 36 2c 0a 09 57 49 4e 48 54 54 50 5f 51  = 16,..WINHTTP_Q
4d70: 55 45 52 59 5f 50 52 41 47 4d 41 20 20 20 20 20  UERY_PRAGMA     
4d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4d90: 3d 20 31 37 2c 0a 09 57 49 4e 48 54 54 50 5f 51  = 17,..WINHTTP_Q
4da0: 55 45 52 59 5f 56 45 52 53 49 4f 4e 20 20 20 20  UERY_VERSION    
4db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4dc0: 3d 20 31 38 2c 20 20 0a 09 57 49 4e 48 54 54 50  = 18,  ..WINHTTP
4dd0: 5f 51 55 45 52 59 5f 53 54 41 54 55 53 5f 43 4f  _QUERY_STATUS_CO
4de0: 44 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20  DE              
4df0: 20 20 3d 20 31 39 2c 20 20 0a 09 57 49 4e 48 54    = 19,  ..WINHT
4e00: 54 50 5f 51 55 45 52 59 5f 53 54 41 54 55 53 5f  TP_QUERY_STATUS_
4e10: 54 45 58 54 20 20 20 20 20 20 20 20 20 20 20 20  TEXT            
4e20: 20 20 20 20 3d 20 32 30 2c 20 20 0a 09 57 49 4e      = 20,  ..WIN
4e30: 48 54 54 50 5f 51 55 45 52 59 5f 52 41 57 5f 48  HTTP_QUERY_RAW_H
4e40: 45 41 44 45 52 53 20 20 20 20 20 20 20 20 20 20  EADERS          
4e50: 20 20 20 20 20 20 3d 20 32 31 2c 20 20 0a 09 57        = 21,  ..W
4e60: 49 4e 48 54 54 50 5f 51 55 45 52 59 5f 52 41 57  INHTTP_QUERY_RAW
4e70: 5f 48 45 41 44 45 52 53 5f 43 52 4c 46 20 20 20  _HEADERS_CRLF   
4e80: 20 20 20 20 20 20 20 20 3d 20 32 32 2c 20 20 0a          = 22,  .
4e90: 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f 43  .WINHTTP_QUERY_C
4ea0: 4f 4e 4e 45 43 54 49 4f 4e 20 20 20 20 20 20 20  ONNECTION       
4eb0: 20 20 20 20 20 20 20 20 20 20 3d 20 32 33 2c 0a            = 23,.
4ec0: 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f 41  .WINHTTP_QUERY_A
4ed0: 43 43 45 50 54 20 20 20 20 20 20 20 20 20 20 20  CCEPT           
4ee0: 20 20 20 20 20 20 20 20 20 20 3d 20 32 34 2c 0a            = 24,.
4ef0: 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f 41  .WINHTTP_QUERY_A
4f00: 43 43 45 50 54 5f 43 48 41 52 53 45 54 20 20 20  CCEPT_CHARSET   
4f10: 20 20 20 20 20 20 20 20 20 20 3d 20 32 35 2c 0a            = 25,.
4f20: 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f 41  .WINHTTP_QUERY_A
4f30: 43 43 45 50 54 5f 45 4e 43 4f 44 49 4e 47 20 20  CCEPT_ENCODING  
4f40: 20 20 20 20 20 20 20 20 20 20 3d 20 32 36 2c 0a            = 26,.
4f50: 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f 41  .WINHTTP_QUERY_A
4f60: 43 43 45 50 54 5f 4c 41 4e 47 55 41 47 45 20 20  CCEPT_LANGUAGE  
4f70: 20 20 20 20 20 20 20 20 20 20 3d 20 32 37 2c 0a            = 27,.
4f80: 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f 41  .WINHTTP_QUERY_A
4f90: 55 54 48 4f 52 49 5a 41 54 49 4f 4e 20 20 20 20  UTHORIZATION    
4fa0: 20 20 20 20 20 20 20 20 20 20 3d 20 32 38 2c 0a            = 28,.
4fb0: 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f 43  .WINHTTP_QUERY_C
4fc0: 4f 4e 54 45 4e 54 5f 45 4e 43 4f 44 49 4e 47 20  ONTENT_ENCODING 
4fd0: 20 20 20 20 20 20 20 20 20 20 3d 20 32 39 2c 0a            = 29,.
4fe0: 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f 46  .WINHTTP_QUERY_F
4ff0: 4f 52 57 41 52 44 45 44 20 20 20 20 20 20 20 20  ORWARDED        
5000: 20 20 20 20 20 20 20 20 20 20 3d 20 33 30 2c 0a            = 30,.
5010: 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f 46  .WINHTTP_QUERY_F
5020: 52 4f 4d 20 20 20 20 20 20 20 20 20 20 20 20 20  ROM             
5030: 20 20 20 20 20 20 20 20 20 20 3d 20 33 31 2c 0a            = 31,.
5040: 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f 49  .WINHTTP_QUERY_I
5050: 46 5f 4d 4f 44 49 46 49 45 44 5f 53 49 4e 43 45  F_MODIFIED_SINCE
5060: 20 20 20 20 20 20 20 20 20 20 3d 20 33 32 2c 0a            = 32,.
5070: 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f 4c  .WINHTTP_QUERY_L
5080: 4f 43 41 54 49 4f 4e 20 20 20 20 20 20 20 20 20  OCATION         
5090: 20 20 20 20 20 20 20 20 20 20 3d 20 33 33 2c 0a            = 33,.
50a0: 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f 4f  .WINHTTP_QUERY_O
50b0: 52 49 47 5f 55 52 49 20 20 20 20 20 20 20 20 20  RIG_URI         
50c0: 20 20 20 20 20 20 20 20 20 20 3d 20 33 34 2c 0a            = 34,.
50d0: 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f 52  .WINHTTP_QUERY_R
50e0: 45 46 45 52 45 52 20 20 20 20 20 20 20 20 20 20  EFERER          
50f0: 20 20 20 20 20 20 20 20 20 20 3d 20 33 35 2c 0a            = 35,.
5100: 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f 52  .WINHTTP_QUERY_R
5110: 45 54 52 59 5f 41 46 54 45 52 20 20 20 20 20 20  ETRY_AFTER      
5120: 20 20 20 20 20 20 20 20 20 20 3d 20 33 36 2c 0a            = 36,.
5130: 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f 53  .WINHTTP_QUERY_S
5140: 45 52 56 45 52 20 20 20 20 20 20 20 20 20 20 20  ERVER           
5150: 20 20 20 20 20 20 20 20 20 20 3d 20 33 37 2c 0a            = 37,.
5160: 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f 54  .WINHTTP_QUERY_T
5170: 49 54 4c 45 20 20 20 20 20 20 20 20 20 20 20 20  ITLE            
5180: 20 20 20 20 20 20 20 20 20 20 3d 20 33 38 2c 0a            = 38,.
5190: 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f 55  .WINHTTP_QUERY_U
51a0: 53 45 52 5f 41 47 45 4e 54 20 20 20 20 20 20 20  SER_AGENT       
51b0: 20 20 20 20 20 20 20 20 20 20 3d 20 33 39 2c 0a            = 39,.
51c0: 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f 57  .WINHTTP_QUERY_W
51d0: 57 57 5f 41 55 54 48 45 4e 54 49 43 41 54 45 20  WW_AUTHENTICATE 
51e0: 20 20 20 20 20 20 20 20 20 20 3d 20 34 30 2c 0a            = 40,.
51f0: 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f 50  .WINHTTP_QUERY_P
5200: 52 4f 58 59 5f 41 55 54 48 45 4e 54 49 43 41 54  ROXY_AUTHENTICAT
5210: 45 20 20 20 20 20 20 20 20 20 3d 20 34 31 2c 0a  E         = 41,.
5220: 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f 41  .WINHTTP_QUERY_A
5230: 43 43 45 50 54 5f 52 41 4e 47 45 53 20 20 20 20  CCEPT_RANGES    
5240: 20 20 20 20 20 20 20 20 20 20 3d 20 34 32 2c 0a            = 42,.
5250: 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f 53  .WINHTTP_QUERY_S
5260: 45 54 5f 43 4f 4f 4b 49 45 20 20 20 20 20 20 20  ET_COOKIE       
5270: 20 20 20 20 20 20 20 20 20 20 3d 20 34 33 2c 0a            = 43,.
5280: 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f 43  .WINHTTP_QUERY_C
5290: 4f 4f 4b 49 45 20 20 20 20 20 20 20 20 20 20 20  OOKIE           
52a0: 20 20 20 20 20 20 20 20 20 20 3d 20 34 34 2c 0a            = 44,.
52b0: 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f 52  .WINHTTP_QUERY_R
52c0: 45 51 55 45 53 54 5f 4d 45 54 48 4f 44 20 20 20  EQUEST_METHOD   
52d0: 20 20 20 20 20 20 20 20 20 20 3d 20 34 35 2c 20            = 45, 
52e0: 20 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59   ..WINHTTP_QUERY
52f0: 5f 52 45 46 52 45 53 48 20 20 20 20 20 20 20 20  _REFRESH        
5300: 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 34 36              = 46
5310: 2c 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59  ,..WINHTTP_QUERY
5320: 5f 43 4f 4e 54 45 4e 54 5f 44 49 53 50 4f 53 49  _CONTENT_DISPOSI
5330: 54 49 4f 4e 20 20 20 20 20 20 20 20 3d 20 34 37  TION        = 47
5340: 2c 0a 0a 09 2f 2f 20 48 54 54 50 20 31 2e 31 20  ,...// HTTP 1.1 
5350: 64 65 66 69 6e 65 64 20 68 65 61 64 65 72 73 0a  defined headers.
5360: 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f  ..WINHTTP_QUERY_
5370: 41 47 45 20 20 20 20 20 20 20 20 20 20 20 20 20  AGE             
5380: 20 20 20 20 20 20 20 20 20 20 20 3d 20 34 38 2c             = 48,
5390: 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f  ..WINHTTP_QUERY_
53a0: 43 41 43 48 45 5f 43 4f 4e 54 52 4f 4c 20 20 20  CACHE_CONTROL   
53b0: 20 20 20 20 20 20 20 20 20 20 20 3d 20 34 39 2c             = 49,
53c0: 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f  ..WINHTTP_QUERY_
53d0: 43 4f 4e 54 45 4e 54 5f 42 41 53 45 20 20 20 20  CONTENT_BASE    
53e0: 20 20 20 20 20 20 20 20 20 20 20 3d 20 35 30 2c             = 50,
53f0: 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f  ..WINHTTP_QUERY_
5400: 43 4f 4e 54 45 4e 54 5f 4c 4f 43 41 54 49 4f 4e  CONTENT_LOCATION
5410: 20 20 20 20 20 20 20 20 20 20 20 3d 20 35 31 2c             = 51,
5420: 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f  ..WINHTTP_QUERY_
5430: 43 4f 4e 54 45 4e 54 5f 4d 44 35 20 20 20 20 20  CONTENT_MD5     
5440: 20 20 20 20 20 20 20 20 20 20 20 3d 20 35 32 2c             = 52,
5450: 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f  ..WINHTTP_QUERY_
5460: 43 4f 4e 54 45 4e 54 5f 52 41 4e 47 45 20 20 20  CONTENT_RANGE   
5470: 20 20 20 20 20 20 20 20 20 20 20 3d 20 35 33 2c             = 53,
5480: 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f  ..WINHTTP_QUERY_
5490: 45 54 41 47 20 20 20 20 20 20 20 20 20 20 20 20  ETAG            
54a0: 20 20 20 20 20 20 20 20 20 20 20 3d 20 35 34 2c             = 54,
54b0: 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f  ..WINHTTP_QUERY_
54c0: 48 4f 53 54 20 20 20 20 20 20 20 20 20 20 20 20  HOST            
54d0: 20 20 20 20 20 20 20 20 20 20 20 3d 20 35 35 2c             = 55,
54e0: 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f  ..WINHTTP_QUERY_
54f0: 49 46 5f 4d 41 54 43 48 20 20 20 20 20 20 20 20  IF_MATCH        
5500: 20 20 20 20 20 20 20 20 20 20 20 3d 20 35 36 2c             = 56,
5510: 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f  ..WINHTTP_QUERY_
5520: 49 46 5f 4e 4f 4e 45 5f 4d 41 54 43 48 20 20 20  IF_NONE_MATCH   
5530: 20 20 20 20 20 20 20 20 20 20 20 3d 20 35 37 2c             = 57,
5540: 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f  ..WINHTTP_QUERY_
5550: 49 46 5f 52 41 4e 47 45 20 20 20 20 20 20 20 20  IF_RANGE        
5560: 20 20 20 20 20 20 20 20 20 20 20 3d 20 35 38 2c             = 58,
5570: 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f  ..WINHTTP_QUERY_
5580: 49 46 5f 55 4e 4d 4f 44 49 46 49 45 44 5f 53 49  IF_UNMODIFIED_SI
5590: 4e 43 45 20 20 20 20 20 20 20 20 3d 20 35 39 2c  NCE        = 59,
55a0: 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f  ..WINHTTP_QUERY_
55b0: 4d 41 58 5f 46 4f 52 57 41 52 44 53 20 20 20 20  MAX_FORWARDS    
55c0: 20 20 20 20 20 20 20 20 20 20 20 3d 20 36 30 2c             = 60,
55d0: 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f  ..WINHTTP_QUERY_
55e0: 50 52 4f 58 59 5f 41 55 54 48 4f 52 49 5a 41 54  PROXY_AUTHORIZAT
55f0: 49 4f 4e 20 20 20 20 20 20 20 20 3d 20 36 31 2c  ION        = 61,
5600: 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f  ..WINHTTP_QUERY_
5610: 52 41 4e 47 45 20 20 20 20 20 20 20 20 20 20 20  RANGE           
5620: 20 20 20 20 20 20 20 20 20 20 20 3d 20 36 32 2c             = 62,
5630: 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f  ..WINHTTP_QUERY_
5640: 54 52 41 4e 53 46 45 52 5f 45 4e 43 4f 44 49 4e  TRANSFER_ENCODIN
5650: 47 20 20 20 20 20 20 20 20 20 20 3d 20 36 33 2c  G          = 63,
5660: 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f  ..WINHTTP_QUERY_
5670: 55 50 47 52 41 44 45 20 20 20 20 20 20 20 20 20  UPGRADE         
5680: 20 20 20 20 20 20 20 20 20 20 20 3d 20 36 34 2c             = 64,
5690: 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f  ..WINHTTP_QUERY_
56a0: 56 41 52 59 20 20 20 20 20 20 20 20 20 20 20 20  VARY            
56b0: 20 20 20 20 20 20 20 20 20 20 20 3d 20 36 35 2c             = 65,
56c0: 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f  ..WINHTTP_QUERY_
56d0: 56 49 41 20 20 20 20 20 20 20 20 20 20 20 20 20  VIA             
56e0: 20 20 20 20 20 20 20 20 20 20 20 3d 20 36 36 2c             = 66,
56f0: 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f  ..WINHTTP_QUERY_
5700: 57 41 52 4e 49 4e 47 20 20 20 20 20 20 20 20 20  WARNING         
5710: 20 20 20 20 20 20 20 20 20 20 20 3d 20 36 37 2c             = 67,
5720: 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f  ..WINHTTP_QUERY_
5730: 45 58 50 45 43 54 20 20 20 20 20 20 20 20 20 20  EXPECT          
5740: 20 20 20 20 20 20 20 20 20 20 20 3d 20 36 38 2c             = 68,
5750: 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f  ..WINHTTP_QUERY_
5760: 50 52 4f 58 59 5f 43 4f 4e 4e 45 43 54 49 4f 4e  PROXY_CONNECTION
5770: 20 20 20 20 20 20 20 20 20 20 20 3d 20 36 39 2c             = 69,
5780: 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59 5f  ..WINHTTP_QUERY_
5790: 55 4e 4c 45 53 53 5f 4d 4f 44 49 46 49 45 44 5f  UNLESS_MODIFIED_
57a0: 53 49 4e 43 45 20 20 20 20 20 20 3d 20 37 30 2c  SINCE      = 70,
57b0: 0a 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59  ...WINHTTP_QUERY
57c0: 5f 50 52 4f 58 59 5f 53 55 50 50 4f 52 54 20 20  _PROXY_SUPPORT  
57d0: 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 37 35              = 75
57e0: 2c 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59  ,..WINHTTP_QUERY
57f0: 5f 41 55 54 48 45 4e 54 49 43 41 54 49 4f 4e 5f  _AUTHENTICATION_
5800: 49 4e 46 4f 20 20 20 20 20 20 20 20 3d 20 37 36  INFO        = 76
5810: 2c 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59  ,..WINHTTP_QUERY
5820: 5f 50 41 53 53 50 4f 52 54 5f 55 52 4c 53 20 20  _PASSPORT_URLS  
5830: 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 37 37              = 77
5840: 2c 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52 59  ,..WINHTTP_QUERY
5850: 5f 50 41 53 53 50 4f 52 54 5f 43 4f 4e 46 49 47  _PASSPORT_CONFIG
5860: 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 37 38              = 78
5870: 2c 0a 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52  ,...WINHTTP_QUER
5880: 59 5f 4d 41 58 20 20 20 20 20 20 20 20 20 20 20  Y_MAX           
5890: 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 37               = 7
58a0: 38 2c 0a 0a 09 57 49 4e 48 54 54 50 5f 51 55 45  8,...WINHTTP_QUE
58b0: 52 59 5f 43 55 53 54 4f 4d 20 20 20 20 20 20 20  RY_CUSTOM       
58c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20                = 
58d0: 36 35 35 33 35 2c 0a 0a 09 57 49 4e 48 54 54 50  65535,...WINHTTP
58e0: 5f 51 55 45 52 59 5f 46 4c 41 47 5f 52 45 51 55  _QUERY_FLAG_REQU
58f0: 45 53 54 5f 48 45 41 44 45 52 53 20 20 20 20 20  EST_HEADERS     
5900: 20 20 20 20 3d 20 30 78 38 30 30 30 30 30 30 30      = 0x80000000
5910: 2c 0a 0a 09 57 49 4e 48 54 54 50 5f 51 55 45 52  ,...WINHTTP_QUER
5920: 59 5f 46 4c 41 47 5f 53 59 53 54 45 4d 54 49 4d  Y_FLAG_SYSTEMTIM
5930: 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d  E              =
5940: 20 30 78 34 30 30 30 30 30 30 30 2c 0a 0a 09 57   0x40000000,...W
5950: 49 4e 48 54 54 50 5f 51 55 45 52 59 5f 46 4c 41  INHTTP_QUERY_FLA
5960: 47 5f 4e 55 4d 42 45 52 20 20 20 20 20 20 20 20  G_NUMBER        
5970: 20 20 20 20 20 20 20 20 20 20 3d 20 30 78 32 30            = 0x20
5980: 30 30 30 30 30 30 0a 7d 0a 0a 65 6e 75 6d 20 3a  000000.}..enum :
5990: 20 44 57 4f 52 44 20 7b 0a 09 48 54 54 50 5f 53   DWORD {..HTTP_S
59a0: 54 41 54 55 53 5f 43 4f 4e 54 49 4e 55 45 20 20  TATUS_CONTINUE  
59b0: 20 20 20 20 20 20 20 20 20 20 3d 20 31 30 30 2c            = 100,
59c0: 20 0a 09 48 54 54 50 5f 53 54 41 54 55 53 5f 53   ..HTTP_STATUS_S
59d0: 57 49 54 43 48 5f 50 52 4f 54 4f 43 4f 4c 53 20  WITCH_PROTOCOLS 
59e0: 20 20 20 3d 20 31 30 31 2c 20 0a 0a 09 48 54 54     = 101, ...HTT
59f0: 50 5f 53 54 41 54 55 53 5f 4f 4b 20 20 20 20 20  P_STATUS_OK     
5a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 32               = 2
5a10: 30 30 2c 20 0a 09 48 54 54 50 5f 53 54 41 54 55  00, ..HTTP_STATU
5a20: 53 5f 43 52 45 41 54 45 44 20 20 20 20 20 20 20  S_CREATED       
5a30: 20 20 20 20 20 20 3d 20 32 30 31 2c 20 0a 09 48        = 201, ..H
5a40: 54 54 50 5f 53 54 41 54 55 53 5f 41 43 43 45 50  TTP_STATUS_ACCEP
5a50: 54 45 44 20 20 20 20 20 20 20 20 20 20 20 20 3d  TED            =
5a60: 20 32 30 32 2c 20 0a 09 48 54 54 50 5f 53 54 41   202, ..HTTP_STA
5a70: 54 55 53 5f 50 41 52 54 49 41 4c 20 20 20 20 20  TUS_PARTIAL     
5a80: 20 20 20 20 20 20 20 20 3d 20 32 30 33 2c 20 0a          = 203, .
5a90: 09 48 54 54 50 5f 53 54 41 54 55 53 5f 4e 4f 5f  .HTTP_STATUS_NO_
5aa0: 43 4f 4e 54 45 4e 54 20 20 20 20 20 20 20 20 20  CONTENT         
5ab0: 20 3d 20 32 30 34 2c 20 0a 09 48 54 54 50 5f 53   = 204, ..HTTP_S
5ac0: 54 41 54 55 53 5f 52 45 53 45 54 5f 43 4f 4e 54  TATUS_RESET_CONT
5ad0: 45 4e 54 20 20 20 20 20 20 20 3d 20 32 30 35 2c  ENT       = 205,
5ae0: 20 0a 09 48 54 54 50 5f 53 54 41 54 55 53 5f 50   ..HTTP_STATUS_P
5af0: 41 52 54 49 41 4c 5f 43 4f 4e 54 45 4e 54 20 20  ARTIAL_CONTENT  
5b00: 20 20 20 3d 20 32 30 36 2c 20 0a 09 48 54 54 50     = 206, ..HTTP
5b10: 5f 53 54 41 54 55 53 5f 57 45 42 44 41 56 5f 4d  _STATUS_WEBDAV_M
5b20: 55 4c 54 49 5f 53 54 41 54 55 53 20 3d 20 32 30  ULTI_STATUS = 20
5b30: 37 2c 20 0a 0a 09 48 54 54 50 5f 53 54 41 54 55  7, ...HTTP_STATU
5b40: 53 5f 41 4d 42 49 47 55 4f 55 53 20 20 20 20 20  S_AMBIGUOUS     
5b50: 20 20 20 20 20 20 3d 20 33 30 30 2c 20 0a 09 48        = 300, ..H
5b60: 54 54 50 5f 53 54 41 54 55 53 5f 4d 4f 56 45 44  TTP_STATUS_MOVED
5b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d                 =
5b80: 20 33 30 31 2c 20 0a 09 48 54 54 50 5f 53 54 41   301, ..HTTP_STA
5b90: 54 55 53 5f 52 45 44 49 52 45 43 54 20 20 20 20  TUS_REDIRECT    
5ba0: 20 20 20 20 20 20 20 20 3d 20 33 30 32 2c 20 0a          = 302, .
5bb0: 09 48 54 54 50 5f 53 54 41 54 55 53 5f 52 45 44  .HTTP_STATUS_RED
5bc0: 49 52 45 43 54 5f 4d 45 54 48 4f 44 20 20 20 20  IRECT_METHOD    
5bd0: 20 3d 20 33 30 33 2c 20 0a 09 48 54 54 50 5f 53   = 303, ..HTTP_S
5be0: 54 41 54 55 53 5f 4e 4f 54 5f 4d 4f 44 49 46 49  TATUS_NOT_MODIFI
5bf0: 45 44 20 20 20 20 20 20 20 20 3d 20 33 30 34 2c  ED        = 304,
5c00: 20 0a 09 48 54 54 50 5f 53 54 41 54 55 53 5f 55   ..HTTP_STATUS_U
5c10: 53 45 5f 50 52 4f 58 59 20 20 20 20 20 20 20 20  SE_PROXY        
5c20: 20 20 20 3d 20 33 30 35 2c 20 0a 09 48 54 54 50     = 305, ..HTTP
5c30: 5f 53 54 41 54 55 53 5f 52 45 44 49 52 45 43 54  _STATUS_REDIRECT
5c40: 5f 4b 45 45 50 5f 56 45 52 42 20 20 3d 20 33 30  _KEEP_VERB  = 30
5c50: 37 2c 20 0a 0a 09 48 54 54 50 5f 53 54 41 54 55  7, ...HTTP_STATU
5c60: 53 5f 42 41 44 5f 52 45 51 55 45 53 54 20 20 20  S_BAD_REQUEST   
5c70: 20 20 20 20 3d 20 34 30 30 2c 20 0a 09 48 54 54      = 400, ..HTT
5c80: 50 5f 53 54 41 54 55 53 5f 44 45 4e 49 45 44 20  P_STATUS_DENIED 
5c90: 20 20 20 20 20 20 20 20 20 20 20 3d 20 34 30 31             = 401
5ca0: 2c 20 0a 09 48 54 54 50 5f 53 54 41 54 55 53 5f  , ..HTTP_STATUS_
5cb0: 50 41 59 4d 45 4e 54 5f 52 45 51 20 20 20 20 20  PAYMENT_REQ     
5cc0: 20 20 3d 20 34 30 32 2c 20 0a 09 48 54 54 50 5f    = 402, ..HTTP_
5cd0: 53 54 41 54 55 53 5f 46 4f 52 42 49 44 44 45 4e  STATUS_FORBIDDEN
5ce0: 20 20 20 20 20 20 20 20 20 3d 20 34 30 33 2c 20           = 403, 
5cf0: 0a 09 48 54 54 50 5f 53 54 41 54 55 53 5f 4e 4f  ..HTTP_STATUS_NO
5d00: 54 5f 46 4f 55 4e 44 20 20 20 20 20 20 20 20 20  T_FOUND         
5d10: 3d 20 34 30 34 2c 20 0a 09 48 54 54 50 5f 53 54  = 404, ..HTTP_ST
5d20: 41 54 55 53 5f 42 41 44 5f 4d 45 54 48 4f 44 20  ATUS_BAD_METHOD 
5d30: 20 20 20 20 20 20 20 3d 20 34 30 35 2c 20 0a 09         = 405, ..
5d40: 48 54 54 50 5f 53 54 41 54 55 53 5f 4e 4f 4e 45  HTTP_STATUS_NONE
5d50: 5f 41 43 43 45 50 54 41 42 4c 45 20 20 20 3d 20  _ACCEPTABLE   = 
5d60: 34 30 36 2c 20 0a 09 48 54 54 50 5f 53 54 41 54  406, ..HTTP_STAT
5d70: 55 53 5f 50 52 4f 58 59 5f 41 55 54 48 5f 52 45  US_PROXY_AUTH_RE
5d80: 51 20 20 20 20 3d 20 34 30 37 2c 20 0a 09 48 54  Q    = 407, ..HT
5d90: 54 50 5f 53 54 41 54 55 53 5f 52 45 51 55 45 53  TP_STATUS_REQUES
5da0: 54 5f 54 49 4d 45 4f 55 54 20 20 20 3d 20 34 30  T_TIMEOUT   = 40
5db0: 38 2c 20 0a 09 48 54 54 50 5f 53 54 41 54 55 53  8, ..HTTP_STATUS
5dc0: 5f 43 4f 4e 46 4c 49 43 54 20 20 20 20 20 20 20  _CONFLICT       
5dd0: 20 20 20 3d 20 34 30 39 2c 20 0a 09 48 54 54 50     = 409, ..HTTP
5de0: 5f 53 54 41 54 55 53 5f 47 4f 4e 45 20 20 20 20  _STATUS_GONE    
5df0: 20 20 20 20 20 20 20 20 20 20 3d 20 34 31 30 2c            = 410,
5e00: 20 0a 09 48 54 54 50 5f 53 54 41 54 55 53 5f 4c   ..HTTP_STATUS_L
5e10: 45 4e 47 54 48 5f 52 45 51 55 49 52 45 44 20 20  ENGTH_REQUIRED  
5e20: 20 3d 20 34 31 31 2c 20 0a 09 48 54 54 50 5f 53   = 411, ..HTTP_S
5e30: 54 41 54 55 53 5f 50 52 45 43 4f 4e 44 5f 46 41  TATUS_PRECOND_FA
5e40: 49 4c 45 44 20 20 20 20 3d 20 34 31 32 2c 20 0a  ILED    = 412, .
5e50: 09 48 54 54 50 5f 53 54 41 54 55 53 5f 52 45 51  .HTTP_STATUS_REQ
5e60: 55 45 53 54 5f 54 4f 4f 5f 4c 41 52 47 45 20 3d  UEST_TOO_LARGE =
5e70: 20 34 31 33 2c 20 0a 09 48 54 54 50 5f 53 54 41   413, ..HTTP_STA
5e80: 54 55 53 5f 55 52 49 5f 54 4f 4f 5f 4c 4f 4e 47  TUS_URI_TOO_LONG
5e90: 20 20 20 20 20 20 3d 20 34 31 34 2c 20 0a 09 48        = 414, ..H
5ea0: 54 54 50 5f 53 54 41 54 55 53 5f 55 4e 53 55 50  TTP_STATUS_UNSUP
5eb0: 50 4f 52 54 45 44 5f 4d 45 44 49 41 20 3d 20 34  PORTED_MEDIA = 4
5ec0: 31 35 2c 20 0a 09 48 54 54 50 5f 53 54 41 54 55  15, ..HTTP_STATU
5ed0: 53 5f 52 45 54 52 59 5f 57 49 54 48 20 20 20 20  S_RETRY_WITH    
5ee0: 20 20 20 20 3d 20 34 34 39 2c 20 0a 0a 09 48 54      = 449, ...HT
5ef0: 54 50 5f 53 54 41 54 55 53 5f 53 45 52 56 45 52  TP_STATUS_SERVER
5f00: 5f 45 52 52 4f 52 20 20 20 20 20 20 3d 20 35 30  _ERROR      = 50
5f10: 30 2c 20 0a 09 48 54 54 50 5f 53 54 41 54 55 53  0, ..HTTP_STATUS
5f20: 5f 4e 4f 54 5f 53 55 50 50 4f 52 54 45 44 20 20  _NOT_SUPPORTED  
5f30: 20 20 20 3d 20 35 30 31 2c 20 0a 09 48 54 54 50     = 501, ..HTTP
5f40: 5f 53 54 41 54 55 53 5f 42 41 44 5f 47 41 54 45  _STATUS_BAD_GATE
5f50: 57 41 59 20 20 20 20 20 20 20 3d 20 35 30 32 2c  WAY       = 502,
5f60: 20 0a 09 48 54 54 50 5f 53 54 41 54 55 53 5f 53   ..HTTP_STATUS_S
5f70: 45 52 56 49 43 45 5f 55 4e 41 56 41 49 4c 20 20  ERVICE_UNAVAIL  
5f80: 20 3d 20 35 30 33 2c 20 0a 09 48 54 54 50 5f 53   = 503, ..HTTP_S
5f90: 54 41 54 55 53 5f 47 41 54 45 57 41 59 5f 54 49  TATUS_GATEWAY_TI
5fa0: 4d 45 4f 55 54 20 20 20 3d 20 35 30 34 2c 20 0a  MEOUT   = 504, .
5fb0: 09 48 54 54 50 5f 53 54 41 54 55 53 5f 56 45 52  .HTTP_STATUS_VER
5fc0: 53 49 4f 4e 5f 4e 4f 54 5f 53 55 50 20 20 20 3d  SION_NOT_SUP   =
5fd0: 20 35 30 35 2c 20 0a 0a 09 48 54 54 50 5f 53 54   505, ...HTTP_ST
5fe0: 41 54 55 53 5f 46 49 52 53 54 20 20 20 20 20 20  ATUS_FIRST      
5ff0: 20 20 20 20 20 20 20 3d 20 48 54 54 50 5f 53 54         = HTTP_ST
6000: 41 54 55 53 5f 43 4f 4e 54 49 4e 55 45 2c 0a 09  ATUS_CONTINUE,..
6010: 48 54 54 50 5f 53 54 41 54 55 53 5f 4c 41 53 54  HTTP_STATUS_LAST
6020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20                = 
6030: 48 54 54 50 5f 53 54 41 54 55 53 5f 56 45 52 53  HTTP_STATUS_VERS
6040: 49 4f 4e 5f 4e 4f 54 5f 53 55 50 0a 7d 0a 0a 65  ION_NOT_SUP.}..e
6050: 6e 75 6d 20 4c 50 43 57 53 54 52 20 57 49 4e 48  num LPCWSTR WINH
6060: 54 54 50 5f 4e 4f 5f 52 45 46 45 52 45 52 20 20  TTP_NO_REFERER  
6070: 20 20 20 20 20 20 20 20 20 20 20 3d 20 6e 75 6c             = nul
6080: 6c 3b 0a 65 6e 75 6d 20 4c 50 43 57 53 54 52 20  l;.enum LPCWSTR 
6090: 2a 20 57 49 4e 48 54 54 50 5f 44 45 46 41 55 4c  * WINHTTP_DEFAUL
60a0: 54 5f 41 43 43 45 50 54 5f 54 59 50 45 53 20 3d  T_ACCEPT_TYPES =
60b0: 20 6e 75 6c 6c 3b 0a 0a 65 6e 75 6d 20 3a 20 44   null;..enum : D
60c0: 57 4f 52 44 20 7b 0a 09 57 49 4e 48 54 54 50 5f  WORD {..WINHTTP_
60d0: 41 44 44 52 45 51 5f 49 4e 44 45 58 5f 4d 41 53  ADDREQ_INDEX_MAS
60e0: 4b 20 20 20 20 20 3d 20 30 78 30 30 30 30 46 46  K     = 0x0000FF
60f0: 46 46 2c 0a 09 57 49 4e 48 54 54 50 5f 41 44 44  FF,..WINHTTP_ADD
6100: 52 45 51 5f 46 4c 41 47 53 5f 4d 41 53 4b 20 20  REQ_FLAGS_MASK  
6110: 20 20 20 3d 20 30 78 46 46 46 46 30 30 30 30 2c     = 0xFFFF0000,
6120: 0a 0a 09 57 49 4e 48 54 54 50 5f 41 44 44 52 45  ...WINHTTP_ADDRE
6130: 51 5f 46 4c 41 47 5f 41 44 44 5f 49 46 5f 4e 45  Q_FLAG_ADD_IF_NE
6140: 57 20 3d 20 30 78 31 30 30 30 30 30 30 30 2c 0a  W = 0x10000000,.
6150: 0a 09 57 49 4e 48 54 54 50 5f 41 44 44 52 45 51  ..WINHTTP_ADDREQ
6160: 5f 46 4c 41 47 5f 41 44 44 20 20 20 20 20 20 20  _FLAG_ADD       
6170: 20 3d 20 30 78 32 30 30 30 30 30 30 30 2c 0a 0a   = 0x20000000,..
6180: 09 57 49 4e 48 54 54 50 5f 41 44 44 52 45 51 5f  .WINHTTP_ADDREQ_
6190: 46 4c 41 47 5f 43 4f 41 4c 45 53 43 45 5f 57 49  FLAG_COALESCE_WI
61a0: 54 48 5f 43 4f 4d 4d 41 20 20 20 20 20 20 20 3d  TH_COMMA       =
61b0: 20 30 78 34 30 30 30 30 30 30 30 2c 0a 09 57 49   0x40000000,..WI
61c0: 4e 48 54 54 50 5f 41 44 44 52 45 51 5f 46 4c 41  NHTTP_ADDREQ_FLA
61d0: 47 5f 43 4f 41 4c 45 53 43 45 5f 57 49 54 48 5f  G_COALESCE_WITH_
61e0: 53 45 4d 49 43 4f 4c 4f 4e 20 20 20 3d 20 30 78  SEMICOLON   = 0x
61f0: 30 31 30 30 30 30 30 30 2c 0a 09 57 49 4e 48 54  01000000,..WINHT
6200: 54 50 5f 41 44 44 52 45 51 5f 46 4c 41 47 5f 43  TP_ADDREQ_FLAG_C
6210: 4f 41 4c 45 53 43 45 20 20 20 20 20 20 20 20 20  OALESCE         
6220: 20 20 20 20 20 20 20 20 20 3d 20 57 49 4e 48 54           = WINHT
6230: 54 50 5f 41 44 44 52 45 51 5f 46 4c 41 47 5f 43  TP_ADDREQ_FLAG_C
6240: 4f 41 4c 45 53 43 45 5f 57 49 54 48 5f 43 4f 4d  OALESCE_WITH_COM
6250: 4d 41 2c 0a 0a 09 57 49 4e 48 54 54 50 5f 41 44  MA,...WINHTTP_AD
6260: 44 52 45 51 5f 46 4c 41 47 5f 52 45 50 4c 41 43  DREQ_FLAG_REPLAC
6270: 45 20 20 20 20 3d 20 30 78 38 30 30 30 30 30 30  E    = 0x8000000
6280: 30 2c 0a 0a 09 57 49 4e 48 54 54 50 5f 49 47 4e  0,...WINHTTP_IGN
6290: 4f 52 45 5f 52 45 51 55 45 53 54 5f 54 4f 54 41  ORE_REQUEST_TOTA
62a0: 4c 5f 4c 45 4e 47 54 48 20 3d 20 30 0a 7d 0a 0a  L_LENGTH = 0.}..
62b0: 65 6e 75 6d 20 4c 50 43 57 53 54 52 20 57 49 4e  enum LPCWSTR WIN
62c0: 48 54 54 50 5f 4e 4f 5f 41 44 44 49 54 49 4f 4e  HTTP_NO_ADDITION
62d0: 41 4c 5f 48 45 41 44 45 52 53 20 3d 20 6e 75 6c  AL_HEADERS = nul
62e0: 6c 3b 0a 65 6e 75 6d 20 4c 50 56 4f 49 44 20 57  l;.enum LPVOID W
62f0: 49 4e 48 54 54 50 5f 4e 4f 5f 52 45 51 55 45 53  INHTTP_NO_REQUES
6300: 54 5f 44 41 54 41 20 20 20 20 20 20 20 20 3d 20  T_DATA        = 
6310: 6e 75 6c 6c 3b 0a 0a 65 6e 75 6d 20 4c 50 43 57  null;..enum LPCW
6320: 53 54 52 20 57 49 4e 48 54 54 50 5f 48 45 41 44  STR WINHTTP_HEAD
6330: 45 52 5f 4e 41 4d 45 5f 42 59 5f 49 4e 44 45 58  ER_NAME_BY_INDEX
6340: 20 20 3d 20 6e 75 6c 6c 3b 0a 65 6e 75 6d 20 4c    = null;.enum L
6350: 50 56 4f 49 44 20 57 49 4e 48 54 54 50 5f 4e 4f  PVOID WINHTTP_NO
6360: 5f 4f 55 54 50 55 54 5f 42 55 46 46 45 52 20 20  _OUTPUT_BUFFER  
6370: 20 20 20 20 20 3d 20 6e 75 6c 6c 3b 0a 65 6e 75       = null;.enu
6380: 6d 20 4c 50 44 57 4f 52 44 20 57 49 4e 48 54 54  m LPDWORD WINHTT
6390: 50 5f 4e 4f 5f 48 45 41 44 45 52 5f 49 4e 44 45  P_NO_HEADER_INDE
63a0: 58 20 20 20 20 20 20 20 3d 20 6e 75 6c 6c 3b 0a  X       = null;.
63b0: 0a 73 74 72 75 63 74 20 57 49 4e 48 54 54 50 5f  .struct WINHTTP_
63c0: 43 55 52 52 45 4e 54 5f 55 53 45 52 5f 49 45 5f  CURRENT_USER_IE_
63d0: 50 52 4f 58 59 5f 43 4f 4e 46 49 47 20 7b 0a 20  PROXY_CONFIG {. 
63e0: 20 20 20 42 4f 4f 4c 20 20 20 20 66 41 75 74 6f     BOOL    fAuto
63f0: 44 65 74 65 63 74 3b 0a 20 20 20 20 4c 50 57 53  Detect;.    LPWS
6400: 54 52 20 20 6c 70 73 7a 41 75 74 6f 43 6f 6e 66  TR  lpszAutoConf
6410: 69 67 55 72 6c 3b 0a 20 20 20 20 4c 50 57 53 54  igUrl;.    LPWST
6420: 52 20 20 6c 70 73 7a 50 72 6f 78 79 3b 0a 20 20  R  lpszProxy;.  
6430: 20 20 4c 50 57 53 54 52 20 20 6c 70 73 7a 50 72    LPWSTR  lpszPr
6440: 6f 78 79 42 79 70 61 73 73 3b 0a 7d 0a 0a 2f 2f  oxyBypass;.}..//
6450: 20 57 69 6e 48 74 74 70 20 41 50 49 20 65 72 72   WinHttp API err
6460: 6f 72 20 72 65 74 75 72 6e 73 0a 65 6e 75 6d 20  or returns.enum 
6470: 3a 20 44 57 4f 52 44 20 7b 0a 09 57 49 4e 48 54  : DWORD {..WINHT
6480: 54 50 5f 45 52 52 4f 52 5f 42 41 53 45 20 20 20  TP_ERROR_BASE   
6490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
64a0: 3d 20 31 32 30 30 30 2c 0a 0a 09 45 52 52 4f 52  = 12000,...ERROR
64b0: 5f 57 49 4e 48 54 54 50 5f 4f 55 54 5f 4f 46 5f  _WINHTTP_OUT_OF_
64c0: 48 41 4e 44 4c 45 53 20 20 20 20 20 20 20 20 20  HANDLES         
64d0: 3d 20 28 57 49 4e 48 54 54 50 5f 45 52 52 4f 52  = (WINHTTP_ERROR
64e0: 5f 42 41 53 45 20 2b 20 31 29 2c 0a 09 45 52 52  _BASE + 1),..ERR
64f0: 4f 52 5f 57 49 4e 48 54 54 50 5f 54 49 4d 45 4f  OR_WINHTTP_TIMEO
6500: 55 54 20 20 20 20 20 20 20 20 20 20 20 20 20 20  UT              
6510: 20 20 3d 20 28 57 49 4e 48 54 54 50 5f 45 52 52    = (WINHTTP_ERR
6520: 4f 52 5f 42 41 53 45 20 2b 20 32 29 2c 0a 09 45  OR_BASE + 2),..E
6530: 52 52 4f 52 5f 57 49 4e 48 54 54 50 5f 49 4e 54  RROR_WINHTTP_INT
6540: 45 52 4e 41 4c 5f 45 52 52 4f 52 20 20 20 20 20  ERNAL_ERROR     
6550: 20 20 20 20 3d 20 28 57 49 4e 48 54 54 50 5f 45      = (WINHTTP_E
6560: 52 52 4f 52 5f 42 41 53 45 20 2b 20 34 29 2c 0a  RROR_BASE + 4),.
6570: 09 45 52 52 4f 52 5f 57 49 4e 48 54 54 50 5f 49  .ERROR_WINHTTP_I
6580: 4e 56 41 4c 49 44 5f 55 52 4c 20 20 20 20 20 20  NVALID_URL      
6590: 20 20 20 20 20 20 3d 20 28 57 49 4e 48 54 54 50        = (WINHTTP
65a0: 5f 45 52 52 4f 52 5f 42 41 53 45 20 2b 20 35 29  _ERROR_BASE + 5)
65b0: 2c 0a 09 45 52 52 4f 52 5f 57 49 4e 48 54 54 50  ,..ERROR_WINHTTP
65c0: 5f 55 4e 52 45 43 4f 47 4e 49 5a 45 44 5f 53 43  _UNRECOGNIZED_SC
65d0: 48 45 4d 45 20 20 20 20 3d 20 28 57 49 4e 48 54  HEME    = (WINHT
65e0: 54 50 5f 45 52 52 4f 52 5f 42 41 53 45 20 2b 20  TP_ERROR_BASE + 
65f0: 36 29 2c 0a 09 45 52 52 4f 52 5f 57 49 4e 48 54  6),..ERROR_WINHT
6600: 54 50 5f 4e 41 4d 45 5f 4e 4f 54 5f 52 45 53 4f  TP_NAME_NOT_RESO
6610: 4c 56 45 44 20 20 20 20 20 20 3d 20 28 57 49 4e  LVED      = (WIN
6620: 48 54 54 50 5f 45 52 52 4f 52 5f 42 41 53 45 20  HTTP_ERROR_BASE 
6630: 2b 20 37 29 2c 0a 09 45 52 52 4f 52 5f 57 49 4e  + 7),..ERROR_WIN
6640: 48 54 54 50 5f 49 4e 56 41 4c 49 44 5f 4f 50 54  HTTP_INVALID_OPT
6650: 49 4f 4e 20 20 20 20 20 20 20 20 20 3d 20 28 57  ION         = (W
6660: 49 4e 48 54 54 50 5f 45 52 52 4f 52 5f 42 41 53  INHTTP_ERROR_BAS
6670: 45 20 2b 20 39 29 2c 0a 09 45 52 52 4f 52 5f 57  E + 9),..ERROR_W
6680: 49 4e 48 54 54 50 5f 4f 50 54 49 4f 4e 5f 4e 4f  INHTTP_OPTION_NO
6690: 54 5f 53 45 54 54 41 42 4c 45 20 20 20 20 3d 20  T_SETTABLE    = 
66a0: 28 57 49 4e 48 54 54 50 5f 45 52 52 4f 52 5f 42  (WINHTTP_ERROR_B
66b0: 41 53 45 20 2b 20 31 31 29 2c 0a 09 45 52 52 4f  ASE + 11),..ERRO
66c0: 52 5f 57 49 4e 48 54 54 50 5f 53 48 55 54 44 4f  R_WINHTTP_SHUTDO
66d0: 57 4e 20 20 20 20 20 20 20 20 20 20 20 20 20 20  WN              
66e0: 20 3d 20 28 57 49 4e 48 54 54 50 5f 45 52 52 4f   = (WINHTTP_ERRO
66f0: 52 5f 42 41 53 45 20 2b 20 31 32 29 2c 0a 0a 09  R_BASE + 12),...
6700: 45 52 52 4f 52 5f 57 49 4e 48 54 54 50 5f 4c 4f  ERROR_WINHTTP_LO
6710: 47 49 4e 5f 46 41 49 4c 55 52 45 20 20 20 20 20  GIN_FAILURE     
6720: 20 20 20 20 20 3d 20 28 57 49 4e 48 54 54 50 5f       = (WINHTTP_
6730: 45 52 52 4f 52 5f 42 41 53 45 20 2b 20 31 35 29  ERROR_BASE + 15)
6740: 2c 0a 09 45 52 52 4f 52 5f 57 49 4e 48 54 54 50  ,..ERROR_WINHTTP
6750: 5f 4f 50 45 52 41 54 49 4f 4e 5f 43 41 4e 43 45  _OPERATION_CANCE
6760: 4c 4c 45 44 20 20 20 20 3d 20 28 57 49 4e 48 54  LLED    = (WINHT
6770: 54 50 5f 45 52 52 4f 52 5f 42 41 53 45 20 2b 20  TP_ERROR_BASE + 
6780: 31 37 29 2c 0a 09 45 52 52 4f 52 5f 57 49 4e 48  17),..ERROR_WINH
6790: 54 54 50 5f 49 4e 43 4f 52 52 45 43 54 5f 48 41  TTP_INCORRECT_HA
67a0: 4e 44 4c 45 5f 54 59 50 45 20 20 3d 20 28 57 49  NDLE_TYPE  = (WI
67b0: 4e 48 54 54 50 5f 45 52 52 4f 52 5f 42 41 53 45  NHTTP_ERROR_BASE
67c0: 20 2b 20 31 38 29 2c 0a 09 45 52 52 4f 52 5f 57   + 18),..ERROR_W
67d0: 49 4e 48 54 54 50 5f 49 4e 43 4f 52 52 45 43 54  INHTTP_INCORRECT
67e0: 5f 48 41 4e 44 4c 45 5f 53 54 41 54 45 20 3d 20  _HANDLE_STATE = 
67f0: 28 57 49 4e 48 54 54 50 5f 45 52 52 4f 52 5f 42  (WINHTTP_ERROR_B
6800: 41 53 45 20 2b 20 31 39 29 2c 0a 09 45 52 52 4f  ASE + 19),..ERRO
6810: 52 5f 57 49 4e 48 54 54 50 5f 43 41 4e 4e 4f 54  R_WINHTTP_CANNOT
6820: 5f 43 4f 4e 4e 45 43 54 20 20 20 20 20 20 20 20  _CONNECT        
6830: 20 3d 20 28 57 49 4e 48 54 54 50 5f 45 52 52 4f   = (WINHTTP_ERRO
6840: 52 5f 42 41 53 45 20 2b 20 32 39 29 2c 0a 09 45  R_BASE + 29),..E
6850: 52 52 4f 52 5f 57 49 4e 48 54 54 50 5f 43 4f 4e  RROR_WINHTTP_CON
6860: 4e 45 43 54 49 4f 4e 5f 45 52 52 4f 52 20 20 20  NECTION_ERROR   
6870: 20 20 20 20 3d 20 28 57 49 4e 48 54 54 50 5f 45      = (WINHTTP_E
6880: 52 52 4f 52 5f 42 41 53 45 20 2b 20 33 30 29 2c  RROR_BASE + 30),
6890: 0a 09 45 52 52 4f 52 5f 57 49 4e 48 54 54 50 5f  ..ERROR_WINHTTP_
68a0: 52 45 53 45 4e 44 5f 52 45 51 55 45 53 54 20 20  RESEND_REQUEST  
68b0: 20 20 20 20 20 20 20 3d 20 28 57 49 4e 48 54 54         = (WINHTT
68c0: 50 5f 45 52 52 4f 52 5f 42 41 53 45 20 2b 20 33  P_ERROR_BASE + 3
68d0: 32 29 2c 0a 0a 09 45 52 52 4f 52 5f 57 49 4e 48  2),...ERROR_WINH
68e0: 54 54 50 5f 43 4c 49 45 4e 54 5f 41 55 54 48 5f  TTP_CLIENT_AUTH_
68f0: 43 45 52 54 5f 4e 45 45 44 45 44 20 3d 20 28 57  CERT_NEEDED = (W
6900: 49 4e 48 54 54 50 5f 45 52 52 4f 52 5f 42 41 53  INHTTP_ERROR_BAS
6910: 45 2c 20 2b 20 34 34 29 2c 0a 09 0a 09 45 52 52  E, + 44),....ERR
6920: 4f 52 5f 57 49 4e 48 54 54 50 5f 43 41 4e 4e 4f  OR_WINHTTP_CANNO
6930: 54 5f 43 41 4c 4c 5f 42 45 46 4f 52 45 5f 4f 50  T_CALL_BEFORE_OP
6940: 45 4e 20 3d 20 28 57 49 4e 48 54 54 50 5f 45 52  EN = (WINHTTP_ER
6950: 52 4f 52 5f 42 41 53 45 20 2b 20 31 30 30 29 2c  ROR_BASE + 100),
6960: 0a 09 45 52 52 4f 52 5f 57 49 4e 48 54 54 50 5f  ..ERROR_WINHTTP_
6970: 43 41 4e 4e 4f 54 5f 43 41 4c 4c 5f 42 45 46 4f  CANNOT_CALL_BEFO
6980: 52 45 5f 53 45 4e 44 20 3d 20 28 57 49 4e 48 54  RE_SEND = (WINHT
6990: 54 50 5f 45 52 52 4f 52 5f 42 41 53 45 20 2b 20  TP_ERROR_BASE + 
69a0: 31 30 31 29 2c 0a 09 45 52 52 4f 52 5f 57 49 4e  101),..ERROR_WIN
69b0: 48 54 54 50 5f 43 41 4e 4e 4f 54 5f 43 41 4c 4c  HTTP_CANNOT_CALL
69c0: 5f 41 46 54 45 52 5f 53 45 4e 44 20 20 3d 20 28  _AFTER_SEND  = (
69d0: 57 49 4e 48 54 54 50 5f 45 52 52 4f 52 5f 42 41  WINHTTP_ERROR_BA
69e0: 53 45 20 2b 20 31 30 32 29 2c 0a 09 45 52 52 4f  SE + 102),..ERRO
69f0: 52 5f 57 49 4e 48 54 54 50 5f 43 41 4e 4e 4f 54  R_WINHTTP_CANNOT
6a00: 5f 43 41 4c 4c 5f 41 46 54 45 52 5f 4f 50 45 4e  _CALL_AFTER_OPEN
6a10: 20 20 3d 20 28 57 49 4e 48 54 54 50 5f 45 52 52    = (WINHTTP_ERR
6a20: 4f 52 5f 42 41 53 45 20 2b 20 31 30 33 29 2c 0a  OR_BASE + 103),.
6a30: 0a 09 45 52 52 4f 52 5f 57 49 4e 48 54 54 50 5f  ..ERROR_WINHTTP_
6a40: 48 45 41 44 45 52 5f 4e 4f 54 5f 46 4f 55 4e 44  HEADER_NOT_FOUND
6a50: 20 20 20 20 20 20 20 20 20 20 20 3d 20 28 57 49             = (WI
6a60: 4e 48 54 54 50 5f 45 52 52 4f 52 5f 42 41 53 45  NHTTP_ERROR_BASE
6a70: 20 2b 20 31 35 30 29 2c 0a 09 45 52 52 4f 52 5f   + 150),..ERROR_
6a80: 57 49 4e 48 54 54 50 5f 49 4e 56 41 4c 49 44 5f  WINHTTP_INVALID_
6a90: 53 45 52 56 45 52 5f 52 45 53 50 4f 4e 53 45 20  SERVER_RESPONSE 
6aa0: 20 20 20 3d 20 28 57 49 4e 48 54 54 50 5f 45 52     = (WINHTTP_ER
6ab0: 52 4f 52 5f 42 41 53 45 20 2b 20 31 35 32 29 2c  ROR_BASE + 152),
6ac0: 0a 09 45 52 52 4f 52 5f 57 49 4e 48 54 54 50 5f  ..ERROR_WINHTTP_
6ad0: 49 4e 56 41 4c 49 44 5f 48 45 41 44 45 52 20 20  INVALID_HEADER  
6ae0: 20 20 20 20 20 20 20 20 20 20 20 3d 20 28 57 49             = (WI
6af0: 4e 48 54 54 50 5f 45 52 52 4f 52 5f 42 41 53 45  NHTTP_ERROR_BASE
6b00: 20 2b 20 31 35 33 29 2c 0a 09 45 52 52 4f 52 5f   + 153),..ERROR_
6b10: 57 49 4e 48 54 54 50 5f 49 4e 56 41 4c 49 44 5f  WINHTTP_INVALID_
6b20: 51 55 45 52 59 5f 52 45 51 55 45 53 54 20 20 20  QUERY_REQUEST   
6b30: 20 20 20 3d 20 28 57 49 4e 48 54 54 50 5f 45 52     = (WINHTTP_ER
6b40: 52 4f 52 5f 42 41 53 45 20 2b 20 31 35 34 29 2c  ROR_BASE + 154),
6b50: 0a 09 45 52 52 4f 52 5f 57 49 4e 48 54 54 50 5f  ..ERROR_WINHTTP_
6b60: 48 45 41 44 45 52 5f 41 4c 52 45 41 44 59 5f 45  HEADER_ALREADY_E
6b70: 58 49 53 54 53 20 20 20 20 20 20 3d 20 28 57 49  XISTS      = (WI
6b80: 4e 48 54 54 50 5f 45 52 52 4f 52 5f 42 41 53 45  NHTTP_ERROR_BASE
6b90: 20 2b 20 31 35 35 29 2c 0a 09 45 52 52 4f 52 5f   + 155),..ERROR_
6ba0: 57 49 4e 48 54 54 50 5f 52 45 44 49 52 45 43 54  WINHTTP_REDIRECT
6bb0: 5f 46 41 49 4c 45 44 20 20 20 20 20 20 20 20 20  _FAILED         
6bc0: 20 20 20 3d 20 28 57 49 4e 48 54 54 50 5f 45 52     = (WINHTTP_ER
6bd0: 52 4f 52 5f 42 41 53 45 20 2b 20 31 35 36 29 2c  ROR_BASE + 156),
6be0: 0a 0a 09 45 52 52 4f 52 5f 57 49 4e 48 54 54 50  ...ERROR_WINHTTP
6bf0: 5f 41 55 54 4f 5f 50 52 4f 58 59 5f 53 45 52 56  _AUTO_PROXY_SERV
6c00: 49 43 45 5f 45 52 52 4f 52 20 20 3d 20 28 57 49  ICE_ERROR  = (WI
6c10: 4e 48 54 54 50 5f 45 52 52 4f 52 5f 42 41 53 45  NHTTP_ERROR_BASE
6c20: 20 2b 20 31 37 38 29 2c 0a 09 45 52 52 4f 52 5f   + 178),..ERROR_
6c30: 57 49 4e 48 54 54 50 5f 42 41 44 5f 41 55 54 4f  WINHTTP_BAD_AUTO
6c40: 5f 50 52 4f 58 59 5f 53 43 52 49 50 54 20 20 20  _PROXY_SCRIPT   
6c50: 20 20 3d 20 28 57 49 4e 48 54 54 50 5f 45 52 52    = (WINHTTP_ERR
6c60: 4f 52 5f 42 41 53 45 20 2b 20 31 36 36 29 2c 0a  OR_BASE + 166),.
6c70: 09 45 52 52 4f 52 5f 57 49 4e 48 54 54 50 5f 55  .ERROR_WINHTTP_U
6c80: 4e 41 42 4c 45 5f 54 4f 5f 44 4f 57 4e 4c 4f 41  NABLE_TO_DOWNLOA
6c90: 44 5f 53 43 52 49 50 54 20 3d 20 28 57 49 4e 48  D_SCRIPT = (WINH
6ca0: 54 54 50 5f 45 52 52 4f 52 5f 42 41 53 45 20 2b  TTP_ERROR_BASE +
6cb0: 20 31 36 37 29 2c 0a 09 45 52 52 4f 52 5f 57 49   167),..ERROR_WI
6cc0: 4e 48 54 54 50 5f 55 4e 48 41 4e 44 4c 45 44 5f  NHTTP_UNHANDLED_
6cd0: 53 43 52 49 50 54 5f 54 59 50 45 20 20 20 20 20  SCRIPT_TYPE     
6ce0: 3d 20 28 57 49 4e 48 54 54 50 5f 45 52 52 4f 52  = (WINHTTP_ERROR
6cf0: 5f 42 41 53 45 20 2b 20 31 37 36 29 2c 0a 09 45  _BASE + 176),..E
6d00: 52 52 4f 52 5f 57 49 4e 48 54 54 50 5f 53 43 52  RROR_WINHTTP_SCR
6d10: 49 50 54 5f 45 58 45 43 55 54 49 4f 4e 5f 45 52  IPT_EXECUTION_ER
6d20: 52 4f 52 20 20 20 20 3d 20 28 57 49 4e 48 54 54  ROR    = (WINHTT
6d30: 50 5f 45 52 52 4f 52 5f 42 41 53 45 20 2b 20 31  P_ERROR_BASE + 1
6d40: 37 37 29 2c 0a 0a 09 45 52 52 4f 52 5f 57 49 4e  77),...ERROR_WIN
6d50: 48 54 54 50 5f 4e 4f 54 5f 49 4e 49 54 49 41 4c  HTTP_NOT_INITIAL
6d60: 49 5a 45 44 20 20 20 20 20 20 20 20 3d 20 28 57  IZED        = (W
6d70: 49 4e 48 54 54 50 5f 45 52 52 4f 52 5f 42 41 53  INHTTP_ERROR_BAS
6d80: 45 20 2b 20 31 37 32 29 2c 0a 09 45 52 52 4f 52  E + 172),..ERROR
6d90: 5f 57 49 4e 48 54 54 50 5f 53 45 43 55 52 45 5f  _WINHTTP_SECURE_
6da0: 46 41 49 4c 55 52 45 20 20 20 20 20 20 20 20 20  FAILURE         
6db0: 3d 20 28 57 49 4e 48 54 54 50 5f 45 52 52 4f 52  = (WINHTTP_ERROR
6dc0: 5f 42 41 53 45 20 2b 20 31 37 35 29 2c 0a 0a 09  _BASE + 175),...
6dd0: 45 52 52 4f 52 5f 57 49 4e 48 54 54 50 5f 53 45  ERROR_WINHTTP_SE
6de0: 43 55 52 45 5f 43 45 52 54 5f 44 41 54 45 5f 49  CURE_CERT_DATE_I
6df0: 4e 56 41 4c 49 44 20 20 3d 20 28 57 49 4e 48 54  NVALID  = (WINHT
6e00: 54 50 5f 45 52 52 4f 52 5f 42 41 53 45 20 2b 20  TP_ERROR_BASE + 
6e10: 33 37 29 2c 0a 09 45 52 52 4f 52 5f 57 49 4e 48  37),..ERROR_WINH
6e20: 54 54 50 5f 53 45 43 55 52 45 5f 43 45 52 54 5f  TTP_SECURE_CERT_
6e30: 43 4e 5f 49 4e 56 41 4c 49 44 20 20 20 20 3d 20  CN_INVALID    = 
6e40: 28 57 49 4e 48 54 54 50 5f 45 52 52 4f 52 5f 42  (WINHTTP_ERROR_B
6e50: 41 53 45 20 2b 20 33 38 29 2c 0a 09 45 52 52 4f  ASE + 38),..ERRO
6e60: 52 5f 57 49 4e 48 54 54 50 5f 53 45 43 55 52 45  R_WINHTTP_SECURE
6e70: 5f 49 4e 56 41 4c 49 44 5f 43 41 20 20 20 20 20  _INVALID_CA     
6e80: 20 20 20 20 3d 20 28 57 49 4e 48 54 54 50 5f 45      = (WINHTTP_E
6e90: 52 52 4f 52 5f 42 41 53 45 20 2b 20 34 35 29 2c  RROR_BASE + 45),
6ea0: 0a 09 45 52 52 4f 52 5f 57 49 4e 48 54 54 50 5f  ..ERROR_WINHTTP_
6eb0: 53 45 43 55 52 45 5f 43 45 52 54 5f 52 45 56 5f  SECURE_CERT_REV_
6ec0: 46 41 49 4c 45 44 20 20 20 20 3d 20 28 57 49 4e  FAILED    = (WIN
6ed0: 48 54 54 50 5f 45 52 52 4f 52 5f 42 41 53 45 20  HTTP_ERROR_BASE 
6ee0: 2b 20 35 37 29 2c 0a 09 45 52 52 4f 52 5f 57 49  + 57),..ERROR_WI
6ef0: 4e 48 54 54 50 5f 53 45 43 55 52 45 5f 43 48 41  NHTTP_SECURE_CHA
6f00: 4e 4e 45 4c 5f 45 52 52 4f 52 20 20 20 20 20 20  NNEL_ERROR      
6f10: 3d 20 28 57 49 4e 48 54 54 50 5f 45 52 52 4f 52  = (WINHTTP_ERROR
6f20: 5f 42 41 53 45 20 2b 20 31 35 37 29 2c 0a 09 45  _BASE + 157),..E
6f30: 52 52 4f 52 5f 57 49 4e 48 54 54 50 5f 53 45 43  RROR_WINHTTP_SEC
6f40: 55 52 45 5f 49 4e 56 41 4c 49 44 5f 43 45 52 54  URE_INVALID_CERT
6f50: 20 20 20 20 20 20 20 3d 20 28 57 49 4e 48 54 54         = (WINHTT
6f60: 50 5f 45 52 52 4f 52 5f 42 41 53 45 20 2b 20 31  P_ERROR_BASE + 1
6f70: 36 39 29 2c 0a 09 45 52 52 4f 52 5f 57 49 4e 48  69),..ERROR_WINH
6f80: 54 54 50 5f 53 45 43 55 52 45 5f 43 45 52 54 5f  TTP_SECURE_CERT_
6f90: 52 45 56 4f 4b 45 44 20 20 20 20 20 20 20 3d 20  REVOKED       = 
6fa0: 28 57 49 4e 48 54 54 50 5f 45 52 52 4f 52 5f 42  (WINHTTP_ERROR_B
6fb0: 41 53 45 20 2b 20 31 37 30 29 2c 0a 09 45 52 52  ASE + 170),..ERR
6fc0: 4f 52 5f 57 49 4e 48 54 54 50 5f 53 45 43 55 52  OR_WINHTTP_SECUR
6fd0: 45 5f 43 45 52 54 5f 57 52 4f 4e 47 5f 55 53 41  E_CERT_WRONG_USA
6fe0: 47 45 20 20 20 3d 20 28 57 49 4e 48 54 54 50 5f  GE   = (WINHTTP_
6ff0: 45 52 52 4f 52 5f 42 41 53 45 20 2b 20 31 37 39  ERROR_BASE + 179
7000: 29 2c 0a 0a 09 45 52 52 4f 52 5f 57 49 4e 48 54  ),...ERROR_WINHT
7010: 54 50 5f 41 55 54 4f 44 45 54 45 43 54 49 4f 4e  TP_AUTODETECTION
7020: 5f 46 41 49 4c 45 44 20 20 20 20 20 20 20 20 20  _FAILED         
7030: 20 20 20 20 20 20 20 20 20 3d 20 28 57 49 4e 48           = (WINH
7040: 54 54 50 5f 45 52 52 4f 52 5f 42 41 53 45 20 2b  TTP_ERROR_BASE +
7050: 20 31 38 30 29 2c 0a 09 45 52 52 4f 52 5f 57 49   180),..ERROR_WI
7060: 4e 48 54 54 50 5f 48 45 41 44 45 52 5f 43 4f 55  NHTTP_HEADER_COU
7070: 4e 54 5f 45 58 43 45 45 44 45 44 20 20 20 20 20  NT_EXCEEDED     
7080: 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 28 57              = (W
7090: 49 4e 48 54 54 50 5f 45 52 52 4f 52 5f 42 41 53  INHTTP_ERROR_BAS
70a0: 45 20 2b 20 31 38 31 29 2c 0a 09 45 52 52 4f 52  E + 181),..ERROR
70b0: 5f 57 49 4e 48 54 54 50 5f 48 45 41 44 45 52 5f  _WINHTTP_HEADER_
70c0: 53 49 5a 45 5f 4f 56 45 52 46 4c 4f 57 20 20 20  SIZE_OVERFLOW   
70d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d                 =
70e0: 20 28 57 49 4e 48 54 54 50 5f 45 52 52 4f 52 5f   (WINHTTP_ERROR_
70f0: 42 41 53 45 20 2b 20 31 38 32 29 2c 0a 09 45 52  BASE + 182),..ER
7100: 52 4f 52 5f 57 49 4e 48 54 54 50 5f 43 48 55 4e  ROR_WINHTTP_CHUN
7110: 4b 45 44 5f 45 4e 43 4f 44 49 4e 47 5f 48 45 41  KED_ENCODING_HEA
7120: 44 45 52 5f 53 49 5a 45 5f 4f 56 45 52 46 4c 4f  DER_SIZE_OVERFLO
7130: 57 20 3d 20 28 57 49 4e 48 54 54 50 5f 45 52 52  W = (WINHTTP_ERR
7140: 4f 52 5f 42 41 53 45 20 2b 20 31 38 33 29 2c 0a  OR_BASE + 183),.
7150: 09 45 52 52 4f 52 5f 57 49 4e 48 54 54 50 5f 52  .ERROR_WINHTTP_R
7160: 45 53 50 4f 4e 53 45 5f 44 52 41 49 4e 5f 4f 56  ESPONSE_DRAIN_OV
7170: 45 52 46 4c 4f 57 20 20 20 20 20 20 20 20 20 20  ERFLOW          
7180: 20 20 20 20 20 3d 20 28 57 49 4e 48 54 54 50 5f       = (WINHTTP_
7190: 45 52 52 4f 52 5f 42 41 53 45 20 2b 20 31 38 34  ERROR_BASE + 184
71a0: 29 2c 0a 09 45 52 52 4f 52 5f 57 49 4e 48 54 54  ),..ERROR_WINHTT
71b0: 50 5f 43 4c 49 45 4e 54 5f 43 45 52 54 5f 4e 4f  P_CLIENT_CERT_NO
71c0: 5f 50 52 49 56 41 54 45 5f 4b 45 59 20 20 20 20  _PRIVATE_KEY    
71d0: 20 20 20 20 20 20 20 20 3d 20 28 57 49 4e 48 54          = (WINHT
71e0: 54 50 5f 45 52 52 4f 52 5f 42 41 53 45 20 2b 20  TP_ERROR_BASE + 
71f0: 31 38 35 29 2c 0a 09 45 52 52 4f 52 5f 57 49 4e  185),..ERROR_WIN
7200: 48 54 54 50 5f 43 4c 49 45 4e 54 5f 43 45 52 54  HTTP_CLIENT_CERT
7210: 5f 4e 4f 5f 41 43 43 45 53 53 5f 50 52 49 56 41  _NO_ACCESS_PRIVA
7220: 54 45 5f 4b 45 59 20 20 20 20 20 3d 20 28 57 49  TE_KEY     = (WI
7230: 4e 48 54 54 50 5f 45 52 52 4f 52 5f 42 41 53 45  NHTTP_ERROR_BASE
7240: 20 2b 20 31 38 36 29 2c 0a 0a 09 57 49 4e 48 54   + 186),...WINHT
7250: 54 50 5f 45 52 52 4f 52 5f 4c 41 53 54 20 20 20  TP_ERROR_LAST   
7260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d                 =
7280: 20 28 57 49 4e 48 54 54 50 5f 45 52 52 4f 52 5f   (WINHTTP_ERROR_
7290: 42 41 53 45 20 2b 20 31 38 36 29 09 0a 7d 0a 0a  BASE + 186)..}..
72a0: 65 6e 75 6d 20 3a 20 44 57 4f 52 44 20 7b 0a 09  enum : DWORD {..
72b0: 57 49 4e 48 54 54 50 5f 52 45 53 45 54 5f 53 54  WINHTTP_RESET_ST
72c0: 41 54 45 20 20 20 20 20 20 20 20 20 20 20 20 20  ATE             
72d0: 20 20 20 20 20 3d 20 30 78 30 30 30 30 30 30 30       = 0x0000000
72e0: 31 2c 0a 09 57 49 4e 48 54 54 50 5f 52 45 53 45  1,..WINHTTP_RESE
72f0: 54 5f 53 57 50 41 44 5f 43 55 52 52 45 4e 54 5f  T_SWPAD_CURRENT_
7300: 4e 45 54 57 4f 52 4b 20 20 3d 20 30 78 30 30 30  NETWORK  = 0x000
7310: 30 30 30 30 32 2c 0a 09 57 49 4e 48 54 54 50 5f  00002,..WINHTTP_
7320: 52 45 53 45 54 5f 53 57 50 41 44 5f 41 4c 4c 20  RESET_SWPAD_ALL 
7330: 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 30               = 0
7340: 78 30 30 30 30 30 30 30 34 2c 0a 09 57 49 4e 48  x00000004,..WINH
7350: 54 54 50 5f 52 45 53 45 54 5f 53 43 52 49 50 54  TTP_RESET_SCRIPT
7360: 5f 43 41 43 48 45 20 20 20 20 20 20 20 20 20 20  _CACHE          
7370: 20 3d 20 30 78 30 30 30 30 30 30 30 38 2c 0a 09   = 0x00000008,..
7380: 57 49 4e 48 54 54 50 5f 52 45 53 45 54 5f 41 4c  WINHTTP_RESET_AL
7390: 4c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  L               
73a0: 20 20 20 20 20 3d 20 30 78 30 30 30 30 46 46 46       = 0x0000FFF
73b0: 46 2c 0a 09 57 49 4e 48 54 54 50 5f 52 45 53 45  F,..WINHTTP_RESE
73c0: 54 5f 4e 4f 54 49 46 59 5f 4e 45 54 57 4f 52 4b  T_NOTIFY_NETWORK
73d0: 5f 43 48 41 4e 47 45 44 20 3d 20 30 78 30 30 30  _CHANGED = 0x000
73e0: 31 30 30 30 30 2c 0a 09 57 49 4e 48 54 54 50 5f  10000,..WINHTTP_
73f0: 52 45 53 45 54 5f 4f 55 54 5f 4f 46 5f 50 52 4f  RESET_OUT_OF_PRO
7400: 43 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 30  C            = 0
7410: 78 30 30 30 32 30 30 30 30 0a 7d 0a 0a 65 6e 75  x00020000.}..enu
7420: 6d 20 3a 20 44 57 4f 52 44 20 7b 0a 09 57 49 4e  m : DWORD {..WIN
7430: 48 54 54 50 5f 57 45 42 5f 53 4f 43 4b 45 54 5f  HTTP_WEB_SOCKET_
7440: 4d 41 58 5f 43 4c 4f 53 45 5f 52 45 41 53 4f 4e  MAX_CLOSE_REASON
7450: 5f 4c 45 4e 47 54 48 20 3d 20 31 32 33 2c 0a 09  _LENGTH = 123,..
7460: 57 49 4e 48 54 54 50 5f 57 45 42 5f 53 4f 43 4b  WINHTTP_WEB_SOCK
7470: 45 54 5f 4d 49 4e 5f 4b 45 45 50 41 4c 49 56 45  ET_MIN_KEEPALIVE
7480: 5f 56 41 4c 55 45 20 20 20 20 20 3d 20 31 35 30  _VALUE     = 150
7490: 30 30 0a 7d 0a 0a 2f 2f 20 56 65 72 73 69 6f 6e  00.}..// Version
74a0: 28 57 69 6e 64 6f 77 73 38 29 20 7c 7c 20 56 65  (Windows8) || Ve
74b0: 72 73 69 6f 6e 28 57 69 6e 64 6f 77 73 32 30 31  rsion(Windows201
74c0: 32 29 3a 0a 73 74 61 74 69 63 20 69 66 20 28 5f  2):.static if (_
74d0: 57 49 4e 33 32 5f 57 49 4e 4e 54 20 3e 3d 20 30  WIN32_WINNT >= 0
74e0: 78 36 30 32 29 09 0a 7b 0a 09 65 6e 75 6d 20 57  x602)..{..enum W
74f0: 49 4e 48 54 54 50 5f 57 45 42 5f 53 4f 43 4b 45  INHTTP_WEB_SOCKE
7500: 54 5f 4f 50 45 52 41 54 49 4f 4e 20 3a 20 44 57  T_OPERATION : DW
7510: 4f 52 44 0a 09 7b 0a 09 09 57 49 4e 48 54 54 50  ORD..{...WINHTTP
7520: 5f 57 45 42 5f 53 4f 43 4b 45 54 5f 53 45 4e 44  _WEB_SOCKET_SEND
7530: 5f 4f 50 45 52 41 54 49 4f 4e 20 20 20 20 20 20  _OPERATION      
7540: 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 30               = 0
7550: 2c 0a 09 09 57 49 4e 48 54 54 50 5f 57 45 42 5f  ,...WINHTTP_WEB_
7560: 53 4f 43 4b 45 54 5f 52 45 43 45 49 56 45 5f 4f  SOCKET_RECEIVE_O
7570: 50 45 52 41 54 49 4f 4e 20 20 20 20 20 20 20 20  PERATION        
7580: 20 20 20 20 20 20 20 20 3d 20 31 2c 0a 09 09 57          = 1,...W
7590: 49 4e 48 54 54 50 5f 57 45 42 5f 53 4f 43 4b 45  INHTTP_WEB_SOCKE
75a0: 54 5f 43 4c 4f 53 45 5f 4f 50 45 52 41 54 49 4f  T_CLOSE_OPERATIO
75b0: 4e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  N               
75c0: 20 20 20 3d 20 32 2c 0a 09 09 57 49 4e 48 54 54     = 2,...WINHTT
75d0: 50 5f 57 45 42 5f 53 4f 43 4b 45 54 5f 53 48 55  P_WEB_SOCKET_SHU
75e0: 54 44 4f 57 4e 5f 4f 50 45 52 41 54 49 4f 4e 20  TDOWN_OPERATION 
75f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20                = 
7600: 33 0a 09 7d 0a 09 65 6e 75 6d 20 57 49 4e 48 54  3..}..enum WINHT
7610: 54 50 5f 57 45 42 5f 53 4f 43 4b 45 54 5f 42 55  TP_WEB_SOCKET_BU
7620: 46 46 45 52 5f 54 59 50 45 20 3a 20 44 57 4f 52  FFER_TYPE : DWOR
7630: 44 0a 09 7b 0a 09 09 57 49 4e 48 54 54 50 5f 57  D..{...WINHTTP_W
7640: 45 42 5f 53 4f 43 4b 45 54 5f 42 49 4e 41 52 59  EB_SOCKET_BINARY
7650: 5f 4d 45 53 53 41 47 45 5f 42 55 46 46 45 52 5f  _MESSAGE_BUFFER_
7660: 54 59 50 45 20 20 20 20 20 20 20 3d 20 30 2c 0a  TYPE       = 0,.
7670: 09 09 57 49 4e 48 54 54 50 5f 57 45 42 5f 53 4f  ..WINHTTP_WEB_SO
7680: 43 4b 45 54 5f 42 49 4e 41 52 59 5f 46 52 41 47  CKET_BINARY_FRAG
7690: 4d 45 4e 54 5f 42 55 46 46 45 52 5f 54 59 50 45  MENT_BUFFER_TYPE
76a0: 20 20 20 20 20 20 3d 20 31 2c 0a 09 09 57 49 4e        = 1,...WIN
76b0: 48 54 54 50 5f 57 45 42 5f 53 4f 43 4b 45 54 5f  HTTP_WEB_SOCKET_
76c0: 55 54 46 38 5f 4d 45 53 53 41 47 45 5f 42 55 46  UTF8_MESSAGE_BUF
76d0: 46 45 52 5f 54 59 50 45 20 20 20 20 20 20 20 20  FER_TYPE        
76e0: 20 3d 20 32 2c 0a 09 09 57 49 4e 48 54 54 50 5f   = 2,...WINHTTP_
76f0: 57 45 42 5f 53 4f 43 4b 45 54 5f 55 54 46 38 5f  WEB_SOCKET_UTF8_
7700: 46 52 41 47 4d 45 4e 54 5f 42 55 46 46 45 52 5f  FRAGMENT_BUFFER_
7710: 54 59 50 45 20 20 20 20 20 20 20 20 3d 20 33 2c  TYPE        = 3,
7720: 0a 09 09 57 49 4e 48 54 54 50 5f 57 45 42 5f 53  ...WINHTTP_WEB_S
7730: 4f 43 4b 45 54 5f 43 4c 4f 53 45 5f 42 55 46 46  OCKET_CLOSE_BUFF
7740: 45 52 5f 54 59 50 45 20 20 20 20 20 20 20 20 20  ER_TYPE         
7750: 20 20 20 20 20 20 20 3d 20 34 0a 09 7d 0a 09 65         = 4..}..e
7760: 6e 75 6d 20 57 49 4e 48 54 54 50 5f 57 45 42 5f  num WINHTTP_WEB_
7770: 53 4f 43 4b 45 54 5f 43 4c 4f 53 45 5f 53 54 41  SOCKET_CLOSE_STA
7780: 54 55 53 20 3a 20 44 57 4f 52 44 0a 09 7b 0a 09  TUS : DWORD..{..
7790: 09 57 49 4e 48 54 54 50 5f 57 45 42 5f 53 4f 43  .WINHTTP_WEB_SOC
77a0: 4b 45 54 5f 53 55 43 43 45 53 53 5f 43 4c 4f 53  KET_SUCCESS_CLOS
77b0: 45 5f 53 54 41 54 55 53 20 20 20 20 20 20 20 20  E_STATUS        
77c0: 20 20 20 20 20 20 20 20 3d 20 31 30 30 30 2c 0a          = 1000,.
77d0: 09 09 57 49 4e 48 54 54 50 5f 57 45 42 5f 53 4f  ..WINHTTP_WEB_SO
77e0: 43 4b 45 54 5f 45 4e 44 50 4f 49 4e 54 5f 54 45  CKET_ENDPOINT_TE
77f0: 52 4d 49 4e 41 54 45 44 5f 43 4c 4f 53 45 5f 53  RMINATED_CLOSE_S
7800: 54 41 54 55 53 20 20 20 20 3d 20 31 30 30 31 2c  TATUS    = 1001,
7810: 0a 09 09 57 49 4e 48 54 54 50 5f 57 45 42 5f 53  ...WINHTTP_WEB_S
7820: 4f 43 4b 45 54 5f 50 52 4f 54 4f 43 4f 4c 5f 45  OCKET_PROTOCOL_E
7830: 52 52 4f 52 5f 43 4c 4f 53 45 5f 53 54 41 54 55  RROR_CLOSE_STATU
7840: 53 20 20 20 20 20 20 20 20 20 3d 20 31 30 30 32  S         = 1002
7850: 2c 0a 09 09 57 49 4e 48 54 54 50 5f 57 45 42 5f  ,...WINHTTP_WEB_
7860: 53 4f 43 4b 45 54 5f 49 4e 56 41 4c 49 44 5f 44  SOCKET_INVALID_D
7870: 41 54 41 5f 54 59 50 45 5f 43 4c 4f 53 45 5f 53  ATA_TYPE_CLOSE_S
7880: 54 41 54 55 53 20 20 20 20 20 20 3d 20 31 30 30  TATUS      = 100
7890: 33 2c 0a 09 09 57 49 4e 48 54 54 50 5f 57 45 42  3,...WINHTTP_WEB
78a0: 5f 53 4f 43 4b 45 54 5f 45 4d 50 54 59 5f 43 4c  _SOCKET_EMPTY_CL
78b0: 4f 53 45 5f 53 54 41 54 55 53 20 20 20 20 20 20  OSE_STATUS      
78c0: 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 31 30              = 10
78d0: 30 35 2c 0a 09 09 57 49 4e 48 54 54 50 5f 57 45  05,...WINHTTP_WE
78e0: 42 5f 53 4f 43 4b 45 54 5f 41 42 4f 52 54 45 44  B_SOCKET_ABORTED
78f0: 5f 43 4c 4f 53 45 5f 53 54 41 54 55 53 20 20 20  _CLOSE_STATUS   
7900: 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 31               = 1
7910: 30 30 36 2c 0a 09 09 57 49 4e 48 54 54 50 5f 57  006,...WINHTTP_W
7920: 45 42 5f 53 4f 43 4b 45 54 5f 49 4e 56 41 4c 49  EB_SOCKET_INVALI
7930: 44 5f 50 41 59 4c 4f 41 44 5f 43 4c 4f 53 45 5f  D_PAYLOAD_CLOSE_
7940: 53 54 41 54 55 53 20 20 20 20 20 20 20 20 3d 20  STATUS        = 
7950: 31 30 30 37 2c 0a 09 09 57 49 4e 48 54 54 50 5f  1007,...WINHTTP_
7960: 57 45 42 5f 53 4f 43 4b 45 54 5f 50 4f 4c 49 43  WEB_SOCKET_POLIC
7970: 59 5f 56 49 4f 4c 41 54 49 4f 4e 5f 43 4c 4f 53  Y_VIOLATION_CLOS
7980: 45 5f 53 54 41 54 55 53 20 20 20 20 20 20 20 3d  E_STATUS       =
7990: 20 31 30 30 38 2c 0a 09 09 57 49 4e 48 54 54 50   1008,...WINHTTP
79a0: 5f 57 45 42 5f 53 4f 43 4b 45 54 5f 4d 45 53 53  _WEB_SOCKET_MESS
79b0: 41 47 45 5f 54 4f 4f 5f 42 49 47 5f 43 4c 4f 53  AGE_TOO_BIG_CLOS
79c0: 45 5f 53 54 41 54 55 53 20 20 20 20 20 20 20 20  E_STATUS        
79d0: 3d 20 31 30 30 39 2c 0a 09 09 57 49 4e 48 54 54  = 1009,...WINHTT
79e0: 50 5f 57 45 42 5f 53 4f 43 4b 45 54 5f 55 4e 53  P_WEB_SOCKET_UNS
79f0: 55 50 50 4f 52 54 45 44 5f 45 58 54 45 4e 53 49  UPPORTED_EXTENSI
7a00: 4f 4e 53 5f 43 4c 4f 53 45 5f 53 54 41 54 55 53  ONS_CLOSE_STATUS
7a10: 20 3d 20 31 30 31 30 2c 0a 09 09 57 49 4e 48 54   = 1010,...WINHT
7a20: 54 50 5f 57 45 42 5f 53 4f 43 4b 45 54 5f 53 45  TP_WEB_SOCKET_SE
7a30: 52 56 45 52 5f 45 52 52 4f 52 5f 43 4c 4f 53 45  RVER_ERROR_CLOSE
7a40: 5f 53 54 41 54 55 53 20 20 20 20 20 20 20 20 20  _STATUS         
7a50: 20 20 3d 20 31 30 31 31 2c 0a 09 09 57 49 4e 48    = 1011,...WINH
7a60: 54 54 50 5f 57 45 42 5f 53 4f 43 4b 45 54 5f 53  TTP_WEB_SOCKET_S
7a70: 45 43 55 52 45 5f 48 41 4e 44 53 48 41 4b 45 5f  ECURE_HANDSHAKE_
7a80: 45 52 52 4f 52 5f 43 4c 4f 53 45 5f 53 54 41 54  ERROR_CLOSE_STAT
7a90: 55 53 20 3d 20 31 30 31 35 0a 09 7d 0a 09 73 74  US = 1015..}..st
7aa0: 72 75 63 74 20 57 49 4e 48 54 54 50 5f 50 52 4f  ruct WINHTTP_PRO
7ab0: 58 59 5f 52 45 53 55 4c 54 5f 45 4e 54 52 59 20  XY_RESULT_ENTRY 
7ac0: 7b 0a 09 09 42 4f 4f 4c 20 20 20 20 20 20 20 20  {...BOOL        
7ad0: 20 20 20 20 66 50 72 6f 78 79 3b 20 20 20 20 20      fProxy;     
7ae0: 20 20 20 20 20 20 20 20 20 20 20 0a 09 09 42 4f             ...BO
7af0: 4f 4c 20 20 20 20 20 20 20 20 20 20 20 20 66 42  OL            fB
7b00: 79 70 61 73 73 3b 20 20 20 20 20 20 20 20 20 20  ypass;          
7b10: 20 20 20 20 20 0a 09 09 49 4e 54 45 52 4e 45 54       ...INTERNET
7b20: 5f 53 43 48 45 4d 45 20 50 72 6f 78 79 53 63 68  _SCHEME ProxySch
7b30: 65 6d 65 3b 20 20 20 20 20 20 20 20 20 20 20 0a  eme;           .
7b40: 09 09 50 57 53 54 52 20 20 20 20 20 20 20 20 20  ..PWSTR         
7b50: 20 20 70 77 73 7a 50 72 6f 78 79 3b 20 20 20 20    pwszProxy;    
7b60: 20 20 20 20 20 20 20 20 20 0a 09 09 49 4e 54 45           ...INTE
7b70: 52 4e 45 54 5f 50 4f 52 54 20 20 20 50 72 6f 78  RNET_PORT   Prox
7b80: 79 50 6f 72 74 3b 20 20 20 20 20 20 20 20 20 20  yPort;          
7b90: 20 20 20 0a 09 7d 0a 09 73 74 72 75 63 74 20 57     ..}..struct W
7ba0: 49 4e 48 54 54 50 5f 50 52 4f 58 59 5f 52 45 53  INHTTP_PROXY_RES
7bb0: 55 4c 54 20 7b 0a 09 09 44 57 4f 52 44 20 63 45  ULT {...DWORD cE
7bc0: 6e 74 72 69 65 73 3b 0a 09 09 57 49 4e 48 54 54  ntries;...WINHTT
7bd0: 50 5f 50 52 4f 58 59 5f 52 45 53 55 4c 54 5f 45  P_PROXY_RESULT_E
7be0: 4e 54 52 59 20 2a 70 45 6e 74 72 69 65 73 3b 0a  NTRY *pEntries;.
7bf0: 09 7d 0a 09 73 74 72 75 63 74 20 57 49 4e 48 54  .}..struct WINHT
7c00: 54 50 5f 57 45 42 5f 53 4f 43 4b 45 54 5f 41 53  TP_WEB_SOCKET_AS
7c10: 59 4e 43 5f 52 45 53 55 4c 54 20 7b 0a 09 09 57  YNC_RESULT {...W
7c20: 49 4e 48 54 54 50 5f 41 53 59 4e 43 5f 52 45 53  INHTTP_ASYNC_RES
7c30: 55 4c 54 20 41 73 79 6e 63 52 65 73 75 6c 74 3b  ULT AsyncResult;
7c40: 0a 09 09 57 49 4e 48 54 54 50 5f 57 45 42 5f 53  ...WINHTTP_WEB_S
7c50: 4f 43 4b 45 54 5f 4f 50 45 52 41 54 49 4f 4e 20  OCKET_OPERATION 
7c60: 4f 70 65 72 61 74 69 6f 6e 3b 0a 09 7d 0a 09 73  Operation;..}..s
7c70: 74 72 75 63 74 20 57 49 4e 48 54 54 50 5f 57 45  truct WINHTTP_WE
7c80: 42 5f 53 4f 43 4b 45 54 5f 53 54 41 54 55 53 20  B_SOCKET_STATUS 
7c90: 7b 0a 09 09 44 57 4f 52 44 20 64 77 42 79 74 65  {...DWORD dwByte
7ca0: 73 54 72 61 6e 73 66 65 72 72 65 64 3b 0a 09 09  sTransferred;...
7cb0: 57 49 4e 48 54 54 50 5f 57 45 42 5f 53 4f 43 4b  WINHTTP_WEB_SOCK
7cc0: 45 54 5f 42 55 46 46 45 52 5f 54 59 50 45 20 65  ET_BUFFER_TYPE e
7cd0: 42 75 66 66 65 72 54 79 70 65 3b 0a 09 7d 0a 7d  BufferType;..}.}
7ce0: 0a 0a 0a 65 78 74 65 72 6e 20 28 57 69 6e 64 6f  ...extern (Windo
7cf0: 77 73 29 20 7b 0a 09 42 4f 4f 4c 20 57 69 6e 48  ws) {..BOOL WinH
7d00: 74 74 70 41 64 64 52 65 71 75 65 73 74 48 65 61  ttpAddRequestHea
7d10: 64 65 72 73 28 48 49 4e 54 45 52 4e 45 54 20 68  ders(HINTERNET h
7d20: 52 65 71 75 65 73 74 2c 20 4c 50 43 57 53 54 52  Request, LPCWSTR
7d30: 20 70 77 73 7a 48 65 61 64 65 72 73 2c 20 44 57   pwszHeaders, DW
7d40: 4f 52 44 20 64 77 48 65 61 64 65 72 73 4c 65 6e  ORD dwHeadersLen
7d50: 67 74 68 2c 20 44 57 4f 52 44 20 64 77 4d 6f 64  gth, DWORD dwMod
7d60: 69 66 69 65 72 73 29 3b 0a 0a 09 42 4f 4f 4c 20  ifiers);...BOOL 
7d70: 57 69 6e 48 74 74 70 43 68 65 63 6b 50 6c 61 74  WinHttpCheckPlat
7d80: 66 6f 72 6d 28 29 3b 0a 0a 09 42 4f 4f 4c 20 57  form();...BOOL W
7d90: 69 6e 48 74 74 70 43 6c 6f 73 65 48 61 6e 64 6c  inHttpCloseHandl
7da0: 65 28 48 49 4e 54 45 52 4e 45 54 20 68 49 6e 74  e(HINTERNET hInt
7db0: 65 72 6e 65 74 29 3b 0a 0a 09 48 49 4e 54 45 52  ernet);...HINTER
7dc0: 4e 45 54 20 57 69 6e 48 74 74 70 43 6f 6e 6e 65  NET WinHttpConne
7dd0: 63 74 28 48 49 4e 54 45 52 4e 45 54 20 68 53 65  ct(HINTERNET hSe
7de0: 73 73 69 6f 6e 2c 20 4c 50 43 57 53 54 52 20 70  ssion, LPCWSTR p
7df0: 73 77 7a 53 65 72 76 65 72 4e 61 6d 65 2c 20 49  swzServerName, I
7e00: 4e 54 45 52 4e 45 54 5f 50 4f 52 54 20 6e 53 65  NTERNET_PORT nSe
7e10: 72 76 65 72 50 6f 72 74 2c 20 44 57 4f 52 44 20  rverPort, DWORD 
7e20: 64 77 52 65 73 65 72 76 65 64 29 3b 0a 0a 09 42  dwReserved);...B
7e30: 4f 4f 4c 20 57 69 6e 48 74 74 70 43 72 61 63 6b  OOL WinHttpCrack
7e40: 55 72 6c 28 4c 50 43 57 53 54 52 20 70 77 73 7a  Url(LPCWSTR pwsz
7e50: 55 72 6c 2c 20 44 57 4f 52 44 20 64 77 55 72 6c  Url, DWORD dwUrl
7e60: 4c 65 6e 67 74 68 2c 20 44 57 4f 52 44 20 64 77  Length, DWORD dw
7e70: 46 6c 61 67 73 2c 20 4c 50 55 52 4c 5f 43 4f 4d  Flags, LPURL_COM
7e80: 50 4f 4e 45 4e 54 53 20 6c 70 55 72 6c 43 6f 6d  PONENTS lpUrlCom
7e90: 70 6f 6e 65 6e 74 73 29 3b 0a 0a 09 42 4f 4f 4c  ponents);...BOOL
7ea0: 20 57 69 6e 48 74 74 70 43 72 65 61 74 65 55 72   WinHttpCreateUr
7eb0: 6c 28 4c 50 55 52 4c 5f 43 4f 4d 50 4f 4e 45 4e  l(LPURL_COMPONEN
7ec0: 54 53 20 6c 70 55 72 6c 43 6f 6d 70 6f 6e 65 6e  TS lpUrlComponen
7ed0: 74 73 2c 20 44 57 4f 52 44 20 64 77 46 6c 61 67  ts, DWORD dwFlag
7ee0: 73 2c 20 4c 50 57 53 54 52 20 70 77 73 7a 55 72  s, LPWSTR pwszUr
7ef0: 6c 2c 20 4c 50 44 57 4f 52 44 20 6c 70 64 77 55  l, LPDWORD lpdwU
7f00: 72 6c 4c 65 6e 67 74 68 29 3b 0a 09 42 4f 4f 4c  rlLength);..BOOL
7f10: 20 57 69 6e 48 74 74 70 44 65 74 65 63 74 41 75   WinHttpDetectAu
7f20: 74 6f 50 72 6f 78 79 43 6f 6e 66 69 67 55 72 6c  toProxyConfigUrl
7f30: 28 44 57 4f 52 44 20 64 77 41 75 74 6f 44 65 74  (DWORD dwAutoDet
7f40: 65 63 74 46 6c 61 67 73 2c 20 4c 50 57 53 54 52  ectFlags, LPWSTR
7f50: 20 2a 70 70 77 73 7a 41 75 74 6f 43 6f 6e 66 69   *ppwszAutoConfi
7f60: 67 55 72 6c 29 3b 0a 0a 09 42 4f 4f 4c 20 57 69  gUrl);...BOOL Wi
7f70: 6e 48 74 74 70 47 65 74 44 65 66 61 75 6c 74 50  nHttpGetDefaultP
7f80: 72 6f 78 79 43 6f 6e 66 69 67 75 72 61 74 69 6f  roxyConfiguratio
7f90: 6e 28 57 49 4e 48 54 54 50 5f 50 52 4f 58 59 5f  n(WINHTTP_PROXY_
7fa0: 49 4e 46 4f 20 2a 70 50 72 6f 78 79 49 6e 66 6f  INFO *pProxyInfo
7fb0: 29 3b 0a 09 42 4f 4f 4c 20 57 69 6e 48 74 74 70  );..BOOL WinHttp
7fc0: 47 65 74 49 45 50 72 6f 78 79 43 6f 6e 66 69 67  GetIEProxyConfig
7fd0: 46 6f 72 43 75 72 72 65 6e 74 55 73 65 72 28 57  ForCurrentUser(W
7fe0: 49 4e 48 54 54 50 5f 43 55 52 52 45 4e 54 5f 55  INHTTP_CURRENT_U
7ff0: 53 45 52 5f 49 45 5f 50 52 4f 58 59 5f 43 4f 4e  SER_IE_PROXY_CON
8000: 46 49 47 20 2a 70 50 72 6f 78 79 43 6f 6e 66 69  FIG *pProxyConfi
8010: 67 29 3b 0a 09 42 4f 4f 4c 20 57 69 6e 48 74 74  g);..BOOL WinHtt
8020: 70 47 65 74 50 72 6f 78 79 46 6f 72 55 72 6c 28  pGetProxyForUrl(
8030: 48 49 4e 54 45 52 4e 45 54 20 68 53 65 73 73 69  HINTERNET hSessi
8040: 6f 6e 2c 20 20 4c 50 43 57 53 54 52 20 6c 70 63  on,  LPCWSTR lpc
8050: 77 73 7a 55 72 6c 2c 0a 09 20 20 20 20 20 20 20  wszUrl,..       
8060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8070: 20 20 20 20 57 49 4e 48 54 54 50 5f 41 55 54 4f      WINHTTP_AUTO
8080: 50 52 4f 58 59 5f 4f 50 54 49 4f 4e 53 20 2a 70  PROXY_OPTIONS *p
8090: 41 75 74 6f 50 72 6f 78 79 4f 70 74 69 6f 6e 73  AutoProxyOptions
80a0: 2c 20 57 49 4e 48 54 54 50 5f 50 52 4f 58 59 5f  , WINHTTP_PROXY_
80b0: 49 4e 46 4f 20 2a 70 50 72 6f 78 79 49 6e 66 6f  INFO *pProxyInfo
80c0: 29 3b 0a 0a 09 48 49 4e 54 45 52 4e 45 54 20 57  );...HINTERNET W
80d0: 69 6e 48 74 74 70 4f 70 65 6e 28 4c 50 43 57 53  inHttpOpen(LPCWS
80e0: 54 52 20 70 77 73 7a 55 73 65 72 41 67 65 6e 74  TR pwszUserAgent
80f0: 2c 20 44 57 4f 52 44 20 64 77 41 63 63 65 73 73  , DWORD dwAccess
8100: 54 79 70 65 2c 20 4c 50 43 57 53 54 52 20 70 77  Type, LPCWSTR pw
8110: 73 7a 50 72 6f 78 79 4e 61 6d 65 2c 0a 09 20 20  szProxyName,..  
8120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8130: 20 20 20 20 4c 50 43 57 53 54 52 20 70 77 73 7a      LPCWSTR pwsz
8140: 50 72 6f 78 79 42 79 70 61 73 73 2c 20 44 57 4f  ProxyBypass, DWO
8150: 52 44 20 64 77 46 6c 61 67 73 29 3b 0a 09 48 49  RD dwFlags);..HI
8160: 4e 54 45 52 4e 45 54 20 57 69 6e 48 74 74 70 4f  NTERNET WinHttpO
8170: 70 65 6e 52 65 71 75 65 73 74 28 48 49 4e 54 45  penRequest(HINTE
8180: 52 4e 45 54 20 68 43 6f 6e 6e 65 63 74 2c 20 4c  RNET hConnect, L
8190: 50 43 57 53 54 52 20 70 77 73 7a 56 65 72 62 2c  PCWSTR pwszVerb,
81a0: 20 4c 50 43 57 53 54 52 20 70 77 73 7a 4f 62 6a   LPCWSTR pwszObj
81b0: 65 63 74 4e 61 6d 65 2c 0a 09 20 20 20 20 20 20  ectName,..      
81c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
81d0: 20 20 20 20 20 20 20 4c 50 43 57 53 54 52 20 70         LPCWSTR p
81e0: 77 73 7a 56 65 72 73 69 6f 6e 2c 20 4c 50 43 57  wszVersion, LPCW
81f0: 53 54 52 20 70 77 73 7a 52 65 66 65 72 72 65 72  STR pwszReferrer
8200: 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
8210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8220: 4c 50 43 57 53 54 52 20 2a 70 70 77 73 7a 41 63  LPCWSTR *ppwszAc
8230: 63 65 70 74 54 79 70 65 73 2c 20 44 57 4f 52 44  ceptTypes, DWORD
8240: 20 64 77 46 6c 61 67 73 29 3b 0a 0a 09 42 4f 4f   dwFlags);...BOO
8250: 4c 20 57 69 6e 48 74 74 70 51 75 65 72 79 41 75  L WinHttpQueryAu
8260: 74 68 53 63 68 65 6d 65 73 28 48 49 4e 54 45 52  thSchemes(HINTER
8270: 4e 45 54 20 68 52 65 71 75 65 73 74 2c 20 4c 50  NET hRequest, LP
8280: 44 57 4f 52 44 20 6c 70 64 77 53 75 70 70 6f 72  DWORD lpdwSuppor
8290: 74 65 64 53 63 68 65 6d 65 73 2c 0a 09 20 20 20  tedSchemes,..   
82a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
82b0: 20 20 20 20 20 20 20 20 20 20 4c 50 44 57 4f 52            LPDWOR
82c0: 44 20 6c 70 64 77 46 69 72 73 74 53 63 68 65 6d  D lpdwFirstSchem
82d0: 65 2c 20 4c 50 44 57 4f 52 44 20 70 64 77 41 75  e, LPDWORD pdwAu
82e0: 74 68 54 61 72 67 65 74 29 3b 0a 09 42 4f 4f 4c  thTarget);..BOOL
82f0: 20 57 69 6e 48 74 74 70 51 75 65 72 79 44 61 74   WinHttpQueryDat
8300: 61 41 76 61 69 6c 61 62 6c 65 28 48 49 4e 54 45  aAvailable(HINTE
8310: 52 4e 45 54 20 68 52 65 71 75 65 73 74 2c 20 4c  RNET hRequest, L
8320: 50 44 57 4f 52 44 20 6c 70 64 77 4e 75 6d 62 65  PDWORD lpdwNumbe
8330: 72 4f 66 42 79 74 65 73 41 76 61 69 6c 61 62 6c  rOfBytesAvailabl
8340: 65 29 3b 0a 09 42 4f 4f 4c 20 57 69 6e 48 74 74  e);..BOOL WinHtt
8350: 70 51 75 65 72 79 48 65 61 64 65 72 73 28 48 49  pQueryHeaders(HI
8360: 4e 54 45 52 4e 45 54 20 68 52 65 71 75 65 73 74  NTERNET hRequest
8370: 2c 20 44 57 4f 52 44 20 64 77 49 6e 66 6f 4c 65  , DWORD dwInfoLe
8380: 76 65 6c 2c 20 4c 50 43 57 53 54 52 20 70 77 73  vel, LPCWSTR pws
8390: 7a 4e 61 6d 65 2c 0a 20 20 20 20 20 20 20 20 20  zName,.         
83a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
83b0: 20 20 20 20 4c 50 56 4f 49 44 20 6c 70 42 75 66      LPVOID lpBuf
83c0: 66 65 72 2c 20 4c 50 44 57 4f 52 44 20 6c 70 64  fer, LPDWORD lpd
83d0: 77 42 75 66 66 65 72 4c 65 6e 67 74 68 2c 20 4c  wBufferLength, L
83e0: 50 44 57 4f 52 44 20 6c 70 64 77 49 6e 64 65 78  PDWORD lpdwIndex
83f0: 29 3b 0a 09 42 4f 4f 4c 20 57 69 6e 48 74 74 70  );..BOOL WinHttp
8400: 51 75 65 72 79 4f 70 74 69 6f 6e 28 48 49 4e 54  QueryOption(HINT
8410: 45 52 4e 45 54 20 68 49 6e 74 65 72 6e 65 74 2c  ERNET hInternet,
8420: 20 44 57 4f 52 44 20 64 77 4f 70 74 69 6f 6e 2c   DWORD dwOption,
8430: 20 4c 50 56 4f 49 44 20 6c 70 42 75 66 66 65 72   LPVOID lpBuffer
8440: 2c 0a 09 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
8450: 20 20 20 20 20 20 20 20 20 20 20 4c 50 44 57 4f             LPDWO
8460: 52 44 20 6c 70 64 77 42 75 66 66 65 72 4c 65 6e  RD lpdwBufferLen
8470: 67 74 68 29 3b 0a 0a 09 42 4f 4f 4c 20 57 69 6e  gth);...BOOL Win
8480: 48 74 74 70 52 65 61 64 44 61 74 61 28 48 49 4e  HttpReadData(HIN
8490: 54 45 52 4e 45 54 20 68 52 65 71 75 65 73 74 2c  TERNET hRequest,
84a0: 20 4c 50 56 4f 49 44 20 6c 70 42 75 66 66 65 72   LPVOID lpBuffer
84b0: 2c 20 44 57 4f 52 44 20 64 77 4e 75 6d 62 65 72  , DWORD dwNumber
84c0: 4f 66 42 79 74 65 73 54 6f 52 65 61 64 2c 0a 09  OfBytesToRead,..
84d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
84e0: 20 20 20 20 20 4c 50 44 57 4f 52 44 20 6c 70 64       LPDWORD lpd
84f0: 77 4e 75 6d 62 65 72 4f 66 42 79 74 65 73 52 65  wNumberOfBytesRe
8500: 61 64 29 3b 0a 09 42 4f 4f 4c 20 57 69 6e 48 74  ad);..BOOL WinHt
8510: 74 70 52 65 63 65 69 76 65 52 65 73 70 6f 6e 73  tpReceiveRespons
8520: 65 28 48 49 4e 54 45 52 4e 45 54 20 68 52 65 71  e(HINTERNET hReq
8530: 75 65 73 74 2c 20 4c 50 56 4f 49 44 20 6c 70 52  uest, LPVOID lpR
8540: 65 73 65 72 76 65 64 29 3b 0a 0a 09 42 4f 4f 4c  eserved);...BOOL
8550: 20 57 69 6e 48 74 74 70 53 65 6e 64 52 65 71 75   WinHttpSendRequ
8560: 65 73 74 28 48 49 4e 54 45 52 4e 45 54 20 68 52  est(HINTERNET hR
8570: 65 71 75 65 73 74 2c 20 4c 50 43 57 53 54 52 20  equest, LPCWSTR 
8580: 70 77 73 7a 48 65 61 64 65 72 73 2c 20 44 57 4f  pwszHeaders, DWO
8590: 52 44 20 64 77 48 65 61 64 65 72 73 4c 65 6e 67  RD dwHeadersLeng
85a0: 74 68 2c 20 0a 09 20 20 20 20 20 20 20 20 20 20  th, ..          
85b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4c 50                LP
85c0: 56 4f 49 44 20 6c 70 4f 70 74 69 6f 6e 61 6c 2c  VOID lpOptional,
85d0: 20 44 57 4f 52 44 20 64 77 4f 70 74 69 6f 6e 61   DWORD dwOptiona
85e0: 6c 4c 65 6e 67 74 68 2c 20 44 57 4f 52 44 20 64  lLength, DWORD d
85f0: 77 54 6f 74 61 6c 4c 65 6e 67 74 68 2c 20 44 57  wTotalLength, DW
8600: 4f 52 44 5f 50 54 52 20 64 77 43 6f 6e 74 65 78  ORD_PTR dwContex
8610: 74 29 3b 0a 0a 09 42 4f 4f 4c 20 57 69 6e 48 74  t);...BOOL WinHt
8620: 74 70 53 65 74 43 72 65 64 65 6e 74 69 61 6c 73  tpSetCredentials
8630: 28 48 49 4e 54 45 52 4e 45 54 20 68 52 65 71 75  (HINTERNET hRequ
8640: 65 73 74 2c 20 44 57 4f 52 44 20 41 75 74 68 54  est, DWORD AuthT
8650: 61 72 67 65 74 73 2c 20 44 57 4f 52 44 20 41 75  argets, DWORD Au
8660: 74 68 53 63 68 65 6d 65 2c 0a 20 20 20 20 20 20  thScheme,.      
8670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8680: 20 20 20 20 20 20 20 20 20 4c 50 43 57 53 54 52           LPCWSTR
8690: 20 70 77 73 7a 55 73 65 72 4e 61 6d 65 2c 20 4c   pwszUserName, L
86a0: 50 43 57 53 54 52 20 70 77 73 7a 50 61 73 73 77  PCWSTR pwszPassw
86b0: 6f 72 64 2c 20 4c 50 56 4f 49 44 20 70 41 75 74  ord, LPVOID pAut
86c0: 68 50 61 72 61 6d 73 29 3b 0a 09 42 4f 4f 4c 20  hParams);..BOOL 
86d0: 57 69 6e 48 74 74 70 53 65 74 44 65 66 61 75 6c  WinHttpSetDefaul
86e0: 74 50 72 6f 78 79 43 6f 6e 66 69 67 75 72 61 74  tProxyConfigurat
86f0: 69 6f 6e 28 57 49 4e 48 54 54 50 5f 50 52 4f 58  ion(WINHTTP_PROX
8700: 59 5f 49 4e 46 4f 20 2a 70 50 72 6f 78 79 49 6e  Y_INFO *pProxyIn
8710: 66 6f 29 3b 0a 09 42 4f 4f 4c 20 57 69 6e 48 74  fo);..BOOL WinHt
8720: 74 70 53 65 74 4f 70 74 69 6f 6e 28 48 49 4e 54  tpSetOption(HINT
8730: 45 52 4e 45 54 20 68 49 6e 74 65 72 6e 65 74 2c  ERNET hInternet,
8740: 20 44 57 4f 52 44 20 64 77 4f 70 74 69 6f 6e 2c   DWORD dwOption,
8750: 20 4c 50 56 4f 49 44 20 6c 70 42 75 66 66 65 72   LPVOID lpBuffer
8760: 2c 20 44 57 4f 52 44 20 64 77 42 75 66 66 65 72  , DWORD dwBuffer
8770: 4c 65 6e 67 74 68 29 3b 0a 09 57 49 4e 48 54 54  Length);..WINHTT
8780: 50 5f 53 54 41 54 55 53 5f 43 41 4c 4c 42 41 43  P_STATUS_CALLBAC
8790: 4b 20 57 69 6e 48 74 74 70 53 65 74 53 74 61 74  K WinHttpSetStat
87a0: 75 73 43 61 6c 6c 62 61 63 6b 28 48 49 4e 54 45  usCallback(HINTE
87b0: 52 4e 45 54 20 68 49 6e 74 65 72 6e 65 74 2c 0a  RNET hInternet,.
87c0: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
87d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
87e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
87f0: 20 20 57 49 4e 48 54 54 50 5f 53 54 41 54 55 53    WINHTTP_STATUS
8800: 5f 43 41 4c 4c 42 41 43 4b 20 6c 70 66 6e 49 6e  _CALLBACK lpfnIn
8810: 74 65 72 6e 65 74 43 61 6c 6c 62 61 63 6b 2c 0a  ternetCallback,.
8820: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8850: 20 20 44 57 4f 52 44 20 64 77 4e 6f 74 69 66 69    DWORD dwNotifi
8860: 63 61 74 69 6f 6e 46 6c 61 67 73 2c 20 44 57 4f  cationFlags, DWO
8870: 52 44 5f 50 54 52 20 64 77 52 65 73 65 72 76 65  RD_PTR dwReserve
8880: 64 29 3b 0a 09 42 4f 4f 4c 20 57 69 6e 48 74 74  d);..BOOL WinHtt
8890: 70 53 65 74 54 69 6d 65 6f 75 74 73 28 48 49 4e  pSetTimeouts(HIN
88a0: 54 45 52 4e 45 54 20 68 49 6e 74 65 72 6e 65 74  TERNET hInternet
88b0: 2c 20 69 6e 74 20 64 77 52 65 73 6f 6c 76 65 54  , int dwResolveT
88c0: 69 6d 65 6f 75 74 2c 20 69 6e 74 20 64 77 43 6f  imeout, int dwCo
88d0: 6e 6e 65 63 74 54 69 6d 65 6f 75 74 2c 0a 09 20  nnectTimeout,.. 
88e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
88f0: 20 20 20 20 20 20 20 69 6e 74 20 64 77 53 65 6e         int dwSen
8900: 64 54 69 6d 65 6f 75 74 2c 20 69 6e 74 20 64 77  dTimeout, int dw
8910: 52 65 63 65 69 76 65 54 69 6d 65 6f 75 74 29 3b  ReceiveTimeout);
8920: 0a 0a 09 42 4f 4f 4c 20 57 69 6e 48 74 74 70 54  ...BOOL WinHttpT
8930: 69 6d 65 46 72 6f 6d 53 79 73 74 65 6d 54 69 6d  imeFromSystemTim
8940: 65 28 63 6f 6e 73 74 20 53 59 53 54 45 4d 54 49  e(const SYSTEMTI
8950: 4d 45 20 2a 70 73 74 2c 20 4c 50 57 53 54 52 20  ME *pst, LPWSTR 
8960: 70 77 73 7a 54 69 6d 65 29 3b 0a 09 42 4f 4f 4c  pwszTime);..BOOL
8970: 20 57 69 6e 48 74 74 70 54 69 6d 65 54 6f 53 79   WinHttpTimeToSy
8980: 73 74 65 6d 54 69 6d 65 28 4c 50 43 57 53 54 52  stemTime(LPCWSTR
8990: 20 70 77 73 7a 54 69 6d 65 2c 20 53 59 53 54 45   pwszTime, SYSTE
89a0: 4d 54 49 4d 45 20 2a 70 73 74 29 3b 0a 0a 09 42  MTIME *pst);...B
89b0: 4f 4f 4c 20 57 69 6e 48 74 74 70 57 72 69 74 65  OOL WinHttpWrite
89c0: 44 61 74 61 28 48 49 4e 54 45 52 4e 45 54 20 68  Data(HINTERNET h
89d0: 52 65 71 75 65 73 74 2c 20 4c 50 43 56 4f 49 44  Request, LPCVOID
89e0: 20 6c 70 42 75 66 66 65 72 2c 20 44 57 4f 52 44   lpBuffer, DWORD
89f0: 20 64 77 4e 75 6d 62 65 72 4f 66 42 79 74 65 73   dwNumberOfBytes
8a00: 54 6f 57 72 69 74 65 2c 0a 09 20 20 20 20 20 20  ToWrite,..      
8a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8a20: 4c 50 44 57 4f 52 44 20 6c 70 64 77 4e 75 6d 62  LPDWORD lpdwNumb
8a30: 65 72 4f 66 42 79 74 65 73 57 72 69 74 74 65 6e  erOfBytesWritten
8a40: 29 3b 0a 0a 20 20 2f 2f 20 56 65 72 73 69 6f 6e  );..  // Version
8a50: 28 57 69 6e 64 6f 77 73 38 29 20 7c 7c 20 56 65  (Windows8) || Ve
8a60: 72 73 69 6f 6e 28 57 69 6e 64 6f 77 73 32 30 31  rsion(Windows201
8a70: 32 29 3a 0a 20 20 73 74 61 74 69 63 20 69 66 20  2):.  static if 
8a80: 28 5f 57 49 4e 33 32 5f 57 49 4e 4e 54 20 3e 3d  (_WIN32_WINNT >=
8a90: 20 30 78 36 30 32 29 09 7b 0a 09 44 57 4f 52 44   0x602).{..DWORD
8aa0: 20 57 69 6e 48 74 74 70 43 72 65 61 74 65 50 72   WinHttpCreatePr
8ab0: 6f 78 79 52 65 73 6f 6c 76 65 72 28 48 49 4e 54  oxyResolver(HINT
8ac0: 45 52 4e 45 54 20 68 53 65 73 73 69 6f 6e 2c 20  ERNET hSession, 
8ad0: 48 49 4e 54 45 52 4e 45 54 20 2a 70 68 52 65 73  HINTERNET *phRes
8ae0: 6f 6c 76 65 72 29 3b 0a 09 76 6f 69 64 20 57 69  olver);..void Wi
8af0: 6e 48 74 74 70 46 72 65 65 50 72 6f 78 79 52 65  nHttpFreeProxyRe
8b00: 73 75 6c 74 28 57 49 4e 48 54 54 50 5f 50 52 4f  sult(WINHTTP_PRO
8b10: 58 59 5f 52 45 53 55 4c 54 20 2a 70 50 72 6f 78  XY_RESULT *pProx
8b20: 79 52 65 73 75 6c 74 29 3b 0a 09 44 57 4f 52 44  yResult);..DWORD
8b30: 20 57 69 6e 48 74 74 70 47 65 74 50 72 6f 78 79   WinHttpGetProxy
8b40: 46 6f 72 55 72 6c 45 78 28 48 49 4e 54 45 52 4e  ForUrlEx(HINTERN
8b50: 45 54 20 68 52 65 73 6f 6c 76 65 72 2c 20 50 43  ET hResolver, PC
8b60: 57 53 54 52 20 70 63 77 73 7a 55 72 6c 2c 0a 09  WSTR pcwszUrl,..
8b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 57 49                WI
8b90: 4e 48 54 54 50 5f 41 55 54 4f 50 52 4f 58 59 5f  NHTTP_AUTOPROXY_
8ba0: 4f 50 54 49 4f 4e 53 20 2a 70 41 75 74 6f 50 72  OPTIONS *pAutoPr
8bb0: 6f 78 79 4f 70 74 69 6f 6e 73 2c 20 44 57 4f 52  oxyOptions, DWOR
8bc0: 44 5f 50 54 52 20 70 43 6f 6e 74 65 78 74 29 3b  D_PTR pContext);
8bd0: 0a 09 44 57 4f 52 44 20 57 69 6e 48 74 74 70 47  ..DWORD WinHttpG
8be0: 65 74 50 72 6f 78 79 52 65 73 75 6c 74 28 48 49  etProxyResult(HI
8bf0: 4e 54 45 52 4e 45 54 20 68 52 65 73 6f 6c 76 65  NTERNET hResolve
8c00: 72 2c 20 57 49 4e 48 54 54 50 5f 50 52 4f 58 59  r, WINHTTP_PROXY
8c10: 5f 52 45 53 55 4c 54 20 2a 70 50 72 6f 78 79 52  _RESULT *pProxyR
8c20: 65 73 75 6c 74 29 3b 0a 09 44 57 4f 52 44 20 57  esult);..DWORD W
8c30: 69 6e 48 74 74 70 52 65 73 65 74 41 75 74 6f 50  inHttpResetAutoP
8c40: 72 6f 78 79 28 48 49 4e 54 45 52 4e 45 54 20 68  roxy(HINTERNET h
8c50: 53 65 73 73 69 6f 6e 2c 20 44 57 4f 52 44 20 64  Session, DWORD d
8c60: 77 46 6c 61 67 73 29 3b 09 20 20 20 20 20 20 20  wFlags);.       
8c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0a                 .
8c80: 09 44 57 4f 52 44 20 57 69 6e 48 74 74 70 57 65  .DWORD WinHttpWe
8c90: 62 53 6f 63 6b 65 74 43 6c 6f 73 65 28 48 49 4e  bSocketClose(HIN
8ca0: 54 45 52 4e 45 54 20 68 57 65 62 53 6f 63 6b 65  TERNET hWebSocke
8cb0: 74 2c 20 55 53 48 4f 52 54 20 75 73 53 74 61 74  t, USHORT usStat
8cc0: 75 73 2c 20 50 56 4f 49 44 20 70 76 52 65 61 73  us, PVOID pvReas
8cd0: 6f 6e 2c 20 44 57 4f 52 44 20 64 77 52 65 61 73  on, DWORD dwReas
8ce0: 6f 6e 4c 65 6e 67 74 68 29 3b 0a 09 48 49 4e 54  onLength);..HINT
8cf0: 45 52 4e 45 54 20 57 69 6e 48 74 74 70 57 65 62  ERNET WinHttpWeb
8d00: 53 6f 63 6b 65 74 43 6f 6d 70 6c 65 74 65 55 70  SocketCompleteUp
8d10: 67 72 61 64 65 28 48 49 4e 54 45 52 4e 45 54 20  grade(HINTERNET 
8d20: 68 52 65 71 75 65 73 74 2c 20 44 57 4f 52 44 5f  hRequest, DWORD_
8d30: 50 54 52 20 70 43 6f 6e 74 65 78 74 29 3b 0a 09  PTR pContext);..
8d40: 44 57 4f 52 44 20 57 69 6e 48 74 74 70 57 65 62  DWORD WinHttpWeb
8d50: 53 6f 63 6b 65 74 51 75 65 72 79 43 6c 6f 73 65  SocketQueryClose
8d60: 53 74 61 74 75 73 28 48 49 4e 54 45 52 4e 45 54  Status(HINTERNET
8d70: 20 68 57 65 62 53 6f 63 6b 65 74 2c 20 55 53 48   hWebSocket, USH
8d80: 4f 52 54 20 2a 70 75 73 53 74 61 74 75 73 2c 20  ORT *pusStatus, 
8d90: 50 56 4f 49 44 20 70 76 52 65 61 73 6f 6e 2c 0a  PVOID pvReason,.
8da0: 09 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8dc0: 20 20 20 20 20 20 20 20 44 57 4f 52 44 20 64 77          DWORD dw
8dd0: 52 65 61 73 6f 6e 4c 65 6e 67 74 68 2c 20 44 57  ReasonLength, DW
8de0: 4f 52 44 20 2a 70 64 77 52 65 61 73 6f 6e 4c 65  ORD *pdwReasonLe
8df0: 6e 67 74 68 43 6f 6e 73 75 6d 65 64 29 3b 0a 09  ngthConsumed);..
8e00: 44 57 4f 52 44 20 57 69 6e 48 74 74 70 57 65 62  DWORD WinHttpWeb
8e10: 53 6f 63 6b 65 74 52 65 63 65 69 76 65 28 48 49  SocketReceive(HI
8e20: 4e 54 45 52 4e 45 54 20 68 57 65 62 53 6f 63 6b  NTERNET hWebSock
8e30: 65 74 2c 20 50 56 4f 49 44 20 70 76 42 75 66 66  et, PVOID pvBuff
8e40: 65 72 2c 20 20 44 57 4f 52 44 20 64 77 42 75 66  er,  DWORD dwBuf
8e50: 66 65 72 4c 65 6e 67 74 68 2c 0a 09 20 20 20 20  ferLength,..    
8e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8e70: 20 20 20 20 20 20 20 20 20 20 44 57 4f 52 44 20            DWORD 
8e80: 2a 70 64 77 42 79 74 65 73 52 65 61 64 2c 20 57  *pdwBytesRead, W
8e90: 49 4e 48 54 54 50 5f 57 45 42 5f 53 4f 43 4b 45  INHTTP_WEB_SOCKE
8ea0: 54 5f 42 55 46 46 45 52 5f 54 59 50 45 20 2a 70  T_BUFFER_TYPE *p
8eb0: 65 42 75 66 66 65 72 54 79 70 65 29 3b 0a 09 44  eBufferType);..D
8ec0: 57 4f 52 44 20 57 69 6e 48 74 74 70 57 65 62 53  WORD WinHttpWebS
8ed0: 6f 63 6b 65 74 53 65 6e 64 28 48 49 4e 54 45 52  ocketSend(HINTER
8ee0: 4e 45 54 20 68 57 65 62 53 6f 63 6b 65 74 2c 20  NET hWebSocket, 
8ef0: 57 49 4e 48 54 54 50 5f 57 45 42 5f 53 4f 43 4b  WINHTTP_WEB_SOCK
8f00: 45 54 5f 42 55 46 46 45 52 5f 54 59 50 45 20 65  ET_BUFFER_TYPE e
8f10: 42 75 66 66 65 72 54 79 70 65 2c 0a 09 20 20 20  BufferType,..   
8f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8f30: 20 20 20 20 20 20 20 20 50 56 4f 49 44 20 70 76          PVOID pv
8f40: 42 75 66 66 65 72 2c 20 44 57 4f 52 44 20 64 77  Buffer, DWORD dw
8f50: 42 75 66 66 65 72 4c 65 6e 67 74 68 29 3b 0a 09  BufferLength);..
8f60: 44 57 4f 52 44 20 57 69 6e 48 74 74 70 57 65 62  DWORD WinHttpWeb
8f70: 53 6f 63 6b 65 74 53 68 75 74 64 6f 77 6e 28 48  SocketShutdown(H
8f80: 49 4e 54 45 52 4e 45 54 20 68 57 65 62 53 6f 63  INTERNET hWebSoc
8f90: 6b 65 74 2c 20 55 53 48 4f 52 54 20 75 73 53 74  ket, USHORT usSt
8fa0: 61 74 75 73 2c 20 50 56 4f 49 44 20 70 76 52 65  atus, PVOID pvRe
8fb0: 61 73 6f 6e 2c 20 44 57 4f 52 44 20 64 77 52 65  ason, DWORD dwRe
8fc0: 61 73 6f 6e 4c 65 6e 67 74 68 29 3b 0a 20 20 7d  asonLength);.  }
8fd0: 0a 7d 0a                                         .}.