| 1 |
/** |
| 2 |
* This file has no copyright assigned and is placed in the Public Domain. |
| 3 |
* This file is part of the mingw-w64 runtime package. |
| 4 |
* No warranty is given; refer to the file DISCLAIMER.PD within this package. |
| 5 |
*/ |
| 6 |
#ifndef __HTTP_H__ |
| 7 |
#define __HTTP_H__ |
| 8 |
|
| 9 |
#include <winsock2.h> |
| 10 |
#include <ws2tcpip.h> |
| 11 |
|
| 12 |
#define SECURITY_WIN32 |
| 13 |
#include <sspi.h> |
| 14 |
|
| 15 |
#ifdef __cplusplus |
| 16 |
extern "C" { |
| 17 |
#endif |
| 18 |
|
| 19 |
#define HTTP_INITIALIZE_SERVER 0x00000001 |
| 20 |
#define HTTP_INITIALIZE_CONFIG 0x00000002 |
| 21 |
|
| 22 |
#define HTTP_RECEIVE_REQUEST_FLAG_COPY_BODY 0x00000001 |
| 23 |
#define HTTP_RECEIVE_REQUEST_ENTITY_BODY_FLAG_FILL_BUFFER 0x00000001 |
| 24 |
|
| 25 |
#define HTTP_SEND_RESPONSE_FLAG_DISCONNECT 0x00000001 |
| 26 |
#define HTTP_SEND_RESPONSE_FLAG_MORE_DATA 0x00000002 |
| 27 |
#define HTTP_SEND_RESPONSE_FLAG_BUFFER_DATA 0x00000004 |
| 28 |
|
| 29 |
#define HTTP_FLUSH_RESPONSE_FLAG_RECURSIVE 0x00000001 |
| 30 |
|
| 31 |
typedef ULONGLONG HTTP_OPAQUE_ID,*PHTTP_OPAQUE_ID; |
| 32 |
|
| 33 |
typedef HTTP_OPAQUE_ID HTTP_REQUEST_ID,*PHTTP_REQUEST_ID; |
| 34 |
typedef HTTP_OPAQUE_ID HTTP_CONNECTION_ID,*PHTTP_CONNECTION_ID; |
| 35 |
typedef HTTP_OPAQUE_ID HTTP_RAW_CONNECTION_ID,*PHTTP_RAW_CONNECTION_ID; |
| 36 |
typedef HTTP_OPAQUE_ID HTTP_URL_GROUP_ID, *PHTTP_URL_GROUP_ID; |
| 37 |
typedef HTTP_OPAQUE_ID HTTP_SERVER_SESSION_ID, *PHTTP_SERVER_SESSION_ID; |
| 38 |
|
| 39 |
#define HTTP_NULL_ID (0ull) |
| 40 |
#define HTTP_IS_NULL_ID(pid) (HTTP_NULL_ID==*(pid)) |
| 41 |
#define HTTP_SET_NULL_ID(pid) (*(pid) = HTTP_NULL_ID) |
| 42 |
|
| 43 |
#define HTTP_BYTE_RANGE_TO_EOF ((ULONGLONG)-1) |
| 44 |
|
| 45 |
typedef struct _HTTP_BYTE_RANGE { |
| 46 |
ULARGE_INTEGER StartingOffset; |
| 47 |
ULARGE_INTEGER Length; |
| 48 |
} HTTP_BYTE_RANGE,*PHTTP_BYTE_RANGE; |
| 49 |
|
| 50 |
typedef struct _HTTP_VERSION { |
| 51 |
USHORT MajorVersion; |
| 52 |
USHORT MinorVersion; |
| 53 |
} HTTP_VERSION,*PHTTP_VERSION; |
| 54 |
|
| 55 |
#define HTTP_VERSION_UNKNOWN { 0,0 } |
| 56 |
#define HTTP_VERSION_0_9 { 0,9 } |
| 57 |
#define HTTP_VERSION_1_0 { 1,0 } |
| 58 |
#define HTTP_VERSION_1_1 { 1,1 } |
| 59 |
|
| 60 |
#define HTTP_SET_VERSION(version,major,minor) do { (version).MajorVersion = (major); (version).MinorVersion = (minor); } while (0,0) |
| 61 |
#define HTTP_EQUAL_VERSION(version,major,minor) ((version).MajorVersion==(major) && (version).MinorVersion==(minor)) |
| 62 |
#define HTTP_GREATER_VERSION(version,major,minor) ((version).MajorVersion > (major) || ((version).MajorVersion==(major) && (version).MinorVersion > (minor))) |
| 63 |
#define HTTP_LESS_VERSION(version,major,minor) ((version).MajorVersion < (major) || ((version).MajorVersion==(major) && (version).MinorVersion < (minor))) |
| 64 |
#define HTTP_NOT_EQUAL_VERSION(version,major,minor) (!HTTP_EQUAL_VERSION(version,major,minor)) |
| 65 |
#define HTTP_GREATER_EQUAL_VERSION(version,major,minor) (!HTTP_LESS_VERSION(version,major,minor)) |
| 66 |
#define HTTP_LESS_EQUAL_VERSION(version,major,minor) (!HTTP_GREATER_VERSION(version,major,minor)) |
| 67 |
|
| 68 |
typedef enum _HTTP_VERB { |
| 69 |
HttpVerbUnparsed = 0, |
| 70 |
HttpVerbUnknown,HttpVerbInvalid,HttpVerbOPTIONS,HttpVerbGET,HttpVerbHEAD,HttpVerbPOST,HttpVerbPUT,HttpVerbDELETE, |
| 71 |
HttpVerbTRACE,HttpVerbCONNECT,HttpVerbTRACK,HttpVerbMOVE,HttpVerbCOPY,HttpVerbPROPFIND,HttpVerbPROPPATCH,HttpVerbMKCOL,HttpVerbLOCK, |
| 72 |
HttpVerbUNLOCK,HttpVerbSEARCH,HttpVerbMaximum |
| 73 |
} HTTP_VERB,*PHTTP_VERB; |
| 74 |
|
| 75 |
typedef enum _HTTP_HEADER_ID { |
| 76 |
HttpHeaderCacheControl = 0,HttpHeaderConnection = 1,HttpHeaderDate = 2,HttpHeaderKeepAlive = 3,HttpHeaderPragma = 4,HttpHeaderTrailer = 5, |
| 77 |
HttpHeaderTransferEncoding = 6,HttpHeaderUpgrade = 7,HttpHeaderVia = 8,HttpHeaderWarning = 9,HttpHeaderAllow = 10,HttpHeaderContentLength = 11, |
| 78 |
HttpHeaderContentType = 12,HttpHeaderContentEncoding = 13,HttpHeaderContentLanguage = 14,HttpHeaderContentLocation = 15,HttpHeaderContentMd5 = 16, |
| 79 |
HttpHeaderContentRange = 17,HttpHeaderExpires = 18,HttpHeaderLastModified = 19,HttpHeaderAccept = 20,HttpHeaderAcceptCharset = 21, |
| 80 |
HttpHeaderAcceptEncoding = 22,HttpHeaderAcceptLanguage = 23,HttpHeaderAuthorization = 24,HttpHeaderCookie = 25,HttpHeaderExpect = 26, |
| 81 |
HttpHeaderFrom = 27,HttpHeaderHost = 28,HttpHeaderIfMatch = 29,HttpHeaderIfModifiedSince = 30,HttpHeaderIfNoneMatch = 31,HttpHeaderIfRange = 32, |
| 82 |
HttpHeaderIfUnmodifiedSince = 33,HttpHeaderMaxForwards = 34,HttpHeaderProxyAuthorization = 35,HttpHeaderReferer = 36,HttpHeaderRange = 37, |
| 83 |
HttpHeaderTe = 38,HttpHeaderTranslate = 39,HttpHeaderUserAgent = 40,HttpHeaderRequestMaximum = 41,HttpHeaderAcceptRanges = 20,HttpHeaderAge = 21, |
| 84 |
HttpHeaderEtag = 22,HttpHeaderLocation = 23,HttpHeaderProxyAuthenticate = 24,HttpHeaderRetryAfter = 25,HttpHeaderServer = 26, |
| 85 |
HttpHeaderSetCookie = 27,HttpHeaderVary = 28,HttpHeaderWwwAuthenticate = 29,HttpHeaderResponseMaximum = 30,HttpHeaderMaximum = 41 |
| 86 |
} HTTP_HEADER_ID,*PHTTP_HEADER_ID; |
| 87 |
|
| 88 |
typedef struct _HTTP_KNOWN_HEADER { |
| 89 |
USHORT RawValueLength; |
| 90 |
PCSTR pRawValue; |
| 91 |
} HTTP_KNOWN_HEADER,*PHTTP_KNOWN_HEADER; |
| 92 |
|
| 93 |
typedef struct _HTTP_UNKNOWN_HEADER { |
| 94 |
USHORT NameLength; |
| 95 |
USHORT RawValueLength; |
| 96 |
PCSTR pName; |
| 97 |
PCSTR pRawValue; |
| 98 |
} HTTP_UNKNOWN_HEADER,*PHTTP_UNKNOWN_HEADER; |
| 99 |
|
| 100 |
typedef enum _HTTP_DATA_CHUNK_TYPE { |
| 101 |
HttpDataChunkFromMemory = 0, |
| 102 |
HttpDataChunkFromFileHandle, |
| 103 |
HttpDataChunkFromFragmentCache, |
| 104 |
HttpDataChunkFromFragmentCacheEx, |
| 105 |
HttpDataChunkMaximum |
| 106 |
} HTTP_DATA_CHUNK_TYPE,*PHTTP_DATA_CHUNK_TYPE; |
| 107 |
|
| 108 |
typedef struct _HTTP_DATA_CHUNK { |
| 109 |
HTTP_DATA_CHUNK_TYPE DataChunkType; |
| 110 |
__C89_NAMELESS union { |
| 111 |
struct { |
| 112 |
PVOID pBuffer; |
| 113 |
ULONG BufferLength; |
| 114 |
} FromMemory; |
| 115 |
struct { |
| 116 |
HTTP_BYTE_RANGE ByteRange; |
| 117 |
HANDLE FileHandle; |
| 118 |
} FromFileHandle; |
| 119 |
struct { |
| 120 |
USHORT FragmentNameLength; |
| 121 |
PCWSTR pFragmentName; |
| 122 |
} FromFragmentCache; |
| 123 |
}; |
| 124 |
} HTTP_DATA_CHUNK,*PHTTP_DATA_CHUNK; |
| 125 |
|
| 126 |
typedef struct _HTTP_REQUEST_HEADERS { |
| 127 |
USHORT UnknownHeaderCount; |
| 128 |
PHTTP_UNKNOWN_HEADER pUnknownHeaders; |
| 129 |
USHORT TrailerCount; |
| 130 |
PHTTP_UNKNOWN_HEADER pTrailers; |
| 131 |
HTTP_KNOWN_HEADER KnownHeaders[HttpHeaderRequestMaximum]; |
| 132 |
} HTTP_REQUEST_HEADERS,*PHTTP_REQUEST_HEADERS; |
| 133 |
|
| 134 |
typedef struct _HTTP_RESPONSE_HEADERS { |
| 135 |
USHORT UnknownHeaderCount; |
| 136 |
PHTTP_UNKNOWN_HEADER pUnknownHeaders; |
| 137 |
USHORT TrailerCount; |
| 138 |
PHTTP_UNKNOWN_HEADER pTrailers; |
| 139 |
HTTP_KNOWN_HEADER KnownHeaders[HttpHeaderResponseMaximum]; |
| 140 |
} HTTP_RESPONSE_HEADERS,*PHTTP_RESPONSE_HEADERS; |
| 141 |
|
| 142 |
typedef struct _HTTP_TRANSPORT_ADDRESS { |
| 143 |
PSOCKADDR pRemoteAddress; |
| 144 |
PSOCKADDR pLocalAddress; |
| 145 |
} HTTP_TRANSPORT_ADDRESS,*PHTTP_TRANSPORT_ADDRESS; |
| 146 |
|
| 147 |
typedef struct _HTTP_COOKED_URL { |
| 148 |
USHORT FullUrlLength; |
| 149 |
USHORT HostLength; |
| 150 |
USHORT AbsPathLength; |
| 151 |
USHORT QueryStringLength; |
| 152 |
PCWSTR pFullUrl; |
| 153 |
PCWSTR pHost; |
| 154 |
PCWSTR pAbsPath; |
| 155 |
PCWSTR pQueryString; |
| 156 |
} HTTP_COOKED_URL,*PHTTP_COOKED_URL; |
| 157 |
|
| 158 |
typedef ULONGLONG HTTP_URL_CONTEXT; |
| 159 |
|
| 160 |
typedef struct _HTTP_SSL_CLIENT_CERT_INFO { |
| 161 |
ULONG CertFlags; |
| 162 |
ULONG CertEncodedSize; |
| 163 |
PUCHAR pCertEncoded; |
| 164 |
HANDLE Token; |
| 165 |
BOOLEAN CertDeniedByMapper; |
| 166 |
} HTTP_SSL_CLIENT_CERT_INFO,*PHTTP_SSL_CLIENT_CERT_INFO; |
| 167 |
|
| 168 |
typedef struct _HTTP_SSL_INFO { |
| 169 |
USHORT ServerCertKeySize; |
| 170 |
USHORT ConnectionKeySize; |
| 171 |
ULONG ServerCertIssuerSize; |
| 172 |
ULONG ServerCertSubjectSize; |
| 173 |
PCSTR pServerCertIssuer; |
| 174 |
PCSTR pServerCertSubject; |
| 175 |
PHTTP_SSL_CLIENT_CERT_INFO pClientCertInfo; |
| 176 |
ULONG SslClientCertNegotiated; |
| 177 |
} HTTP_SSL_INFO,*PHTTP_SSL_INFO; |
| 178 |
|
| 179 |
typedef struct _HTTP_REQUEST_V1 { |
| 180 |
ULONG Flags; |
| 181 |
HTTP_CONNECTION_ID ConnectionId; |
| 182 |
HTTP_REQUEST_ID RequestId; |
| 183 |
HTTP_URL_CONTEXT UrlContext; |
| 184 |
HTTP_VERSION Version; |
| 185 |
HTTP_VERB Verb; |
| 186 |
USHORT UnknownVerbLength; |
| 187 |
USHORT RawUrlLength; |
| 188 |
PCSTR pUnknownVerb; |
| 189 |
PCSTR pRawUrl; |
| 190 |
HTTP_COOKED_URL CookedUrl; |
| 191 |
HTTP_TRANSPORT_ADDRESS Address; |
| 192 |
HTTP_REQUEST_HEADERS Headers; |
| 193 |
ULONGLONG BytesReceived; |
| 194 |
USHORT EntityChunkCount; |
| 195 |
PHTTP_DATA_CHUNK pEntityChunks; |
| 196 |
HTTP_RAW_CONNECTION_ID RawConnectionId; |
| 197 |
PHTTP_SSL_INFO pSslInfo; |
| 198 |
} HTTP_REQUEST_V1, *PHTTP_REQUEST_V1; |
| 199 |
|
| 200 |
typedef enum _HTTP_REQUEST_INFO_TYPE { |
| 201 |
HttpRequestInfoTypeAuth = 0 |
| 202 |
} HTTP_REQUEST_INFO_TYPE, *PHTTP_REQUEST_INFO_TYPE; |
| 203 |
|
| 204 |
typedef struct _HTTP_REQUEST_INFO { |
| 205 |
HTTP_REQUEST_INFO_TYPE InfoType; |
| 206 |
ULONG InfoLength; |
| 207 |
PVOID pInfo; |
| 208 |
} HTTP_REQUEST_INFO, *PHTTP_REQUEST_INFO; |
| 209 |
|
| 210 |
#ifdef __cplusplus |
| 211 |
typedef struct _HTTP_REQUEST_V2 : HTTP_REQUEST_V1 { |
| 212 |
USHORT RequestInfoCount; |
| 213 |
PHTTP_REQUEST_INFO pRequestInfo; |
| 214 |
} HTTP_REQUEST_V2, *PHTTP_REQUEST_V2; |
| 215 |
#else |
| 216 |
typedef struct _HTTP_REQUEST_V2 { |
| 217 |
/* struct HTTP_REQUEST_V1; */ |
| 218 |
__C89_NAMELESS struct { |
| 219 |
ULONG Flags; |
| 220 |
HTTP_CONNECTION_ID ConnectionId; |
| 221 |
HTTP_REQUEST_ID RequestId; |
| 222 |
HTTP_URL_CONTEXT UrlContext; |
| 223 |
HTTP_VERSION Version; |
| 224 |
HTTP_VERB Verb; |
| 225 |
USHORT UnknownVerbLength; |
| 226 |
USHORT RawUrlLength; |
| 227 |
PCSTR pUnknownVerb; |
| 228 |
PCSTR pRawUrl; |
| 229 |
HTTP_COOKED_URL CookedUrl; |
| 230 |
HTTP_TRANSPORT_ADDRESS Address; |
| 231 |
HTTP_REQUEST_HEADERS Headers; |
| 232 |
ULONGLONG BytesReceived; |
| 233 |
USHORT EntityChunkCount; |
| 234 |
PHTTP_DATA_CHUNK pEntityChunks; |
| 235 |
HTTP_RAW_CONNECTION_ID RawConnectionId; |
| 236 |
PHTTP_SSL_INFO pSslInfo; |
| 237 |
}; |
| 238 |
USHORT RequestInfoCount; |
| 239 |
PHTTP_REQUEST_INFO pRequestInfo; |
| 240 |
} HTTP_REQUEST_V2, *PHTTP_REQUEST_V2; |
| 241 |
#endif |
| 242 |
|
| 243 |
#if (_WIN32_WINNT >= 0x0600) |
| 244 |
typedef HTTP_REQUEST_V2 HTTP_REQUEST, *PHTTP_REQUEST; |
| 245 |
#else |
| 246 |
typedef HTTP_REQUEST_V1 HTTP_REQUEST, *PHTTP_REQUEST; |
| 247 |
#endif |
| 248 |
|
| 249 |
#define HTTP_REQUEST_FLAG_MORE_ENTITY_BODY_EXISTS 0x00000001 |
| 250 |
|
| 251 |
typedef struct _HTTP_RESPONSE_V1 { |
| 252 |
ULONG Flags; |
| 253 |
HTTP_VERSION Version; |
| 254 |
USHORT StatusCode; |
| 255 |
USHORT ReasonLength; |
| 256 |
PCSTR pReason; |
| 257 |
HTTP_RESPONSE_HEADERS Headers; |
| 258 |
USHORT EntityChunkCount; |
| 259 |
PHTTP_DATA_CHUNK pEntityChunks; |
| 260 |
} HTTP_RESPONSE_V1,*PHTTP_RESPONSE_V1; |
| 261 |
|
| 262 |
typedef enum _HTTP_RESPONSE_INFO_TYPE { |
| 263 |
HttpResponseInfoTypeMultipleKnownHeaders = 0, |
| 264 |
HttpResponseInfoTypeAuthenticationProperty, |
| 265 |
HttpResponseInfoTypeQosProperty, |
| 266 |
HttpResponseInfoTypeChannelBind |
| 267 |
} HTTP_RESPONSE_INFO_TYPE, *PHTTP_RESPONSE_INFO_TYPE; |
| 268 |
|
| 269 |
typedef struct _HTTP_RESPONSE_INFO { |
| 270 |
HTTP_RESPONSE_INFO_TYPE Type; |
| 271 |
ULONG Length; |
| 272 |
PVOID pInfo; |
| 273 |
} HTTP_RESPONSE_INFO, *PHTTP_RESPONSE_INFO; |
| 274 |
|
| 275 |
#ifdef __cplusplus |
| 276 |
typedef struct _HTTP_RESPONSE_V2 : HTTP_RESPONSE_V1 { |
| 277 |
USHORT ResponseInfoCount; |
| 278 |
PHTTP_RESPONSE_INFO pResponseInfo; |
| 279 |
} HTTP_RESPONSE_V2, *PHTTP_RESPONSE_V2; |
| 280 |
#else |
| 281 |
typedef struct _HTTP_RESPONSE_V2 { |
| 282 |
/* struct HTTP_RESPONSE_V1; */ |
| 283 |
__C89_NAMELESS struct { |
| 284 |
ULONG Flags; |
| 285 |
HTTP_VERSION Version; |
| 286 |
USHORT StatusCode; |
| 287 |
USHORT ReasonLength; |
| 288 |
PCSTR pReason; |
| 289 |
HTTP_RESPONSE_HEADERS Headers; |
| 290 |
USHORT EntityChunkCount; |
| 291 |
PHTTP_DATA_CHUNK pEntityChunks; |
| 292 |
}; |
| 293 |
USHORT ResponseInfoCount; |
| 294 |
PHTTP_RESPONSE_INFO pResponseInfo; |
| 295 |
} HTTP_RESPONSE_V2, *PHTTP_RESPONSE_V2; |
| 296 |
#endif |
| 297 |
|
| 298 |
#if (_WIN32_WINNT >= 0x0600) |
| 299 |
typedef HTTP_RESPONSE_V2 HTTP_RESPONSE, *PHTTP_RESPONSE; |
| 300 |
#else |
| 301 |
typedef HTTP_RESPONSE_V1 HTTP_RESPONSE, *PHTTP_RESPONSE; |
| 302 |
#endif /* _WIN32_WINNT >= 0x0600 */ |
| 303 |
|
| 304 |
typedef enum _HTTP_CACHE_POLICY_TYPE { |
| 305 |
HttpCachePolicyNocache = 0, |
| 306 |
HttpCachePolicyUserInvalidates, |
| 307 |
HttpCachePolicyTimeToLive, |
| 308 |
HttpCachePolicyMaximum |
| 309 |
} HTTP_CACHE_POLICY_TYPE,*PHTTP_CACHE_POLICY_TYPE; |
| 310 |
|
| 311 |
typedef struct _HTTP_CACHE_POLICY { |
| 312 |
HTTP_CACHE_POLICY_TYPE Policy; |
| 313 |
ULONG SecondsToLive; |
| 314 |
} HTTP_CACHE_POLICY, *PHTTP_CACHE_POLICY; |
| 315 |
|
| 316 |
typedef enum _HTTP_SERVICE_CONFIG_ID { |
| 317 |
HttpServiceConfigIPListenList = 0, |
| 318 |
HttpServiceConfigSSLCertInfo, |
| 319 |
HttpServiceConfigUrlAclInfo, |
| 320 |
HttpServiceConfigMax |
| 321 |
} HTTP_SERVICE_CONFIG_ID, *PHTTP_SERVICE_CONFIG_ID; |
| 322 |
|
| 323 |
typedef enum _HTTP_SERVICE_CONFIG_QUERY_TYPE { |
| 324 |
HttpServiceConfigQueryExact = 0, |
| 325 |
HttpServiceConfigQueryNext, |
| 326 |
HttpServiceConfigQueryMax |
| 327 |
} HTTP_SERVICE_CONFIG_QUERY_TYPE,*PHTTP_SERVICE_CONFIG_QUERY_TYPE; |
| 328 |
|
| 329 |
typedef struct _HTTP_SERVICE_CONFIG_SSL_KEY { |
| 330 |
PSOCKADDR pIpPort; |
| 331 |
} HTTP_SERVICE_CONFIG_SSL_KEY,*PHTTP_SERVICE_CONFIG_SSL_KEY; |
| 332 |
|
| 333 |
typedef struct _HTTP_SERVICE_CONFIG_SSL_PARAM { |
| 334 |
ULONG SslHashLength; |
| 335 |
PVOID pSslHash; |
| 336 |
GUID AppId; |
| 337 |
PWSTR pSslCertStoreName; |
| 338 |
DWORD DefaultCertCheckMode; |
| 339 |
DWORD DefaultRevocationFreshnessTime; |
| 340 |
DWORD DefaultRevocationUrlRetrievalTimeout; |
| 341 |
PWSTR pDefaultSslCtlIdentifier; |
| 342 |
PWSTR pDefaultSslCtlStoreName; |
| 343 |
DWORD DefaultFlags; |
| 344 |
} HTTP_SERVICE_CONFIG_SSL_PARAM,*PHTTP_SERVICE_CONFIG_SSL_PARAM; |
| 345 |
|
| 346 |
#define HTTP_SERVICE_CONFIG_SSL_FLAG_USE_DS_MAPPER 0x00000001 |
| 347 |
#define HTTP_SERVICE_CONFIG_SSL_FLAG_NEGOTIATE_CLIENT_CERT 0x00000002 |
| 348 |
#define HTTP_SERVICE_CONFIG_SSL_FLAG_NO_RAW_FILTER 0x00000004 |
| 349 |
|
| 350 |
typedef struct _HTTP_SERVICE_CONFIG_SSL_SET { |
| 351 |
HTTP_SERVICE_CONFIG_SSL_KEY KeyDesc; |
| 352 |
HTTP_SERVICE_CONFIG_SSL_PARAM ParamDesc; |
| 353 |
} HTTP_SERVICE_CONFIG_SSL_SET,*PHTTP_SERVICE_CONFIG_SSL_SET; |
| 354 |
|
| 355 |
typedef struct _HTTP_SERVICE_CONFIG_SSL_QUERY { |
| 356 |
HTTP_SERVICE_CONFIG_QUERY_TYPE QueryDesc; |
| 357 |
HTTP_SERVICE_CONFIG_SSL_KEY KeyDesc; |
| 358 |
DWORD dwToken; |
| 359 |
} HTTP_SERVICE_CONFIG_SSL_QUERY,*PHTTP_SERVICE_CONFIG_SSL_QUERY; |
| 360 |
|
| 361 |
typedef struct _HTTP_SERVICE_CONFIG_IP_LISTEN_PARAM { |
| 362 |
USHORT AddrLength; |
| 363 |
PSOCKADDR pAddress; |
| 364 |
} HTTP_SERVICE_CONFIG_IP_LISTEN_PARAM,*PHTTP_SERVICE_CONFIG_IP_LISTEN_PARAM; |
| 365 |
|
| 366 |
typedef struct _HTTP_SERVICE_CONFIG_IP_LISTEN_QUERY { |
| 367 |
ULONG AddrCount; |
| 368 |
SOCKADDR_STORAGE AddrList[ANYSIZE_ARRAY]; |
| 369 |
} HTTP_SERVICE_CONFIG_IP_LISTEN_QUERY,*PHTTP_SERVICE_CONFIG_IP_LISTEN_QUERY; |
| 370 |
|
| 371 |
typedef struct _HTTP_SERVICE_CONFIG_URLACL_KEY { |
| 372 |
PWSTR pUrlPrefix; |
| 373 |
} HTTP_SERVICE_CONFIG_URLACL_KEY,*PHTTP_SERVICE_CONFIG_URLACL_KEY; |
| 374 |
|
| 375 |
typedef struct _HTTP_SERVICE_CONFIG_URLACL_PARAM { |
| 376 |
PWSTR pStringSecurityDescriptor; |
| 377 |
} HTTP_SERVICE_CONFIG_URLACL_PARAM,*PHTTP_SERVICE_CONFIG_URLACL_PARAM; |
| 378 |
|
| 379 |
typedef struct _HTTP_SERVICE_CONFIG_URLACL_SET { |
| 380 |
HTTP_SERVICE_CONFIG_URLACL_KEY KeyDesc; |
| 381 |
HTTP_SERVICE_CONFIG_URLACL_PARAM ParamDesc; |
| 382 |
} HTTP_SERVICE_CONFIG_URLACL_SET,*PHTTP_SERVICE_CONFIG_URLACL_SET; |
| 383 |
|
| 384 |
typedef struct _HTTP_SERVICE_CONFIG_URLACL_QUERY { |
| 385 |
HTTP_SERVICE_CONFIG_QUERY_TYPE QueryDesc; |
| 386 |
HTTP_SERVICE_CONFIG_URLACL_KEY KeyDesc; |
| 387 |
DWORD dwToken; |
| 388 |
} HTTP_SERVICE_CONFIG_URLACL_QUERY,*PHTTP_SERVICE_CONFIG_URLACL_QUERY; |
| 389 |
|
| 390 |
#if !defined(HTTPAPI_LINKAGE) |
| 391 |
#ifdef HTTPAPI_LINKAGE_EXPORT |
| 392 |
#define DECLSPEC_EXPORT __declspec(dllexport) |
| 393 |
#define HTTPAPI_LINKAGE DECLSPEC_EXPORT |
| 394 |
#else |
| 395 |
#define HTTPAPI_LINKAGE DECLSPEC_IMPORT |
| 396 |
#endif |
| 397 |
#endif |
| 398 |
|
| 399 |
typedef struct _HTTPAPI_VERSION { |
| 400 |
USHORT HttpApiMajorVersion; |
| 401 |
USHORT HttpApiMinorVersion; |
| 402 |
} HTTPAPI_VERSION,*PHTTPAPI_VERSION; |
| 403 |
|
| 404 |
#define HTTPAPI_VERSION_1 {1,0} |
| 405 |
|
| 406 |
HTTPAPI_LINKAGE ULONG WINAPI HttpInitialize(HTTPAPI_VERSION Version,ULONG Flags,PVOID pReserved); |
| 407 |
HTTPAPI_LINKAGE ULONG WINAPI HttpTerminate(ULONG Flags,PVOID pReserved); |
| 408 |
HTTPAPI_LINKAGE ULONG WINAPI HttpCreateHttpHandle(PHANDLE pReqQueueHandle,ULONG Options); |
| 409 |
HTTPAPI_LINKAGE ULONG WINAPI HttpReceiveClientCertificate(HANDLE ReqQueueHandle,HTTP_CONNECTION_ID ConnectionId,ULONG Flags,PHTTP_SSL_CLIENT_CERT_INFO pSslClientCertInfo,ULONG SslClientCertInfoSize,PULONG pBytesReceived,LPOVERLAPPED pOverlapped); |
| 410 |
HTTPAPI_LINKAGE ULONG WINAPI HttpAddUrl(HANDLE ReqQueueHandle,PCWSTR pUrlPrefix,PVOID pReserved); |
| 411 |
HTTPAPI_LINKAGE ULONG WINAPI HttpRemoveUrl(HANDLE ReqQueueHandle,PCWSTR pUrlPrefix); |
| 412 |
HTTPAPI_LINKAGE ULONG WINAPI HttpReceiveHttpRequest(HANDLE ReqQueueHandle,HTTP_REQUEST_ID RequestId,ULONG Flags,PHTTP_REQUEST pRequestBuffer,ULONG RequestBufferLength,PULONG pBytesReceived,LPOVERLAPPED pOverlapped); |
| 413 |
HTTPAPI_LINKAGE ULONG WINAPI HttpReceiveRequestEntityBody(HANDLE ReqQueueHandle,HTTP_REQUEST_ID RequestId,ULONG Flags,PVOID pBuffer,ULONG BufferLength,PULONG pBytesReceived,LPOVERLAPPED pOverlapped); |
| 414 |
HTTPAPI_LINKAGE ULONG WINAPI HttpSendHttpResponse(HANDLE ReqQueueHandle,HTTP_REQUEST_ID RequestId,ULONG Flags,PHTTP_RESPONSE pHttpResponse,PVOID pReserved1,PULONG pBytesSent,PVOID pReserved2,ULONG Reserved3,LPOVERLAPPED pOverlapped,PVOID pReserved4); |
| 415 |
HTTPAPI_LINKAGE ULONG WINAPI HttpSendResponseEntityBody(HANDLE ReqQueueHandle,HTTP_REQUEST_ID RequestId,ULONG Flags,USHORT EntityChunkCount,PHTTP_DATA_CHUNK pEntityChunks,PULONG pBytesSent,PVOID pReserved1,ULONG Reserved2,LPOVERLAPPED pOverlapped,PVOID pReserved3); |
| 416 |
HTTPAPI_LINKAGE ULONG WINAPI HttpWaitForDisconnect(HANDLE ReqQueueHandle,HTTP_CONNECTION_ID ConnectionId,LPOVERLAPPED pOverlapped); |
| 417 |
HTTPAPI_LINKAGE ULONG WINAPI HttpFlushResponseCache(HANDLE ReqQueueHandle,PCWSTR pUrlPrefix,ULONG Flags,LPOVERLAPPED pOverlapped); |
| 418 |
HTTPAPI_LINKAGE ULONG WINAPI HttpAddFragmentToCache(HANDLE ReqQueueHandle,PCWSTR pUrlPrefix,PHTTP_DATA_CHUNK pDataChunk,PHTTP_CACHE_POLICY pCachePolicy,LPOVERLAPPED pOverlapped); |
| 419 |
HTTPAPI_LINKAGE ULONG WINAPI HttpReadFragmentFromCache(HANDLE ReqQueueHandle,PCWSTR pUrlPrefix,PHTTP_BYTE_RANGE pByteRange,PVOID pBuffer,ULONG BufferLength,PULONG pBytesRead,LPOVERLAPPED pOverlapped); |
| 420 |
HTTPAPI_LINKAGE ULONG WINAPI HttpSetServiceConfiguration(HANDLE ServiceHandle,HTTP_SERVICE_CONFIG_ID ConfigId,PVOID pConfigInformation,ULONG ConfigInformationLength,LPOVERLAPPED pOverlapped); |
| 421 |
HTTPAPI_LINKAGE ULONG WINAPI HttpDeleteServiceConfiguration(HANDLE ServiceHandle,HTTP_SERVICE_CONFIG_ID ConfigId,PVOID pConfigInformation,ULONG ConfigInformationLength,LPOVERLAPPED pOverlapped); |
| 422 |
HTTPAPI_LINKAGE ULONG WINAPI HttpQueryServiceConfiguration(HANDLE ServiceHandle,HTTP_SERVICE_CONFIG_ID ConfigId,PVOID pInputConfigInformation,ULONG InputConfigInformationLength,PVOID pOutputConfigInformation,ULONG OutputConfigInformationLength,PULONG pReturnLength,LPOVERLAPPED pOverlapped); |
| 423 |
|
| 424 |
#if (_WIN32_WINNT >= 0x0600) |
| 425 |
#define HTTP_VERSION_2_0 { 2, 0 } |
| 426 |
#define HTTPAPI_VERSION_2 { 2, 0 } |
| 427 |
|
| 428 |
typedef enum _HTTP_503_RESPONSE_VERBOSITY { |
| 429 |
Http503ResponseVerbosityBasic = 0, |
| 430 |
Http503ResponseVerbosityLimited, |
| 431 |
Http503ResponseVerbosityFull |
| 432 |
} HTTP_503_RESPONSE_VERBOSITY, *PHTTP_503_RESPONSE_VERBOSITY; |
| 433 |
|
| 434 |
typedef enum _HTTP_ENABLED_STATE { |
| 435 |
HttpEnabledStateActive = 0, |
| 436 |
HttpEnabledStateInactive |
| 437 |
} HTTP_ENABLED_STATE, *PHTTP_ENABLED_STATE; |
| 438 |
|
| 439 |
typedef enum _HTTP_LOGGING_ROLLOVER_TYPE { |
| 440 |
HttpLoggingRolloverSize = 0, |
| 441 |
HttpLoggingRolloverDaily, |
| 442 |
HttpLoggingRolloverWeekly, |
| 443 |
HttpLoggingRolloverMonthly, |
| 444 |
HttpLoggingRolloverHourly |
| 445 |
} HTTP_LOGGING_ROLLOVER_TYPE, *PHTTP_LOGGING_ROLLOVER_TYPE; |
| 446 |
|
| 447 |
typedef enum _HTTP_LOGGING_TYPE { |
| 448 |
HttpLoggingTypeW3C = 0, |
| 449 |
HttpLoggingTypeIIS, |
| 450 |
HttpLoggingTypeNCSA, |
| 451 |
HttpLoggingTypeRaw |
| 452 |
} HTTP_LOGGING_TYPE, *PHTTP_LOGGING_TYPE; |
| 453 |
|
| 454 |
typedef enum _HTTP_QOS_SETTING_TYPE { |
| 455 |
HttpQosSettingTypeBandwidth = 0, |
| 456 |
HttpQosSettingTypeConnectionLimit, |
| 457 |
HttpQosSettingTypeFlowRate |
| 458 |
} HTTP_QOS_SETTING_TYPE, *PHTTP_QOS_SETTING_TYPE; |
| 459 |
|
| 460 |
typedef enum _HTTP_SERVER_PROPERTY { |
| 461 |
HttpServerAuthenticationProperty = 0, |
| 462 |
HttpServerLoggingProperty, |
| 463 |
HttpServerQosProperty, |
| 464 |
HttpServerTimeoutsProperty, |
| 465 |
HttpServerQueueLengthProperty, |
| 466 |
HttpServerStateProperty, |
| 467 |
HttpServer503VerbosityProperty, |
| 468 |
HttpServerBindingProperty, |
| 469 |
HttpServerExtendedAuthenticationProperty, |
| 470 |
HttpServerListenEndpointProperty, |
| 471 |
HttpServerChannelBindProperty |
| 472 |
} HTTP_SERVER_PROPERTY, *PHTTP_SERVER_PROPERTY; |
| 473 |
|
| 474 |
typedef enum _HTTP_AUTHENTICATION_HARDENING_LEVELS { |
| 475 |
HttpAuthenticationHardeningLegacy = 0, |
| 476 |
HttpAuthenticationHardeningMedium = 1, |
| 477 |
HttpAuthenticationHardeningStrict = 2 |
| 478 |
} HTTP_AUTHENTICATION_HARDENING_LEVELS; |
| 479 |
|
| 480 |
typedef enum _HTTP_SERVICE_BINDING_TYPE { |
| 481 |
HttpServiceBindingTypeNone = 0, |
| 482 |
HttpServiceBindingTypeW = 1, |
| 483 |
HttpServiceBindingTypeA = 2 |
| 484 |
} HTTP_SERVICE_BINDING_TYPE; |
| 485 |
|
| 486 |
typedef enum _HTTP_LOG_DATA_TYPE { |
| 487 |
HttpLogDataTypeFields = 0 |
| 488 |
} HTTP_LOG_DATA_TYPE, *PHTTP_LOG_DATA_TYPE; |
| 489 |
|
| 490 |
typedef struct _HTTP_LOG_DATA { |
| 491 |
HTTP_LOG_DATA_TYPE Type; |
| 492 |
} HTTP_LOG_DATA, *PHTTP_LOG_DATA; |
| 493 |
|
| 494 |
typedef enum _HTTP_REQUEST_AUTH_TYPE { |
| 495 |
HttpRequestAuthTypeNone = 0, |
| 496 |
HttpRequestAuthTypeBasic, |
| 497 |
HttpRequestAuthTypeDigest, |
| 498 |
HttpRequestAuthTypeNTLM, |
| 499 |
HttpRequestAuthTypeNegotiate, |
| 500 |
HttpRequestAuthTypeKerberos |
| 501 |
} HTTP_REQUEST_AUTH_TYPE, *PHTTP_REQUEST_AUTH_TYPE; |
| 502 |
|
| 503 |
typedef enum _HTTP_AUTH_STATUS { |
| 504 |
HttpAuthStatusSuccess = 0, |
| 505 |
HttpAuthStatusNotAuthenticated, |
| 506 |
HttpAuthStatusFailure |
| 507 |
} HTTP_AUTH_STATUS, *PHTTP_AUTH_STATUS; |
| 508 |
|
| 509 |
typedef enum _HTTP_SERVICE_CONFIG_TIMEOUT_KEY { |
| 510 |
IdleConnectionTimeout = 0, |
| 511 |
HeaderWaitTimeout |
| 512 |
} HTTP_SERVICE_CONFIG_TIMEOUT_KEY, *PHTTP_SERVICE_CONFIG_TIMEOUT_KEY; |
| 513 |
|
| 514 |
typedef USHORT HTTP_SERVICE_CONFIG_TIMEOUT_PARAM, *PHTTP_SERVICE_CONFIG_TIMEOUT_PARAM; |
| 515 |
|
| 516 |
typedef struct _HTTP_PROPERTY_FLAGS { |
| 517 |
ULONG Present:1; |
| 518 |
} HTTP_PROPERTY_FLAGS, *PHTTP_PROPERTY_FLAGS; |
| 519 |
|
| 520 |
typedef struct _HTTP_CONNECTION_LIMIT_INFO { |
| 521 |
HTTP_PROPERTY_FLAGS Flags; |
| 522 |
ULONG MaxConnections; |
| 523 |
} HTTP_CONNECTION_LIMIT_INFO, *PHTTP_CONNECTION_LIMIT_INFO; |
| 524 |
|
| 525 |
typedef struct _HTTP_STATE_INFO { |
| 526 |
HTTP_PROPERTY_FLAGS Flags; |
| 527 |
HTTP_ENABLED_STATE State; |
| 528 |
} HTTP_STATE_INFO, *PHTTP_STATE_INFO; |
| 529 |
|
| 530 |
typedef struct _HTTP_QOS_SETTING_INFO { |
| 531 |
HTTP_QOS_SETTING_TYPE QosType; |
| 532 |
PVOID QosSetting; |
| 533 |
} HTTP_QOS_SETTING_INFO, *PHTTP_QOS_SETTING_INFO; |
| 534 |
|
| 535 |
typedef struct _HTTP_SERVER_AUTHENTICATION_DIGEST_PARAMS { |
| 536 |
USHORT DomainNameLength; |
| 537 |
PWSTR DomainName; |
| 538 |
USHORT RealmLength; |
| 539 |
PWSTR Realm; |
| 540 |
} HTTP_SERVER_AUTHENTICATION_DIGEST_PARAMS, *PHTTP_SERVER_AUTHENTICATION_DIGEST_PARAMS; |
| 541 |
|
| 542 |
typedef struct _HTTP_SERVER_AUTHENTICATION_BASIC_PARAMS { |
| 543 |
USHORT RealmLength; |
| 544 |
PWSTR Realm; |
| 545 |
} HTTP_SERVER_AUTHENTICATION_BASIC_PARAMS, *PHTTP_SERVER_AUTHENTICATION_BASIC_PARAMS; |
| 546 |
|
| 547 |
typedef struct _HTTP_SERVER_AUTHENTICATION_INFO { |
| 548 |
HTTP_PROPERTY_FLAGS Flags; |
| 549 |
ULONG AuthSchemes; |
| 550 |
BOOLEAN ReceiveMutualAuth; |
| 551 |
BOOLEAN ReceiveContextHandle; |
| 552 |
BOOLEAN DisableNTLMCredentialCaching; |
| 553 |
UCHAR ExFlags; |
| 554 |
HTTP_SERVER_AUTHENTICATION_DIGEST_PARAMS DigestParams; |
| 555 |
HTTP_SERVER_AUTHENTICATION_BASIC_PARAMS BasicParams; |
| 556 |
} HTTP_SERVER_AUTHENTICATION_INFO, *PHTTP_SERVER_AUTHENTICATION_INFO; |
| 557 |
|
| 558 |
typedef struct _HTTP_LOGGING_INFO { |
| 559 |
HTTP_PROPERTY_FLAGS Flags; |
| 560 |
ULONG LoggingFlags; |
| 561 |
PCWSTR SoftwareName; |
| 562 |
USHORT SoftwareNameLength; |
| 563 |
USHORT DirectoryNameLength; |
| 564 |
PCWSTR DirectoryName; |
| 565 |
HTTP_LOGGING_TYPE Format; |
| 566 |
ULONG Fields; |
| 567 |
PVOID pExtFields; |
| 568 |
USHORT NumOfExtFields; |
| 569 |
USHORT MaxRecordSize; |
| 570 |
HTTP_LOGGING_ROLLOVER_TYPE RolloverType; |
| 571 |
ULONG RolloverSize; |
| 572 |
PSECURITY_DESCRIPTOR pSecurityDescriptor; |
| 573 |
} HTTP_LOGGING_INFO, *PHTTP_LOGGING_INFO; |
| 574 |
|
| 575 |
typedef struct _HTTP_TIMEOUT_LIMIT_INFO { |
| 576 |
HTTP_PROPERTY_FLAGS Flags; |
| 577 |
USHORT EntityBody; |
| 578 |
USHORT DrainEntityBody; |
| 579 |
USHORT RequestQueue; |
| 580 |
USHORT IdleConnection; |
| 581 |
USHORT HeaderWait; |
| 582 |
ULONG MinSendRate; |
| 583 |
} HTTP_TIMEOUT_LIMIT_INFO, *PHTTP_TIMEOUT_LIMIT_INFO; |
| 584 |
|
| 585 |
typedef struct _HTTP_SERVICE_BINDING_BASE { |
| 586 |
HTTP_SERVICE_BINDING_TYPE Type; |
| 587 |
} HTTP_SERVICE_BINDING_BASE, *PHTTP_SERVICE_BINDING_BASE; |
| 588 |
|
| 589 |
typedef struct _HTTP_CHANNEL_BIND_INFO { |
| 590 |
HTTP_AUTHENTICATION_HARDENING_LEVELS Hardening; |
| 591 |
ULONG Flags; |
| 592 |
PHTTP_SERVICE_BINDING_BASE *ServiceNames; |
| 593 |
ULONG NumberOfServiceNames; |
| 594 |
} HTTP_CHANNEL_BIND_INFO, *PHTTP_CHANNEL_BIND_INFO; |
| 595 |
|
| 596 |
typedef struct _HTTP_REQUEST_CHANNEL_BIND_STATUS { |
| 597 |
PHTTP_SERVICE_BINDING_BASE ServiceName; |
| 598 |
PUCHAR ChannelToken; |
| 599 |
ULONG ChannelTokenSize; |
| 600 |
ULONG Flags; |
| 601 |
} HTTP_REQUEST_CHANNEL_BIND_STATUS, *PHTTP_REQUEST_CHANNEL_BIND_STATUS; |
| 602 |
|
| 603 |
typedef struct _HTTP_SERVICE_BINDING_A { |
| 604 |
HTTP_SERVICE_BINDING_BASE Base; |
| 605 |
PCHAR Buffer; |
| 606 |
ULONG BufferSize; |
| 607 |
} HTTP_SERVICE_BINDING_A, *PHTTP_SERVICE_BINDING_A; |
| 608 |
|
| 609 |
typedef struct _HTTP_SERVICE_BINDING_W { |
| 610 |
HTTP_SERVICE_BINDING_BASE Base; |
| 611 |
PWCHAR Buffer; |
| 612 |
ULONG BufferSize; |
| 613 |
} HTTP_SERVICE_BINDING_W, *PHTTP_SERVICE_BINDING_W; |
| 614 |
|
| 615 |
/* TODO: Is there the abstract unicode type HTTP_SERVICE_BINDING present, too? */ |
| 616 |
|
| 617 |
typedef struct _HTTP_LOG_FIELDS_DATA { |
| 618 |
HTTP_LOG_DATA Base; |
| 619 |
USHORT UserNameLength; |
| 620 |
USHORT UriStemLength; |
| 621 |
USHORT ClientIpLength; |
| 622 |
USHORT ServerNameLength; |
| 623 |
USHORT ServerIpLength; |
| 624 |
USHORT MethodLength; |
| 625 |
USHORT UriQueryLength; |
| 626 |
USHORT HostLength; |
| 627 |
USHORT UserAgentLength; |
| 628 |
USHORT CookieLength; |
| 629 |
USHORT ReferrerLength; |
| 630 |
PWCHAR UserName; |
| 631 |
PWCHAR UriStem; |
| 632 |
PCHAR ClientIp; |
| 633 |
PCHAR ServerName; |
| 634 |
PCHAR ServiceName; |
| 635 |
PCHAR ServerIp; |
| 636 |
PCHAR Method; |
| 637 |
PCHAR UriQuery; |
| 638 |
PCHAR Host; |
| 639 |
PCHAR UserAgent; |
| 640 |
PCHAR Cookie; |
| 641 |
PCHAR Referrer; |
| 642 |
USHORT ServerPort; |
| 643 |
USHORT ProtocolStatus; |
| 644 |
ULONG Win32Status; |
| 645 |
HTTP_VERB MethodNum; |
| 646 |
USHORT SubStatus; |
| 647 |
} HTTP_LOG_FIELDS_DATA, *PHTTP_LOG_FIELDS_DATA; |
| 648 |
|
| 649 |
typedef struct _HTTP_REQUEST_AUTH_INFO { |
| 650 |
HTTP_AUTH_STATUS AuthStatus; |
| 651 |
SECURITY_STATUS SecStatus; |
| 652 |
ULONG Flags; |
| 653 |
HTTP_REQUEST_AUTH_TYPE AuthType; |
| 654 |
HANDLE AccessToken; |
| 655 |
ULONG ContextAttributes; |
| 656 |
ULONG PackedContextLength; |
| 657 |
ULONG PackedContextType; |
| 658 |
PVOID PackedContext; |
| 659 |
ULONG MutualAuthDataLength; |
| 660 |
PCHAR pMutualAuthData; |
| 661 |
} HTTP_REQUEST_AUTH_INFO, *PHTTP_REQUEST_AUTH_INFO; |
| 662 |
|
| 663 |
typedef struct _HTTP_MULTIPLE_KNOWN_HEADERS { |
| 664 |
HTTP_HEADER_ID HeaderId; |
| 665 |
ULONG Flags; |
| 666 |
USHORT KnownHeaderCount; |
| 667 |
PHTTP_KNOWN_HEADER KnownHeaders; |
| 668 |
} HTTP_MULTIPLE_KNOWN_HEADERS, *PHTTP_MULTIPLE_KNOWN_HEADERS; |
| 669 |
|
| 670 |
typedef struct _HTTP_SERVICE_CONFIG_TIMEOUT_SET { |
| 671 |
HTTP_SERVICE_CONFIG_TIMEOUT_KEY KeyDesc; |
| 672 |
HTTP_SERVICE_CONFIG_TIMEOUT_PARAM ParamDesc; |
| 673 |
} HTTP_SERVICE_CONFIG_TIMEOUT_SET, *PHTTP_SERVICE_CONFIG_TIMEOUT_SET; |
| 674 |
|
| 675 |
typedef struct _HTTP_BANDWIDTH_LIMIT_INFO { |
| 676 |
HTTP_PROPERTY_FLAGS Flags; |
| 677 |
ULONG MaxBandwidth; |
| 678 |
} HTTP_BANDWIDTH_LIMIT_INFO, *PHTTP_BANDWIDTH_LIMIT_INFO; |
| 679 |
|
| 680 |
typedef struct _HTTP_BINDING_INFO { |
| 681 |
HTTP_PROPERTY_FLAGS Flags; |
| 682 |
HANDLE RequestQueueHandle; |
| 683 |
} HTTP_BINDING_INFO, *PHTTP_BINDING_INFO; |
| 684 |
|
| 685 |
typedef struct _HTTP_LISTEN_ENDPOINT_INFO { |
| 686 |
HTTP_PROPERTY_FLAGS Flags; |
| 687 |
BOOLEAN EnableSharing; |
| 688 |
} HTTP_LISTEN_ENDPOINT_INFO, *PHTTP_LISTEN_ENDPOINT_INFO; |
| 689 |
|
| 690 |
HTTPAPI_LINKAGE ULONG WINAPI HttpSetRequestQueueProperty(HANDLE Handle,HTTP_SERVER_PROPERTY Property,PVOID pPropertyInformation,ULONG PropertyInformationLength,ULONG Reserved,PVOID pReserved); |
| 691 |
HTTPAPI_LINKAGE ULONG WINAPI HttpQueryRequestQueueProperty(HANDLE Handle,HTTP_SERVER_PROPERTY Property,PVOID pPropertyInformation,ULONG PropertyInformationLength,ULONG Reserved,PULONG pReturnLength,PVOID pReserved); |
| 692 |
HTTPAPI_LINKAGE ULONG WINAPI HttpCreateRequestQueue(HTTPAPI_VERSION Version,PCWSTR pName,PSECURITY_ATTRIBUTES pSecurityAttributes,ULONG Flags,PHANDLE pReqQueueHandle); |
| 693 |
HTTPAPI_LINKAGE ULONG WINAPI HttpAddUrlToUrlGroup(HTTP_URL_GROUP_ID UrlGroupId,PCWSTR pFullyQualifiedUrl,HTTP_URL_CONTEXT UrlContext,ULONG Reserved); |
| 694 |
HTTPAPI_LINKAGE ULONG WINAPI HttpCancelHttpRequest(HANDLE ReqQueueHandle,HTTP_REQUEST_ID RequestId,LPOVERLAPPED pOverlapped); |
| 695 |
HTTPAPI_LINKAGE ULONG WINAPI HttpCloseRequestQueue(HANDLE ReqQueueHandle); |
| 696 |
HTTPAPI_LINKAGE ULONG WINAPI HttpCloseServerSession(HTTP_SERVER_SESSION_ID ServerSessionId); |
| 697 |
HTTPAPI_LINKAGE ULONG WINAPI HttpCloseUrlGroup(HTTP_URL_GROUP_ID UrlGroupId); |
| 698 |
HTTPAPI_LINKAGE ULONG WINAPI HttpCreateServerSession(HTTPAPI_VERSION Version,PHTTP_SERVER_SESSION_ID pServerSessionId,ULONG Reserved); |
| 699 |
HTTPAPI_LINKAGE ULONG WINAPI HttpCreateUrlGroup(HTTP_SERVER_SESSION_ID ServerSessionId,PHTTP_URL_GROUP_ID pUrlGroupId,ULONG Reserved); |
| 700 |
HTTPAPI_LINKAGE ULONG WINAPI HttpQueryServerSessionProperty(HTTP_SERVER_SESSION_ID ServerSessionId,HTTP_SERVER_PROPERTY Property,PVOID pPropertyInformation,ULONG PropertyInformationLength,PULONG pReturnLength); |
| 701 |
HTTPAPI_LINKAGE ULONG WINAPI HttpQueryUrlGroupProperty(HTTP_URL_GROUP_ID UrlGroupId,HTTP_SERVER_PROPERTY Property,PVOID pPropertyInformation,ULONG PropertyInformationLength,PULONG pReturnLength); |
| 702 |
HTTPAPI_LINKAGE ULONG WINAPI HttpRemoveUrlFromUrlGroup(HTTP_URL_GROUP_ID UrlGroupId,PCWSTR pFullyQualifiedUrl,ULONG Flags); |
| 703 |
HTTPAPI_LINKAGE ULONG WINAPI HttpSetServerSessionProperty(HTTP_SERVER_SESSION_ID ServerSessionId,HTTP_SERVER_PROPERTY Property,PVOID pPropertyInformation,ULONG PropertyInformationLength); |
| 704 |
HTTPAPI_LINKAGE ULONG WINAPI HttpSetUrlGroupProperty(HTTP_URL_GROUP_ID UrlGroupId,HTTP_SERVER_PROPERTY Property,PVOID pPropertyInformation,ULONG PropertyInformationLength); |
| 705 |
HTTPAPI_LINKAGE ULONG WINAPI HttpShutdownRequestQueue(HANDLE ReqQueueHandle); |
| 706 |
HTTPAPI_LINKAGE ULONG WINAPI HttpWaitForDemandStart(HANDLE ReqQueueHandle,LPOVERLAPPED pOverlapped); |
| 707 |
|
| 708 |
#if (_WIN32_WINNT >= 0x0601) |
| 709 |
typedef ULONG HTTP_SERVICE_CONFIG_CACHE_PARAM; |
| 710 |
|
| 711 |
typedef enum _HTTP_SERVICE_CONFIG_CACHE_KEY { |
| 712 |
MaxCacheResponseSize = 0, |
| 713 |
CacheRangeChunkSize |
| 714 |
} HTTP_SERVICE_CONFIG_CACHE_KEY; |
| 715 |
|
| 716 |
typedef struct _HTTP_FLOWRATE_INFO { |
| 717 |
HTTP_PROPERTY_FLAGS Flags; |
| 718 |
ULONG MaxBandwidth; |
| 719 |
ULONG MaxPeakBandwidth; |
| 720 |
ULONG BurstSize; |
| 721 |
} HTTP_FLOWRATE_INFO, *PHTTP_FLOWRATE_INFO; |
| 722 |
|
| 723 |
typedef struct _HTTP_SERVICE_CONFIG_CACHE_SET { |
| 724 |
HTTP_SERVICE_CONFIG_CACHE_KEY KeyDesc; |
| 725 |
HTTP_SERVICE_CONFIG_CACHE_PARAM ParamDesc; |
| 726 |
} HTTP_SERVICE_CONFIG_CACHE_SET, *PHTTP_SERVICE_CONFIG_CACHE_SET; |
| 727 |
|
| 728 |
#endif /*(_WIN32_WINNT >= 0x0601)*/ |
| 729 |
|
| 730 |
#endif /*(_WIN32_WINNT >= 0x0600)*/ |
| 731 |
|
| 732 |
#ifdef __cplusplus |
| 733 |
} |
| 734 |
#endif |
| 735 |
|
| 736 |
#endif /* __HTTP_H__ */ |