winhttp.pp 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803
  1. {
  2. This file is part of the Free Pascal run time library.
  3. Copyright (c) 2017 by Michael Van Canneyt
  4. member of the Free Pascal development team.
  5. See the file COPYING.FPC, included in this distribution,
  6. for details about the copyright.
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  10. Original copyright statement follows.
  11. }
  12. {
  13. Copyright (c) Microsoft Corporation. All rights reserved.
  14. Module Name:
  15. winhttp.h
  16. Abstract:
  17. Contains manifests, macros, types and prototypes for Windows HTTP Services
  18. }
  19. {$IFNDEF FPC_DOTTEDUNITS}
  20. unit WinHTTP;
  21. {$ENDIF FPC_DOTTEDUNITS}
  22. interface
  23. {$IFDEF FPC_DOTTEDUNITS}
  24. uses WinApi.Windows;
  25. {$ELSE FPC_DOTTEDUNITS}
  26. uses Windows;
  27. {$ENDIF FPC_DOTTEDUNITS}
  28. {
  29. Automatically converted by H2Pas 1.0.0 from winhttp.h
  30. The following command line parameters were used:
  31. -D
  32. -w
  33. -S
  34. -l
  35. winhttp.dll
  36. winhttp.h
  37. }
  38. const
  39. External_library='winhttp.dll'; {Setup as you need}
  40. {$IFDEF FPC}
  41. {$PACKRECORDS C}
  42. {$ENDIF}
  43. type
  44. PLPVOID = ^LPVOID;
  45. LPUSHORT = ^USHORT;
  46. const
  47. INTERNET_DEFAULT_PORT = 0;
  48. INTERNET_DEFAULT_HTTP_PORT = 80;
  49. INTERNET_DEFAULT_HTTPS_PORT = 443;
  50. WINHTTP_FLAG_ASYNC = $10000000;
  51. WINHTTP_FLAG_SECURE = $00800000;
  52. WINHTTP_FLAG_ESCAPE_PERCENT = $00000004;
  53. WINHTTP_FLAG_NULL_CODEPAGE = $00000008;
  54. WINHTTP_FLAG_BYPASS_PROXY_CACHE = $00000100;
  55. WINHTTP_FLAG_REFRESH = WINHTTP_FLAG_BYPASS_PROXY_CACHE;
  56. WINHTTP_FLAG_ESCAPE_DISABLE = $00000040;
  57. WINHTTP_FLAG_ESCAPE_DISABLE_QUERY = $00000080;
  58. SECURITY_FLAG_IGNORE_UNKNOWN_CA = $00000100;
  59. SECURITY_FLAG_IGNORE_CERT_DATE_INVALID = $00002000;
  60. SECURITY_FLAG_IGNORE_CERT_CN_INVALID = $00001000;
  61. SECURITY_FLAG_IGNORE_CERT_WRONG_USAGE = $00000200;
  62. INTERNET_SCHEME_HTTP = 1;
  63. INTERNET_SCHEME_HTTPS = 2;
  64. INTERNET_SCHEME_FTP = 3;
  65. INTERNET_SCHEME_SOCKS = 4;
  66. WINHTTP_AUTOPROXY_AUTO_DETECT = $00000001;
  67. WINHTTP_AUTOPROXY_CONFIG_URL = $00000002;
  68. WINHTTP_AUTOPROXY_HOST_KEEPCASE = $00000004;
  69. WINHTTP_AUTOPROXY_HOST_LOWERCASE = $00000008;
  70. WINHTTP_AUTOPROXY_ALLOW_AUTOCONFIG = $00000100;
  71. WINHTTP_AUTOPROXY_ALLOW_STATIC = $00000200;
  72. WINHTTP_AUTOPROXY_ALLOW_CM = $00000400;
  73. WINHTTP_AUTOPROXY_RUN_INPROCESS = $00010000;
  74. WINHTTP_AUTOPROXY_RUN_PROCESS_ONLY = $00020000;
  75. WINHTTP_AUTOPROXY_NO_DIRECTACCESS = $00040000;
  76. WINHTTP_AUTOPROXY_NO_CACHE_CLIENT = $00080000;
  77. WINHTTP_AUTOPROXY_NO_CACHE_SVC = $00100000;
  78. WINHTTP_AUTOPROXY_SORT_RESULTS = $00400000;
  79. WINHTTP_AUTO_DETECT_TYPE_DHCP = $00000001;
  80. WINHTTP_AUTO_DETECT_TYPE_DNS_A = $00000002;
  81. NETWORKING_KEY_BUFSIZE = 128;
  82. WINHTTP_TIME_FORMAT_BUFSIZE = 62;
  83. WINHTTP_OPTION_CALLBACK = 1;
  84. WINHTTP_FIRST_OPTION = WINHTTP_OPTION_CALLBACK;
  85. WINHTTP_OPTION_RESOLVE_TIME = 2;
  86. WINHTTP_OPTION_CONNECT_TIME = 3;
  87. WINHTTP_OPTION_CONNECT_RETRIES = 4;
  88. WINHTTP_OPTION_SEND_TIME = 5;
  89. WINHTTP_OPTION_RECEIVE_TIME = 6;
  90. WINHTTP_OPTION_RECEIVE_RESPONSE_TIME = 7;
  91. WINHTTP_OPTION_HANDLE_TYPE = 9;
  92. WINHTTP_OPTION_READ_BUFFER_SIZE = 12;
  93. WINHTTP_OPTION_WRITE_BUFFER_SIZE = 13;
  94. WINHTTP_OPTION_PARENT_HANDLE = 21;
  95. WINHTTP_OPTION_EXTENDED_ERROR = 24;
  96. WINHTTP_OPTION_SECURITY_FLAGS = 31;
  97. WINHTTP_OPTION_SECURITY_CERTIFICATE_STRUCT = 32;
  98. WINHTTP_OPTION_URL = 34;
  99. WINHTTP_OPTION_SECURITY_KEY_BITNESS = 36;
  100. WINHTTP_OPTION_PROXY = 38;
  101. WINHTTP_OPTION_PROXY_RESULT_ENTRY = 39;
  102. WINHTTP_OPTION_USER_AGENT = 41;
  103. WINHTTP_OPTION_CONTEXT_VALUE = 45;
  104. WINHTTP_OPTION_CLIENT_CERT_CONTEXT = 47;
  105. WINHTTP_OPTION_REQUEST_PRIORITY = 58;
  106. WINHTTP_OPTION_HTTP_VERSION = 59;
  107. WINHTTP_OPTION_DISABLE_FEATURE = 63;
  108. WINHTTP_OPTION_CODEPAGE = 68;
  109. WINHTTP_OPTION_MAX_CONNS_PER_SERVER = 73;
  110. WINHTTP_OPTION_MAX_CONNS_PER_1_0_SERVER = 74;
  111. WINHTTP_OPTION_AUTOLOGON_POLICY = 77;
  112. WINHTTP_OPTION_SERVER_CERT_CONTEXT = 78;
  113. WINHTTP_OPTION_ENABLE_FEATURE = 79;
  114. WINHTTP_OPTION_WORKER_THREAD_COUNT = 80;
  115. WINHTTP_OPTION_PASSPORT_COBRANDING_TEXT = 81;
  116. WINHTTP_OPTION_PASSPORT_COBRANDING_URL = 82;
  117. WINHTTP_OPTION_CONFIGURE_PASSPORT_AUTH = 83;
  118. WINHTTP_OPTION_SECURE_PROTOCOLS = 84;
  119. WINHTTP_OPTION_ENABLETRACING = 85;
  120. WINHTTP_OPTION_PASSPORT_SIGN_ = 86;
  121. WINHTTP_OPTION_PASSPORT_RETURN_URL = 87;
  122. WINHTTP_OPTION_REDIRECT_POLICY = 88;
  123. WINHTTP_OPTION_MAX_HTTP_AUTOMATIC_REDIRECTS = 89;
  124. WINHTTP_OPTION_MAX_HTTP_STATUS_CONTINUE = 90;
  125. WINHTTP_OPTION_MAX_RESPONSE_HEADER_SIZE = 91;
  126. WINHTTP_OPTION_MAX_RESPONSE_DRAIN_SIZE = 92;
  127. WINHTTP_OPTION_CONNECTION_INFO = 93;
  128. WINHTTP_OPTION_CLIENT_CERT_ISSUER_LIST = 94;
  129. WINHTTP_OPTION_SPN = 96;
  130. WINHTTP_OPTION_GLOBAL_PROXY_CREDS = 97;
  131. WINHTTP_OPTION_GLOBAL_SERVER_CREDS = 98;
  132. WINHTTP_OPTION_UNLOAD_NOTIFY_EVENT = 99;
  133. WINHTTP_OPTION_REJECT_USERPWD_IN_URL = 100;
  134. WINHTTP_OPTION_USE_GLOBAL_SERVER_CREDENTIALS = 101;
  135. WINHTTP_OPTION_RECEIVE_PROXY_CONNECT_RESPONSE = 103;
  136. WINHTTP_OPTION_IS_PROXY_CONNECT_RESPONSE = 104;
  137. WINHTTP_OPTION_SERVER_SPN_USED = 106;
  138. WINHTTP_OPTION_PROXY_SPN_USED = 107;
  139. WINHTTP_OPTION_SERVER_CBT = 108;
  140. WINHTTP_OPTION_UNSAFE_HEADER_PARSING = 110;
  141. WINHTTP_OPTION_ASSURED_NON_BLOCKING_CALLBACKS = 111;
  142. WINHTTP_OPTION_UPGRADE_TO_WEB_SOCKET = 114;
  143. WINHTTP_OPTION_WEB_SOCKET_CLOSE_TIME = 115;
  144. WINHTTP_OPTION_WEB_SOCKET_KEEPALIVE_INTERVAL = 116;
  145. WINHTTP_OPTION_DECOMPRESSION = 118;
  146. WINHTTP_OPTION_WEB_SOCKET_RECEIVE_BUFFER_SIZE = 122;
  147. WINHTTP_OPTION_WEB_SOCKET_SEND_BUFFER_SIZE = 123;
  148. WINHTTP_OPTION_CONNECTION_FILTER = 131;
  149. WINHTTP_OPTION_ENABLE_HTTP_PROTOCOL = 133;
  150. WINHTTP_OPTION_HTTP_PROTOCOL_USED = 134;
  151. WINHTTP_OPTION_KDC_PROXY_SETTINGS = 136;
  152. WINHTTP_LAST_OPTION = WINHTTP_OPTION_KDC_PROXY_SETTINGS;
  153. WINHTTP_OPTION_USERNAME = $1000;
  154. WINHTTP_OPTION_PASSWORD = $1001;
  155. WINHTTP_OPTION_PROXY_USERNAME = $1002;
  156. WINHTTP_OPTION_PROXY_PASSWORD = $1003;
  157. WINHTTP_CONNS_PER_SERVER_UNLIMITED = $FFFFFFFF;
  158. WINHTTP_DECOMPRESSION_FLAG_GZIP = $00000001;
  159. WINHTTP_DECOMPRESSION_FLAG_DEFLATE = $00000002;
  160. WINHTTP_DECOMPRESSION_FLAG_ALL = WINHTTP_DECOMPRESSION_FLAG_GZIP or WINHTTP_DECOMPRESSION_FLAG_DEFLATE;
  161. WINHTTP_PROTOCOL_FLAG_HTTP2 = $1;
  162. WINHTTP_PROTOCOL_MASK = WINHTTP_PROTOCOL_FLAG_HTTP2;
  163. WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM = 0;
  164. WINHTTP_AUTOLOGON_SECURITY_LEVEL_LOW = 1;
  165. WINHTTP_AUTOLOGON_SECURITY_LEVEL_HIGH = 2;
  166. WINHTTP_AUTOLOGON_SECURITY_LEVEL_DEFAULT = WINHTTP_AUTOLOGON_SECURITY_LEVEL_MEDIUM;
  167. WINHTTP_OPTION_REDIRECT_POLICY_NEVER = 0;
  168. WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP = 1;
  169. WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS = 2;
  170. WINHTTP_OPTION_REDIRECT_POLICY_LAST = WINHTTP_OPTION_REDIRECT_POLICY_ALWAYS;
  171. WINHTTP_OPTION_REDIRECT_POLICY_DEFAULT = WINHTTP_OPTION_REDIRECT_POLICY_DISALLOW_HTTPS_TO_HTTP;
  172. WINHTTP_DISABLE_PASSPORT_AUTH = $00000000;
  173. WINHTTP_ENABLE_PASSPORT_AUTH = $10000000;
  174. WINHTTP_DISABLE_PASSPORT_KEYRING = $20000000;
  175. WINHTTP_ENABLE_PASSPORT_KEYRING = $40000000;
  176. WINHTTP_DISABLE_COOKIES = $00000001;
  177. WINHTTP_DISABLE_REDIRECTS = $00000002;
  178. WINHTTP_DISABLE_AUTHENTICATION = $00000004;
  179. WINHTTP_DISABLE_KEEP_ALIVE = $00000008;
  180. WINHTTP_ENABLE_SSL_REVOCATION = $00000001;
  181. WINHTTP_ENABLE_SSL_REVERT_IMPERSONATION = $00000002;
  182. WINHTTP_DISABLE_SPN_SERVER_PORT = $00000000;
  183. WINHTTP_ENABLE_SPN_SERVER_PORT = $00000001;
  184. WINHTTP_OPTION_SPN_MASK = WINHTTP_ENABLE_SPN_SERVER_PORT;
  185. const
  186. WINHTTP_HANDLE_TYPE_SESSION = 1;
  187. WINHTTP_HANDLE_TYPE_CONNECT = 2;
  188. WINHTTP_HANDLE_TYPE_REQUEST = 3;
  189. WINHTTP_AUTH_SCHEME_BASIC = $00000001;
  190. WINHTTP_AUTH_SCHEME_NTLM = $00000002;
  191. WINHTTP_AUTH_SCHEME_PASSPORT = $00000004;
  192. WINHTTP_AUTH_SCHEME_DIGEST = $00000008;
  193. WINHTTP_AUTH_SCHEME_NEGOTIATE = $00000010;
  194. WINHTTP_AUTH_TARGET_SERVER = $00000000;
  195. WINHTTP_AUTH_TARGET_PROXY = $00000001;
  196. SECURITY_FLAG_SECURE = $00000001;
  197. SECURITY_FLAG_STRENGTH_WEAK = $10000000;
  198. SECURITY_FLAG_STRENGTH_MEDIUM = $40000000;
  199. SECURITY_FLAG_STRENGTH_STRONG = $20000000;
  200. WINHTTP_CALLBACK_STATUS_FLAG_CERT_REV_FAILED = $00000001;
  201. WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CERT = $00000002;
  202. WINHTTP_CALLBACK_STATUS_FLAG_CERT_REVOKED = $00000004;
  203. WINHTTP_CALLBACK_STATUS_FLAG_INVALID_CA = $00000008;
  204. WINHTTP_CALLBACK_STATUS_FLAG_CERT_CN_INVALID = $00000010;
  205. WINHTTP_CALLBACK_STATUS_FLAG_CERT_DATE_INVALID = $00000020;
  206. WINHTTP_CALLBACK_STATUS_FLAG_CERT_WRONG_USAGE = $00000040;
  207. WINHTTP_CALLBACK_STATUS_FLAG_SECURITY_CHANNEL_ERROR = $80000000;
  208. WINHTTP_FLAG_SECURE_PROTOCOL_SSL2 = $00000008;
  209. WINHTTP_FLAG_SECURE_PROTOCOL_SSL3 = $00000020;
  210. WINHTTP_FLAG_SECURE_PROTOCOL_TLS1 = $00000080;
  211. WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_1 = $00000200;
  212. WINHTTP_FLAG_SECURE_PROTOCOL_TLS1_2 = $00000800;
  213. WINHTTP_FLAG_SECURE_PROTOCOL_ALL = (WINHTTP_FLAG_SECURE_PROTOCOL_SSL2 or WINHTTP_FLAG_SECURE_PROTOCOL_SSL3) or WINHTTP_FLAG_SECURE_PROTOCOL_TLS1;
  214. WINHTTP_CALLBACK_STATUS_RESOLVING_NAME = $00000001;
  215. WINHTTP_CALLBACK_STATUS_NAME_RESOLVED = $00000002;
  216. WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER = $00000004;
  217. WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER = $00000008;
  218. WINHTTP_CALLBACK_STATUS_SENDING_REQUEST = $00000010;
  219. WINHTTP_CALLBACK_STATUS_REQUEST_SENT = $00000020;
  220. WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE = $00000040;
  221. WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED = $00000080;
  222. WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION = $00000100;
  223. WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED = $00000200;
  224. WINHTTP_CALLBACK_STATUS_HANDLE_CREATED = $00000400;
  225. WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING = $00000800;
  226. WINHTTP_CALLBACK_STATUS_DETECTING_PROXY = $00001000;
  227. WINHTTP_CALLBACK_STATUS_REDIRECT = $00004000;
  228. WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE = $00008000;
  229. WINHTTP_CALLBACK_STATUS_SECURE_FAILURE = $00010000;
  230. WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE = $00020000;
  231. WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE = $00040000;
  232. WINHTTP_CALLBACK_STATUS_READ_COMPLETE = $00080000;
  233. WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE = $00100000;
  234. WINHTTP_CALLBACK_STATUS_REQUEST_ERROR = $00200000;
  235. WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE = $00400000;
  236. WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE = $01000000;
  237. WINHTTP_CALLBACK_STATUS_CLOSE_COMPLETE = $02000000;
  238. WINHTTP_CALLBACK_STATUS_SHUTDOWN_COMPLETE = $04000000;
  239. WINHTTP_CALLBACK_STATUS_SETTINGS_WRITE_COMPLETE = $10000000;
  240. WINHTTP_CALLBACK_STATUS_SETTINGS_READ_COMPLETE = $20000000;
  241. API_RECEIVE_RESPONSE = 1;
  242. API_QUERY_DATA_AVAILABLE = 2;
  243. API_READ_DATA = 3;
  244. API_WRITE_DATA = 4;
  245. API_SEND_REQUEST = 5;
  246. API_GET_PROXY_FOR_URL = 6;
  247. WINHTTP_CALLBACK_FLAG_RESOLVE_NAME = WINHTTP_CALLBACK_STATUS_RESOLVING_NAME or WINHTTP_CALLBACK_STATUS_NAME_RESOLVED;
  248. WINHTTP_CALLBACK_FLAG_CONNECT_TO_SERVER = WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER or WINHTTP_CALLBACK_STATUS_CONNECTED_TO_SERVER;
  249. WINHTTP_CALLBACK_FLAG_SEND_REQUEST = WINHTTP_CALLBACK_STATUS_SENDING_REQUEST or WINHTTP_CALLBACK_STATUS_REQUEST_SENT;
  250. WINHTTP_CALLBACK_FLAG_RECEIVE_RESPONSE = WINHTTP_CALLBACK_STATUS_RECEIVING_RESPONSE or WINHTTP_CALLBACK_STATUS_RESPONSE_RECEIVED;
  251. WINHTTP_CALLBACK_FLAG_CLOSE_CONNECTION = WINHTTP_CALLBACK_STATUS_CLOSING_CONNECTION or WINHTTP_CALLBACK_STATUS_CONNECTION_CLOSED;
  252. WINHTTP_CALLBACK_FLAG_HANDLES = WINHTTP_CALLBACK_STATUS_HANDLE_CREATED or WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING;
  253. WINHTTP_CALLBACK_FLAG_DETECTING_PROXY = WINHTTP_CALLBACK_STATUS_DETECTING_PROXY;
  254. WINHTTP_CALLBACK_FLAG_REDIRECT = WINHTTP_CALLBACK_STATUS_REDIRECT;
  255. WINHTTP_CALLBACK_FLAG_INTERMEDIATE_RESPONSE = WINHTTP_CALLBACK_STATUS_INTERMEDIATE_RESPONSE;
  256. WINHTTP_CALLBACK_FLAG_SECURE_FAILURE = WINHTTP_CALLBACK_STATUS_SECURE_FAILURE;
  257. WINHTTP_CALLBACK_FLAG_SENDREQUEST_COMPLETE = WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE;
  258. WINHTTP_CALLBACK_FLAG_HEADERS_AVAILABLE = WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE;
  259. WINHTTP_CALLBACK_FLAG_DATA_AVAILABLE = WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE;
  260. WINHTTP_CALLBACK_FLAG_READ_COMPLETE = WINHTTP_CALLBACK_STATUS_READ_COMPLETE;
  261. WINHTTP_CALLBACK_FLAG_WRITE_COMPLETE = WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE;
  262. WINHTTP_CALLBACK_FLAG_REQUEST_ERROR = WINHTTP_CALLBACK_STATUS_REQUEST_ERROR;
  263. WINHTTP_CALLBACK_FLAG_GETPROXYFORURL_COMPLETE = WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE;
  264. WINHTTP_CALLBACK_FLAG_ALL_COMPLETIONS = (((((WINHTTP_CALLBACK_STATUS_SENDREQUEST_COMPLETE or WINHTTP_CALLBACK_STATUS_HEADERS_AVAILABLE) or WINHTTP_CALLBACK_STATUS_DATA_AVAILABLE) or WINHTTP_CALLBACK_STATUS_READ_COMPLETE) or WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE) or WINHTTP_CALLBACK_STATUS_REQUEST_ERROR) or WINHTTP_CALLBACK_STATUS_GETPROXYFORURL_COMPLETE;
  265. WINHTTP_CALLBACK_FLAG_ALL_NOTIFICATIONS = $ffffffff;
  266. WINHTTP_QUERY_MIME_VERSION = 0;
  267. WINHTTP_QUERY_CONTENT_TYPE = 1;
  268. WINHTTP_QUERY_CONTENT_TRANSFER_ENCODING = 2;
  269. WINHTTP_QUERY_CONTENT_ID = 3;
  270. WINHTTP_QUERY_CONTENT_DESCRIPTION = 4;
  271. WINHTTP_QUERY_CONTENT_LENGTH = 5;
  272. WINHTTP_QUERY_CONTENT_LANGUAGE = 6;
  273. WINHTTP_QUERY_ALLOW = 7;
  274. WINHTTP_QUERY_PUBLIC = 8;
  275. WINHTTP_QUERY_DATE = 9;
  276. WINHTTP_QUERY_EXPIRES = 10;
  277. WINHTTP_QUERY_LAST_MODIFIED = 11;
  278. WINHTTP_QUERY_MESSAGE_ID = 12;
  279. WINHTTP_QUERY_URI = 13;
  280. WINHTTP_QUERY_DERIVED_FROM = 14;
  281. WINHTTP_QUERY_COST = 15;
  282. WINHTTP_QUERY_LINK = 16;
  283. WINHTTP_QUERY_PRAGMA = 17;
  284. WINHTTP_QUERY_VERSION = 18;
  285. WINHTTP_QUERY_STATUS_CODE = 19;
  286. WINHTTP_QUERY_STATUS_TEXT = 20;
  287. WINHTTP_QUERY_RAW_HEADERS = 21;
  288. WINHTTP_QUERY_RAW_HEADERS_CRLF = 22;
  289. WINHTTP_QUERY_CONNECTION = 23;
  290. WINHTTP_QUERY_ACCEPT = 24;
  291. WINHTTP_QUERY_ACCEPT_CHARSET = 25;
  292. WINHTTP_QUERY_ACCEPT_ENCODING = 26;
  293. WINHTTP_QUERY_ACCEPT_LANGUAGE = 27;
  294. WINHTTP_QUERY_AUTHORIZATION = 28;
  295. WINHTTP_QUERY_CONTENT_ENCODING = 29;
  296. WINHTTP_QUERY_FORWARDED = 30;
  297. WINHTTP_QUERY_FROM = 31;
  298. WINHTTP_QUERY_IF_MODIFIED_SINCE = 32;
  299. WINHTTP_QUERY_LOCATION = 33;
  300. WINHTTP_QUERY_ORIG_URI = 34;
  301. WINHTTP_QUERY_REFERER = 35;
  302. WINHTTP_QUERY_RETRY_AFTER = 36;
  303. WINHTTP_QUERY_SERVER = 37;
  304. WINHTTP_QUERY_TITLE = 38;
  305. WINHTTP_QUERY_USER_AGENT = 39;
  306. WINHTTP_QUERY_WWW_AUTHENTICATE = 40;
  307. WINHTTP_QUERY_PROXY_AUTHENTICATE = 41;
  308. WINHTTP_QUERY_ACCEPT_RANGES = 42;
  309. WINHTTP_QUERY_SET_COOKIE = 43;
  310. WINHTTP_QUERY_COOKIE = 44;
  311. WINHTTP_QUERY_REQUEST_METHOD = 45;
  312. WINHTTP_QUERY_REFRESH = 46;
  313. WINHTTP_QUERY_CONTENT_DISPOSITION = 47;
  314. WINHTTP_QUERY_AGE = 48;
  315. WINHTTP_QUERY_CACHE_CONTROL = 49;
  316. WINHTTP_QUERY_CONTENT_BASE = 50;
  317. WINHTTP_QUERY_CONTENT_LOCATION = 51;
  318. WINHTTP_QUERY_CONTENT_MD5 = 52;
  319. WINHTTP_QUERY_CONTENT_RANGE = 53;
  320. WINHTTP_QUERY_ETAG = 54;
  321. WINHTTP_QUERY_HOST = 55;
  322. WINHTTP_QUERY_IF_MATCH = 56;
  323. WINHTTP_QUERY_IF_NONE_MATCH = 57;
  324. WINHTTP_QUERY_IF_RANGE = 58;
  325. WINHTTP_QUERY_IF_UNMODIFIED_SINCE = 59;
  326. WINHTTP_QUERY_MAX_FORWARDS = 60;
  327. WINHTTP_QUERY_PROXY_AUTHORIZATION = 61;
  328. WINHTTP_QUERY_RANGE = 62;
  329. WINHTTP_QUERY_TRANSFER_ENCODING = 63;
  330. WINHTTP_QUERY_UPGRADE = 64;
  331. WINHTTP_QUERY_VARY = 65;
  332. WINHTTP_QUERY_VIA = 66;
  333. WINHTTP_QUERY_WARNING = 67;
  334. WINHTTP_QUERY_EXPECT = 68;
  335. WINHTTP_QUERY_PROXY_CONNECTION = 69;
  336. WINHTTP_QUERY_UNLESS_MODIFIED_SINCE = 70;
  337. WINHTTP_QUERY_PROXY_SUPPORT = 75;
  338. WINHTTP_QUERY_AUTHENTICATION_INFO = 76;
  339. WINHTTP_QUERY_PASSPORT_URLS = 77;
  340. WINHTTP_QUERY_PASSPORT_CONFIG = 78;
  341. WINHTTP_QUERY_MAX = 78;
  342. WINHTTP_QUERY_CUSTOM = 65535;
  343. WINHTTP_QUERY_FLAG_REQUEST_HEADERS = $80000000;
  344. WINHTTP_QUERY_FLAG_SYSTEMTIME = $40000000;
  345. WINHTTP_QUERY_FLAG_NUMBER = $20000000;
  346. WINHTTP_QUERY_FLAG_NUMBER64 = $08000000;
  347. HTTP_STATUS_CONTINUE = 100;
  348. HTTP_STATUS_SWITCH_PROTOCOLS = 101;
  349. HTTP_STATUS_OK = 200;
  350. HTTP_STATUS_CREATED = 201;
  351. HTTP_STATUS_ACCEPTED = 202;
  352. HTTP_STATUS_PARTIAL = 203;
  353. HTTP_STATUS_NO_CONTENT = 204;
  354. HTTP_STATUS_RESET_CONTENT = 205;
  355. HTTP_STATUS_PARTIAL_CONTENT = 206;
  356. HTTP_STATUS_WEBDAV_MULTI_STATUS = 207;
  357. HTTP_STATUS_AMBIGUOUS = 300;
  358. HTTP_STATUS_MOVED = 301;
  359. HTTP_STATUS_REDIRECT = 302;
  360. HTTP_STATUS_REDIRECT_METHOD = 303;
  361. HTTP_STATUS_NOT_MODIFIED = 304;
  362. HTTP_STATUS_USE_PROXY = 305;
  363. HTTP_STATUS_REDIRECT_KEEP_VERB = 307;
  364. HTTP_STATUS_PERMANENT_REDIRECT = 308;
  365. HTTP_STATUS_BAD_REQUEST = 400;
  366. HTTP_STATUS_DENIED = 401;
  367. HTTP_STATUS_PAYMENT_REQ = 402;
  368. HTTP_STATUS_FORBIDDEN = 403;
  369. HTTP_STATUS_NOT_FOUND = 404;
  370. HTTP_STATUS_BAD_METHOD = 405;
  371. HTTP_STATUS_NONE_ACCEPTABLE = 406;
  372. HTTP_STATUS_PROXY_AUTH_REQ = 407;
  373. HTTP_STATUS_REQUEST_TIME = 408;
  374. HTTP_STATUS_CONFLICT = 409;
  375. HTTP_STATUS_GONE = 410;
  376. HTTP_STATUS_LENGTH_REQUIRED = 411;
  377. HTTP_STATUS_PRECOND_FAILED = 412;
  378. HTTP_STATUS_REQUEST_TOO_LARGE = 413;
  379. HTTP_STATUS_URI_TOO_LONG = 414;
  380. HTTP_STATUS_UNSUPPORTED_MEDIA = 415;
  381. HTTP_STATUS_RETRY_WITH = 449;
  382. HTTP_STATUS_SERVER_ERROR = 500;
  383. HTTP_STATUS_NOT_SUPPORTED = 501;
  384. HTTP_STATUS_BAD_GATEWAY = 502;
  385. HTTP_STATUS_SERVICE_UNAVAIL = 503;
  386. HTTP_STATUS_GATEWAY_TIME = 504;
  387. HTTP_STATUS_VERSION_NOT_SUP = 505;
  388. HTTP_STATUS_FIRST = HTTP_STATUS_CONTINUE;
  389. HTTP_STATUS_LAST = HTTP_STATUS_VERSION_NOT_SUP;
  390. ICU_NO_ENCODE = $20000000;
  391. ICU_DECODE = $10000000;
  392. ICU_NO_META = $08000000;
  393. ICU_ENCODE_SPACES_ONLY = $04000000;
  394. ICU_BROWSER_MODE = $02000000;
  395. ICU_ENCODE_PERCENT = $00001000;
  396. ICU_ESCAPE = $80000000;
  397. ICU_ESCAPE_AUTHORITY = $00002000;
  398. ICU_REJECT_USERPWD = $00004000;
  399. WINHTTP_ACCESS_TYPE_DEFAULT_PROXY = 0;
  400. WINHTTP_ACCESS_TYPE_NO_PROXY = 1;
  401. WINHTTP_ACCESS_TYPE_NAMED_PROXY = 3;
  402. WINHTTP_ACCESS_TYPE_AUTOMATIC_PROXY = 4;
  403. WINHTTP_NO_PROXY_NAME = Nil;
  404. WINHTTP_NO_PROXY_BYPASS = Nil;
  405. WINHTTP_NO_CLIENT_CERT_CONTEXT = Nil;
  406. WINHTTP_NO_REFERER = Nil;
  407. WINHTTP_DEFAULT_ACCEPT_TYPES = Nil;
  408. WINHTTP_ADDREQ_INDEX_MASK = $0000FFFF;
  409. WINHTTP_ADDREQ_FLAGS_MASK = $FFFF0000;
  410. WINHTTP_ADDREQ_FLAG_ADD_IF_NEW = $10000000;
  411. WINHTTP_ADDREQ_FLAG_ADD = $20000000;
  412. WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA = $40000000;
  413. WINHTTP_ADDREQ_FLAG_COALESCE_WITH_SEMICOLON = $01000000;
  414. WINHTTP_ADDREQ_FLAG_COALESCE = WINHTTP_ADDREQ_FLAG_COALESCE_WITH_COMMA;
  415. WINHTTP_ADDREQ_FLAG_REPLACE = $80000000;
  416. WINHTTP_IGNORE_REQUEST_TOTAL_LENGTH = 0;
  417. WINHTTP_NO_ADDITIONAL_HEADERS = Nil;
  418. WINHTTP_NO_REQUEST_DATA = Nil;
  419. WINHTTP_HEADER_NAME_BY_INDEX = Nil;
  420. WINHTTP_NO_PUT_BUFFER = Nil;
  421. WINHTTP_ERROR_BASE = 12000;
  422. ERROR_WINHTTPOF_HANDLES = WINHTTP_ERROR_BASE+1;
  423. ERROR_WINHTTP_TIME = WINHTTP_ERROR_BASE+2;
  424. ERROR_WINHTTP_INTERNAL_ERROR = WINHTTP_ERROR_BASE+4;
  425. ERROR_WINHTTP_INVALID_URL = WINHTTP_ERROR_BASE+5;
  426. ERROR_WINHTTP_UNRECOGNIZED_SCHEME = WINHTTP_ERROR_BASE+6;
  427. ERROR_WINHTTP_NAME_NOT_RESOLVED = WINHTTP_ERROR_BASE+7;
  428. ERROR_WINHTTP_INVALID_OPTION = WINHTTP_ERROR_BASE+9;
  429. ERROR_WINHTTP_OPTION_NOT_SETTABLE = WINHTTP_ERROR_BASE+11;
  430. ERROR_WINHTTP_SHUTDOWN = WINHTTP_ERROR_BASE+12;
  431. ERROR_WINHTTP_LOGIN_FAILURE = WINHTTP_ERROR_BASE+15;
  432. ERROR_WINHTTP_OPERATION_CANCELLED = WINHTTP_ERROR_BASE+17;
  433. ERROR_WINHTTP_INCORRECT_HANDLE_TYPE = WINHTTP_ERROR_BASE+18;
  434. ERROR_WINHTTP_INCORRECT_HANDLE_STATE = WINHTTP_ERROR_BASE+19;
  435. ERROR_WINHTTP_CANNOT_CONNECT = WINHTTP_ERROR_BASE+29;
  436. ERROR_WINHTTP_CONNECTION_ERROR = WINHTTP_ERROR_BASE+30;
  437. ERROR_WINHTTP_RESEND_REQUEST = WINHTTP_ERROR_BASE+32;
  438. ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED = WINHTTP_ERROR_BASE+44;
  439. ERROR_WINHTTP_CANNOT_CALL_BEFORE_OPEN = WINHTTP_ERROR_BASE+100;
  440. ERROR_WINHTTP_CANNOT_CALL_BEFORE_SEND = WINHTTP_ERROR_BASE+101;
  441. ERROR_WINHTTP_CANNOT_CALL_AFTER_SEND = WINHTTP_ERROR_BASE+102;
  442. ERROR_WINHTTP_CANNOT_CALL_AFTER_OPEN = WINHTTP_ERROR_BASE+103;
  443. ERROR_WINHTTP_HEADER_NOT_FOUND = WINHTTP_ERROR_BASE+150;
  444. ERROR_WINHTTP_INVALID_SERVER_RESPONSE = WINHTTP_ERROR_BASE+152;
  445. ERROR_WINHTTP_INVALID_HEADER = WINHTTP_ERROR_BASE+153;
  446. ERROR_WINHTTP_INVALID_QUERY_REQUEST = WINHTTP_ERROR_BASE+154;
  447. ERROR_WINHTTP_HEADER_ALREADY_EXISTS = WINHTTP_ERROR_BASE+155;
  448. ERROR_WINHTTP_REDIRECT_FAILED = WINHTTP_ERROR_BASE+156;
  449. ERROR_WINHTTP_AUTO_PROXY_SERVICE_ERROR = WINHTTP_ERROR_BASE+178;
  450. ERROR_WINHTTP_BAD_AUTO_PROXY_SCRIPT = WINHTTP_ERROR_BASE+166;
  451. ERROR_WINHTTP_UNABLE_TO_DOWNLOAD_SCRIPT = WINHTTP_ERROR_BASE+167;
  452. ERROR_WINHTTP_UNHANDLED_SCRIPT_TYPE = WINHTTP_ERROR_BASE+176;
  453. ERROR_WINHTTP_SCRIPT_EXECUTION_ERROR = WINHTTP_ERROR_BASE+177;
  454. ERROR_WINHTTP_NOT_INITIALIZED = WINHTTP_ERROR_BASE+172;
  455. ERROR_WINHTTP_SECURE_FAILURE = WINHTTP_ERROR_BASE+175;
  456. ERROR_WINHTTP_SECURE_CERT_DATE_INVALID = WINHTTP_ERROR_BASE+37;
  457. ERROR_WINHTTP_SECURE_CERT_CN_INVALID = WINHTTP_ERROR_BASE+38;
  458. ERROR_WINHTTP_SECURE_INVALID_CA = WINHTTP_ERROR_BASE+45;
  459. ERROR_WINHTTP_SECURE_CERT_REV_FAILED = WINHTTP_ERROR_BASE+57;
  460. ERROR_WINHTTP_SECURE_CHANNEL_ERROR = WINHTTP_ERROR_BASE+157;
  461. ERROR_WINHTTP_SECURE_INVALID_CERT = WINHTTP_ERROR_BASE+169;
  462. ERROR_WINHTTP_SECURE_CERT_REVOKED = WINHTTP_ERROR_BASE+170;
  463. ERROR_WINHTTP_SECURE_CERT_WRONG_USAGE = WINHTTP_ERROR_BASE+179;
  464. ERROR_WINHTTP_AUTODETECTION_FAILED = WINHTTP_ERROR_BASE+180;
  465. ERROR_WINHTTP_HEADER_COUNT_EXCEEDED = WINHTTP_ERROR_BASE+181;
  466. ERROR_WINHTTP_HEADER_SIZE_OVERFLOW = WINHTTP_ERROR_BASE+182;
  467. ERROR_WINHTTP_CHUNKED_ENCODING_HEADER_SIZE_OVERFLOW = WINHTTP_ERROR_BASE+183;
  468. ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW = WINHTTP_ERROR_BASE+184;
  469. ERROR_WINHTTP_CLIENT_CERT_NO_PRIVATE_KEY = WINHTTP_ERROR_BASE+185;
  470. ERROR_WINHTTP_CLIENT_CERT_NO_ACCESS_PRIVATE_KEY = WINHTTP_ERROR_BASE+186;
  471. ERROR_WINHTTP_CLIENT_AUTH_CERT_NEEDED_PROXY = WINHTTP_ERROR_BASE+187;
  472. ERROR_WINHTTP_SECURE_FAILURE_PROXY = WINHTTP_ERROR_BASE+188;
  473. WINHTTP_ERROR_LAST = WINHTTP_ERROR_BASE+188;
  474. WINHTTP_RESET_STATE = $00000001;
  475. WINHTTP_RESET_SWPAD_CURRENT_NETWORK = $00000002;
  476. WINHTTP_RESET_SWPAD_ALL = $00000004;
  477. WINHTTP_RESET_SCRIPT_CACHE = $00000008;
  478. WINHTTP_RESET_ALL = $0000FFFF;
  479. WINHTTP_RESET_NOTIFY_NETWORK_CHANGED = $00010000;
  480. WINHTTP_RESETOF_PROC = $00020000;
  481. WINHTTP_NO_HEADER_INDEX = Nil;
  482. WINHTTP_WEB_SOCKET_MAX_CLOSE_REASON_LENGTH = 123;
  483. WINHTTP_WEB_SOCKET_MIN_KEEPALIVE_VALUE = 15000;
  484. type
  485. HINTERNET = LPVOID;
  486. LPHINTERNET = ^HINTERNET;
  487. PHINTERNET = ^HINTERNET;
  488. INTERNET_PORT = WORD;
  489. LPINTERNET_PORT = ^INTERNET_PORT;
  490. WINHTTP_ASYNC_RESULT = record
  491. dwResult : DWORD_PTR;
  492. dwError : DWORD;
  493. end;
  494. LPWINHTTP_ASYNC_RESULT = ^WINHTTP_ASYNC_RESULT;
  495. HTTP_VERSION_INFO = record
  496. dwMajorVersion : DWORD;
  497. dwMinorVersion : DWORD;
  498. end;
  499. LPHTTP_VERSION_INFO = ^HTTP_VERSION_INFO;
  500. INTERNET_SCHEME = longint;
  501. LPINTERNET_SCHEME = ^INTERNET_SCHEME;
  502. URL_COMPONENTS = record
  503. dwStructSize : DWORD;
  504. lpszScheme : LPWSTR;
  505. dwSchemeLength : DWORD;
  506. nScheme : INTERNET_SCHEME;
  507. lpszHostName : LPWSTR;
  508. dwHostNameLength : DWORD;
  509. nPort : INTERNET_PORT;
  510. lpszUserName : LPWSTR;
  511. dwUserNameLength : DWORD;
  512. lpszPassword : LPWSTR;
  513. dwPasswordLength : DWORD;
  514. lpszUrlPath : LPWSTR;
  515. dwUrlPathLength : DWORD;
  516. lpszExtraInfo : LPWSTR;
  517. dwExtraInfoLength : DWORD;
  518. end;
  519. LPURL_COMPONENTS = ^URL_COMPONENTS;
  520. URL_COMPONENTSW = URL_COMPONENTS;
  521. LPURL_COMPONENTSW = LPURL_COMPONENTS;
  522. WINHTTP_PROXY_INFO = record
  523. dwAccessType : DWORD;
  524. lpszProxy : LPWSTR;
  525. lpszProxyBypass : LPWSTR;
  526. end;
  527. LPWINHTTP_PROXY_INFO = ^WINHTTP_PROXY_INFO;
  528. PWINHTTP_PROXY_INFO = LPWINHTTP_PROXY_INFO;
  529. WINHTTP_PROXY_INFOW = WINHTTP_PROXY_INFO;
  530. LPWINHTTP_PROXY_INFOW = LPWINHTTP_PROXY_INFO;
  531. WINHTTP_AUTOPROXY_OPTIONS = record
  532. dwFlags : DWORD;
  533. dwAutoDetectFlags : DWORD;
  534. lpszAutoConfigUrl : LPCWSTR;
  535. lpvReserved : LPVOID;
  536. dwReserved : DWORD;
  537. fAutoLogonIfChallenged : BOOL;
  538. end;
  539. PWINHTTP_AUTOPROXY_OPTIONS = ^WINHTTP_AUTOPROXY_OPTIONS;
  540. _WINHTTP_PROXY_RESULT_ENTRY = record
  541. fProxy : BOOL;
  542. fBypass : BOOL;
  543. ProxyScheme : INTERNET_SCHEME;
  544. pwszProxy : PWSTR;
  545. ProxyPort : INTERNET_PORT;
  546. end;
  547. WINHTTP_PROXY_RESULT_ENTRY = _WINHTTP_PROXY_RESULT_ENTRY;
  548. PWINHTTP_PROXY_RESULT_ENTRY = ^WINHTTP_PROXY_RESULT_ENTRY;
  549. _WINHTTP_PROXY_RESULT = record
  550. cEntries : DWORD;
  551. pEntries : ^WINHTTP_PROXY_RESULT_ENTRY;
  552. end;
  553. WINHTTP_PROXY_RESULT = _WINHTTP_PROXY_RESULT;
  554. PWINHTTP_PROXY_RESULT = ^WINHTTP_PROXY_RESULT;
  555. _WINHTTP_PROXY_RESULT_EX = record
  556. cEntries : DWORD;
  557. pEntries : ^WINHTTP_PROXY_RESULT_ENTRY;
  558. hProxyDetectionHandle : HANDLE;
  559. dwProxyInterfaceAffinity : DWORD;
  560. end;
  561. WINHTTP_PROXY_RESULT_EX = _WINHTTP_PROXY_RESULT_EX;
  562. PWINHTTP_PROXY_RESULT_EX = ^WINHTTP_PROXY_RESULT_EX;
  563. _WinHttpProxyNetworkKey = record
  564. pbBuffer : array[0..(NETWORKING_KEY_BUFSIZE)-1] of byte;
  565. end;
  566. WINHTTP_PROXY_NETWORKING_KEY = _WinHttpProxyNetworkKey;
  567. PWINHTTP_PROXY_NETWORKING_KEY = ^_WinHttpProxyNetworkKey;
  568. _WINHTTP_PROXY_SETTINGS = record
  569. dwStructSize : DWORD;
  570. dwFlags : DWORD;
  571. dwCurrentSettingsVersion : DWORD;
  572. pwszConnectionName : PWSTR;
  573. pwszProxy : PWSTR;
  574. pwszProxyBypass : PWSTR;
  575. pwszAutoconfigUrl : PWSTR;
  576. pwszAutoconfigSecondaryUrl : PWSTR;
  577. dwAutoDiscoveryFlags : DWORD;
  578. pwszLastKnownGoodAutoConfigUrl : PWSTR;
  579. dwAutoconfigReloadDelayMins : DWORD;
  580. ftLastKnownDetectTime : FILETIME;
  581. dwDetectedInterfaceIpCount : DWORD;
  582. pdwDetectedInterfaceIp : PDWORD;
  583. cNetworkKeys : DWORD;
  584. pNetworkKeys : PWINHTTP_PROXY_NETWORKING_KEY;
  585. end;
  586. WINHTTP_PROXY_SETTINGS = _WINHTTP_PROXY_SETTINGS;
  587. PWINHTTP_PROXY_SETTINGS = ^_WINHTTP_PROXY_SETTINGS;
  588. WINHTTP_CERTIFICATE_INFO = record
  589. ftExpiry : FILETIME;
  590. ftStart : FILETIME;
  591. lpszSubjectInfo : LPWSTR;
  592. lpszIssuerInfo : LPWSTR;
  593. lpszProtocolName : LPWSTR;
  594. lpszSignatureAlgName : LPWSTR;
  595. lpszEncryptionAlgName : LPWSTR;
  596. dwKeySize : DWORD;
  597. end;
  598. PWINHTTP_CERTIFICATE_INFO = ^WINHTTP_CERTIFICATE_INFO;
  599. tagWINHTTP_CREDS = record
  600. lpszUserName : LPSTR;
  601. lpszPassword : LPSTR;
  602. lpszRealm : LPSTR;
  603. dwAuthScheme : DWORD;
  604. lpszHostName : LPSTR;
  605. dwPort : DWORD;
  606. end;
  607. WINHTTP_CREDS = tagWINHTTP_CREDS;
  608. PWINHTTP_CREDS = ^tagWINHTTP_CREDS;
  609. tagWINHTTP_CREDS_EX = record
  610. lpszUserName : LPSTR;
  611. lpszPassword : LPSTR;
  612. lpszRealm : LPSTR;
  613. dwAuthScheme : DWORD;
  614. lpszHostName : LPSTR;
  615. dwPort : DWORD;
  616. lpszUrl : LPSTR;
  617. end;
  618. WINHTTP_CREDS_EX = tagWINHTTP_CREDS_EX;
  619. PWINHTTP_CREDS_EX = ^tagWINHTTP_CREDS_EX;
  620. WINHTTP_STATUS_CALLBACK = procedure(hInterneth: HINTERNET;
  621. dwContext: DWORD_PTR; dwInternetStatus: DWORD; lpvStatusInformation: LPVOID;
  622. dwStatusInformationLength: DWORD); stdcall;
  623. LPWINHTTP_STATUS_CALLBACK = ^WINHTTP_STATUS_CALLBACK;
  624. WINHTTP_CURRENT_USER_IE_PROXY_CONFIG = record
  625. fAutoDetect : BOOL;
  626. lpszAutoConfigUrl : LPWSTR;
  627. lpszProxy : LPWSTR;
  628. lpszProxyBypass : LPWSTR;
  629. end;
  630. PWINHTTP_CURRENT_USER_IE_PROXY_CONFIG = ^WINHTTP_CURRENT_USER_IE_PROXY_CONFIG;
  631. _WINHTTP_WEB_SOCKET_OPERATION = (
  632. WINHTTP_WEB_SOCKET_SEND_OPERATION := 0,
  633. WINHTTP_WEB_SOCKET_RECEIVE_OPERATION := 1,
  634. WINHTTP_WEB_SOCKET_CLOSE_OPERATION := 2,
  635. WINHTTP_WEB_SOCKET_SHUTDOWN_OPERATION := 3
  636. );
  637. WINHTTP_WEB_SOCKET_OPERATION = _WINHTTP_WEB_SOCKET_OPERATION;
  638. _WINHTTP_WEB_SOCKET_BUFFER_TYPE = (
  639. WINHTTP_WEB_SOCKET_BINARY_MESSAGE_BUFFER_TYPE := 0,
  640. WINHTTP_WEB_SOCKET_BINARY_FRAGMENT_BUFFER_TYPE := 1,
  641. WINHTTP_WEB_SOCKET_UTF8_MESSAGE_BUFFER_TYPE := 2,
  642. WINHTTP_WEB_SOCKET_UTF8_FRAGMENT_BUFFER_TYPE := 3,
  643. WINHTTP_WEB_SOCKET_CLOSE_BUFFER_TYPE := 4
  644. );
  645. WINHTTP_WEB_SOCKET_BUFFER_TYPE = _WINHTTP_WEB_SOCKET_BUFFER_TYPE;
  646. PWINHTTP_WEB_SOCKET_BUFFER_TYPE = ^WINHTTP_WEB_SOCKET_BUFFER_TYPE;
  647. _WINHTTP_WEB_SOCKET_CLOSE_STATUS = (
  648. WINHTTP_WEB_SOCKET_SUCCESS_CLOSE_STATUS := 1000,
  649. WINHTTP_WEB_SOCKET_ENDPOINT_TERMINATED_CLOSE_STATUS := 1001,
  650. WINHTTP_WEB_SOCKET_PROTOCOL_ERROR_CLOSE_STATUS := 1002,
  651. WINHTTP_WEB_SOCKET_INVALID_DATA_TYPE_CLOSE_STATUS := 1003,
  652. WINHTTP_WEB_SOCKET_EMPTY_CLOSE_STATUS := 1005,
  653. WINHTTP_WEB_SOCKET_ABORTED_CLOSE_STATUS := 1006,
  654. WINHTTP_WEB_SOCKET_INVALID_PAYLOAD_CLOSE_STATUS := 1007,
  655. WINHTTP_WEB_SOCKET_POLICY_VIOLATION_CLOSE_STATUS := 1008,
  656. WINHTTP_WEB_SOCKET_MESSAGE_TOO_BIG_CLOSE_STATUS := 1009,
  657. WINHTTP_WEB_SOCKET_UNSUPPORTED_EXTENSIONS_CLOSE_STATUS := 1010,
  658. WINHTTP_WEB_SOCKET_SERVER_ERROR_CLOSE_STATUS := 1011,
  659. WINHTTP_WEB_SOCKET_SECURE_HANDSHAKE_ERROR_CLOSE_STATUS := 1015
  660. );
  661. WINHTTP_WEB_SOCKET_CLOSE_STATUS = _WINHTTP_WEB_SOCKET_CLOSE_STATUS;
  662. _WINHTTP_WEB_SOCKET_ASYNC_RESULT = record
  663. AsyncResult : WINHTTP_ASYNC_RESULT;
  664. Operation : WINHTTP_WEB_SOCKET_OPERATION;
  665. end;
  666. WINHTTP_WEB_SOCKET_ASYNC_RESULT = _WINHTTP_WEB_SOCKET_ASYNC_RESULT;
  667. _WINHTTP_WEB_SOCKET_STATUS = record
  668. dwBytesTransferred : DWORD;
  669. eBufferType : WINHTTP_WEB_SOCKET_BUFFER_TYPE;
  670. end;
  671. WINHTTP_WEB_SOCKET_STATUS = _WINHTTP_WEB_SOCKET_STATUS;
  672. function WINHTTP_INVALID_STATUS_CALLBACK : WINHTTP_STATUS_CALLBACK;
  673. function WinHttpSetStatusCallback(hInternet:HINTERNET; lpfnInternetCallback:WINHTTP_STATUS_CALLBACK; dwNotificationFlags:DWORD; dwReserved:DWORD_PTR):WINHTTP_STATUS_CALLBACK; stdcall; external External_library;
  674. function WinHttpTimeFromSystemTime(var pst:SYSTEMTIME; pwszTime:LPWSTR):WINBOOL; stdcall; external External_library;
  675. function WinHttpTimeFromSystemTime(pst:PSYSTEMTIME; pwszTime:LPWSTR):WINBOOL; stdcall; overload; external External_library;
  676. function WinHttpTimeToSystemTime(pwszTime:LPCWSTR; var pst:SYSTEMTIME):WINBOOL; stdcall; overload; external External_library;
  677. function WinHttpTimeToSystemTime(pwszTime:LPCWSTR; pst:PSYSTEMTIME):WINBOOL; stdcall; overload; external External_library;
  678. function WinHttpCrackUrl(pwszUrl:LPCWSTR; dwUrlLength:DWORD; dwFlags:DWORD; lpUrlComponents:LPURL_COMPONENTS):WINBOOL; stdcall; external External_library;
  679. function WinHttpCreateUrl(lpUrlComponents:LPURL_COMPONENTS; dwFlags:DWORD; pwszUrl:LPWSTR; pdwUrlLength:LPDWORD):WINBOOL; stdcall; external External_library;
  680. function WinHttpCheckPlatform:WINBOOL; stdcall; external External_library;
  681. function WinHttpGetDefaultProxyConfiguration(var pProxyInfo:WINHTTP_PROXY_INFO):BOOL; stdcall; overload; external External_library;
  682. function WinHttpSetDefaultProxyConfiguration(var pProxyInfo:WINHTTP_PROXY_INFO):BOOL; stdcall; overload; external External_library;
  683. function WinHttpGetDefaultProxyConfiguration(pProxyInfo:PWINHTTP_PROXY_INFO):BOOL; stdcall; overload; external External_library;
  684. function WinHttpSetDefaultProxyConfiguration(pProxyInfo:PWINHTTP_PROXY_INFO):BOOL; stdcall; overload; external External_library;
  685. function WinHttpOpen(pszAgentW:LPCWSTR; dwAccessType:DWORD; pszProxyW:LPCWSTR; pszProxyBypassW:LPCWSTR; dwFlags:DWORD):HINTERNET; stdcall; external External_library;
  686. function WinHttpCloseHandle(hInternet:HINTERNET):WINBOOL; stdcall; external External_library;
  687. function WinHttpConnect(hSession:HINTERNET; pswzServerName:LPCWSTR; nServerPort:INTERNET_PORT; dwReserved:DWORD):HINTERNET; stdcall; external External_library;
  688. function WinHttpReadData(hRequest:HINTERNET; lpBuffer:LPVOID; dwNumberOfBytesToRead:DWORD; lpdwNumberOfBytesRead:LPDWORD):WINBOOL; stdcall; external External_library;
  689. function WinHttpWriteData(hRequest:HINTERNET; lpBuffer:LPCVOID; dwNumberOfBytesToWrite:DWORD; lpdwNumberOfBytesWritten:LPDWORD):WINBOOL; stdcall; external External_library;
  690. function WinHttpQueryDataAvailable(hRequest:HINTERNET; lpdwNumberOfBytesAvailable:LPDWORD):WINBOOL; stdcall; external External_library;
  691. function WinHttpQueryOption(hInternet:HINTERNET; dwOption:DWORD; lpBuffer:LPVOID; lpdwBufferLength:LPDWORD):WINBOOL; stdcall; external External_library;
  692. function WinHttpSetOption(hInternet:HINTERNET; dwOption:DWORD; lpBuffer:LPVOID; dwBufferLength:DWORD):WINBOOL; stdcall; external External_library;
  693. function WinHttpSetTimeouts(hInternet:HINTERNET; nResolveTime:longint; nConnectTime:longint; nSendTime:longint; nReceiveTime:longint):WINBOOL; stdcall; external External_library;
  694. function WinHttpIsHostInProxyBypassList(var pProxyInfo:WINHTTP_PROXY_INFO; pwszHost:PCWSTR; tScheme:INTERNET_SCHEME; nPort:INTERNET_PORT; var pfIsInBypassList:BOOL):DWORD; stdcall; overload; external External_library;
  695. function WinHttpIsHostInProxyBypassList(pProxyInfo:PWINHTTP_PROXY_INFO; pwszHost:PCWSTR; tScheme:INTERNET_SCHEME; nPort:INTERNET_PORT; pfIsInBypassList:PBOOL):DWORD; stdcall; overload; external External_library;
  696. function WinHttpOpenRequest(hConnect:HINTERNET; pwszVerb:LPCWSTR; pwszObjectName:LPCWSTR; pwszVersion:LPCWSTR; pwszReferrer:LPCWSTR;
  697. ppwszAcceptTypes:LPPCWSTR; dwFlags:DWORD):HINTERNET; stdcall; external External_library;
  698. function WinHttpAddRequestHeaders(hRequest:HINTERNET; lpszHeaders:LPCWSTR; dwHeadersLength:DWORD; dwModifiers:DWORD):WINBOOL; stdcall; external External_library;
  699. function WinHttpSendRequest(hRequest:HINTERNET; lpszHeaders:LPCWSTR; dwHeadersLength:DWORD; lp:LPVOID; dwLength:DWORD;
  700. dwTotalLength:DWORD; dwContext:DWORD_PTR):WINBOOL; stdcall; external External_library;
  701. function WinHttpSetCredentials(hRequest:HINTERNET; AuthTargets:DWORD; AuthScheme:DWORD; pwszUserName:LPCWSTR; pwszPassword:LPCWSTR;
  702. pAuthParams:LPVOID):WINBOOL; stdcall; external External_library;
  703. function WinHttpQueryAuthSchemes(hRequest:HINTERNET; lpdwSupportedSchemes:LPDWORD; lpdwFirstScheme:LPDWORD; pdwAuthTarget:LPDWORD):WINBOOL;stdcall;external External_library name 'WinHttpQueryAuthSchemes';
  704. function WinHttpQueryAuthParams(hRequest:HINTERNET; AuthScheme:DWORD; var pAuthParams:LPVOID):WINBOOL; stdcall; overload; external External_library;
  705. function WinHttpQueryAuthParams(hRequest:HINTERNET; AuthScheme:DWORD; pAuthParams:PLPVOID):WINBOOL; stdcall; overload; external External_library;
  706. function WinHttpReceiveResponse(hRequest:HINTERNET; lpReserved:LPVOID):BOOL; stdcall; external External_library;
  707. function WinHttpQueryHeaders(hRequest:HINTERNET; dwInfoLevel:DWORD; pwszName:LPCWSTR; lpBuffer:LPVOID; lpdwBufferLength:LPDWORD;
  708. lpdwIndex:LPDWORD):WINBOOL; stdcall; external External_library;
  709. function WinHttpDetectAutoProxyConfigUrl(dwAutoDetectFlags:DWORD; var ppwstrAutoConfigUrl:LPWSTR):WINBOOL; stdcall; overload; external External_library;
  710. function WinHttpDetectAutoProxyConfigUrl(dwAutoDetectFlags:DWORD; ppwstrAutoConfigUrl:PLPWSTR):WINBOOL; stdcall; overload; external External_library;
  711. function WinHttpGetProxyForUrl(hSession:HINTERNET; lpcwszUrl:LPCWSTR; var pAutoProxyOptions:WINHTTP_AUTOPROXY_OPTIONS; var pProxyInfo:WINHTTP_PROXY_INFO):WINBOOL; stdcall; overload; external External_library;
  712. function WinHttpGetProxyForUrl(hSession:HINTERNET; lpcwszUrl:LPCWSTR; pAutoProxyOptions:PWINHTTP_AUTOPROXY_OPTIONS; pProxyInfo:PWINHTTP_PROXY_INFO):WINBOOL; stdcall; overload; external External_library;
  713. function WinHttpCreateProxyResolver(hSession:HINTERNET; var phResolver:HINTERNET):DWORD; stdcall; overload; external External_library;
  714. function WinHttpCreateProxyResolver(hSession:HINTERNET; phResolver:PHINTERNET):DWORD;stdcall; overload; external External_library;
  715. function WinHttpGetProxyForUrlEx(hResolver:HINTERNET; pcwszUrl:PCWSTR; var pAutoProxyOptions:WINHTTP_AUTOPROXY_OPTIONS; pContext:DWORD_PTR):DWORD; stdcall; overload; external External_library;
  716. function WinHttpGetProxyForUrlEx(hResolver:HINTERNET; pcwszUrl:PCWSTR; pAutoProxyOptions:PWINHTTP_AUTOPROXY_OPTIONS; pContext:DWORD_PTR):DWORD; stdcall; overload; external External_library;
  717. function WinHttpGetProxyForUrlEx2(hResolver:HINTERNET; pcwszUrl:PCWSTR; var pAutoProxyOptions:WINHTTP_AUTOPROXY_OPTIONS; cbInterfaceSelectionContext:DWORD; var pInterfaceSelectionContext:BYTE; pContext:DWORD_PTR):DWORD; stdcall; overload; external External_library;
  718. function WinHttpGetProxyForUrlEx2(hResolver:HINTERNET; pcwszUrl:PCWSTR; pAutoProxyOptions:PWINHTTP_AUTOPROXY_OPTIONS; cbInterfaceSelectionContext:DWORD; pInterfaceSelectionContext: PBYTE; pContext:DWORD_PTR):DWORD; stdcall; overload; external External_library;
  719. function WinHttpGetProxyResult(hResolver:HINTERNET; var pProxyResult:WINHTTP_PROXY_RESULT):DWORD; stdcall; overload; external External_library;
  720. function WinHttpGetProxyResult(hResolver:HINTERNET; pProxyResult:PWINHTTP_PROXY_RESULT):DWORD; stdcall; overload; external External_library;
  721. function WinHttpGetProxyResultEx(hResolver:HINTERNET; var pProxyResultEx:WINHTTP_PROXY_RESULT_EX):DWORD; stdcall; overload; external External_library;
  722. function WinHttpGetProxyResultEx(hResolver:HINTERNET; pProxyResultEx:PWINHTTP_PROXY_RESULT_EX):DWORD; stdcall; overload; external External_library;
  723. procedure WinHttpFreeProxyResult(var pProxyResult:WINHTTP_PROXY_RESULT); stdcall; overload; external External_library;
  724. procedure WinHttpFreeProxyResult(pProxyResult:PWINHTTP_PROXY_RESULT); stdcall; overload; external External_library;
  725. procedure WinHttpFreeProxyResultEx(var pProxyResultEx:WINHTTP_PROXY_RESULT_EX); stdcall; overload; external External_library;
  726. procedure WinHttpFreeProxyResultEx(pProxyResultEx:PWINHTTP_PROXY_RESULT_EX); stdcall; overload; external External_library;
  727. function WinHttpResetAutoProxy(hSession:HINTERNET; dwFlags:DWORD):DWORD; stdcall; external External_library;
  728. function WinHttpGetIEProxyConfigForCurrentUser(var pProxyConfig:WINHTTP_CURRENT_USER_IE_PROXY_CONFIG):WINBOOL; stdcall; overload; external External_library;
  729. function WinHttpGetIEProxyConfigForCurrentUser(pProxyConfig:PWINHTTP_CURRENT_USER_IE_PROXY_CONFIG):WINBOOL; stdcall; overload; external External_library;
  730. function WinHttpWriteProxySettings(hSession:HINTERNET; fForceUpdate:BOOL; var pWinHttpProxySettings:WINHTTP_PROXY_SETTINGS):DWORD; stdcall; overload; external External_library;
  731. function WinHttpWriteProxySettings(hSession:HINTERNET; fForceUpdate:BOOL; pWinHttpProxySettings:PWINHTTP_PROXY_SETTINGS):DWORD; stdcall; overload; external External_library;
  732. function WinHttpReadProxySettings(hSession:HINTERNET; pcwszConnectionName:PCWSTR; fFallBackToDefaultSettings:BOOL; fSetAutoDiscoverForDefaultSettings:BOOL; var pdwSettingsVersion:DWORD; var pfDefaultSettingsAreReturned:BOOL; var pWinHttpProxySettings:WINHTTP_PROXY_SETTINGS):DWORD; stdcall; overload; external External_library;
  733. function WinHttpReadProxySettings(hSession:HINTERNET; pcwszConnectionName:PCWSTR; fFallBackToDefaultSettings:BOOL; fSetAutoDiscoverForDefaultSettings:BOOL; pdwSettingsVersion:LPDWORD; pfDefaultSettingsAreReturned:LPBOOL; pWinHttpProxySettings:PWINHTTP_PROXY_SETTINGS):DWORD; stdcall; overload; external External_library;
  734. procedure WinHttpFreeProxySettings(var pWinHttpProxySettings:WINHTTP_PROXY_SETTINGS); stdcall; overload; external External_library;
  735. procedure WinHttpFreeProxySettings(pWinHttpProxySettings:PWINHTTP_PROXY_SETTINGS); stdcall; overload; external External_library;
  736. function WinHttpGetProxySettingsVersion(hSession:HINTERNET; var pdwProxySettingsVersion:DWORD):DWORD; stdcall; overload; external External_library;
  737. function WinHttpGetProxySettingsVersion(hSession:HINTERNET; pdwProxySettingsVersion:PDWORD):DWORD; stdcall; overload; external External_library;
  738. function WinHttpWebSocketCompleteUpgrade(hRequest:HINTERNET; pContext:DWORD_PTR):HINTERNET; stdcall; external External_library;
  739. function WinHttpWebSocketSend(hWebSocket:HINTERNET; eBufferType:WINHTTP_WEB_SOCKET_BUFFER_TYPE; pvBuffer:PVOID; dwBufferLength:DWORD):DWORD; stdcall; external External_library;
  740. function WinHttpWebSocketReceive(hWebSocket:HINTERNET; pvBuffer:PVOID; dwBufferLength:DWORD; var pdwBytesRead:DWORD; var peBufferType:WINHTTP_WEB_SOCKET_BUFFER_TYPE):DWORD; stdcall; overload; external External_library;
  741. function WinHttpWebSocketReceive(hWebSocket:HINTERNET; pvBuffer:PVOID; dwBufferLength:DWORD; pdwBytesRead:LPDWORD; peBufferType:PWINHTTP_WEB_SOCKET_BUFFER_TYPE):DWORD; stdcall; overload; external External_library;
  742. function WinHttpWebSocketShutdown(hWebSocket:HINTERNET; usStatus:USHORT; pvReason:PVOID; dwReasonLength:DWORD):DWORD; stdcall; external External_library;
  743. function WinHttpWebSocketClose(hWebSocket:HINTERNET; usStatus:USHORT; pvReason:PVOID; dwReasonLength:DWORD):DWORD; stdcall; external External_library;
  744. function WinHttpWebSocketQueryCloseStatus(hWebSocket:HINTERNET; var pusStatus:USHORT; pvReason:PVOID; dwReasonLength:DWORD; var pdwReasonLengthConsumed:DWORD):DWORD; stdcall; overload; external External_library;
  745. function WinHttpWebSocketQueryCloseStatus(hWebSocket:HINTERNET; pusStatus:LPUSHORT; pvReason:PVOID; dwReasonLength:DWORD; pdwReasonLengthConsumed:LPDWORD):DWORD; stdcall; overload; external External_library;
  746. implementation
  747. function WINHTTP_INVALID_STATUS_CALLBACK : WINHTTP_STATUS_CALLBACK;
  748. begin
  749. WINHTTP_INVALID_STATUS_CALLBACK:=WINHTTP_STATUS_CALLBACK(-(1));
  750. end;
  751. end.