| 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__ */ |