mirror of
https://git.code.sf.net/p/mingw-w64/mingw-w64
synced 2024-11-27 11:54:24 +08:00
737 lines
29 KiB
C
737 lines
29 KiB
C
/**
|
|
* This file has no copyright assigned and is placed in the Public Domain.
|
|
* This file is part of the mingw-w64 runtime package.
|
|
* No warranty is given; refer to the file DISCLAIMER.PD within this package.
|
|
*/
|
|
#ifndef __HTTP_H__
|
|
#define __HTTP_H__
|
|
|
|
#include <winsock2.h>
|
|
#include <ws2tcpip.h>
|
|
|
|
#define SECURITY_WIN32
|
|
#include <sspi.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define HTTP_INITIALIZE_SERVER 0x00000001
|
|
#define HTTP_INITIALIZE_CONFIG 0x00000002
|
|
|
|
#define HTTP_RECEIVE_REQUEST_FLAG_COPY_BODY 0x00000001
|
|
#define HTTP_RECEIVE_REQUEST_ENTITY_BODY_FLAG_FILL_BUFFER 0x00000001
|
|
|
|
#define HTTP_SEND_RESPONSE_FLAG_DISCONNECT 0x00000001
|
|
#define HTTP_SEND_RESPONSE_FLAG_MORE_DATA 0x00000002
|
|
#define HTTP_SEND_RESPONSE_FLAG_BUFFER_DATA 0x00000004
|
|
|
|
#define HTTP_FLUSH_RESPONSE_FLAG_RECURSIVE 0x00000001
|
|
|
|
typedef ULONGLONG HTTP_OPAQUE_ID,*PHTTP_OPAQUE_ID;
|
|
|
|
typedef HTTP_OPAQUE_ID HTTP_REQUEST_ID,*PHTTP_REQUEST_ID;
|
|
typedef HTTP_OPAQUE_ID HTTP_CONNECTION_ID,*PHTTP_CONNECTION_ID;
|
|
typedef HTTP_OPAQUE_ID HTTP_RAW_CONNECTION_ID,*PHTTP_RAW_CONNECTION_ID;
|
|
typedef HTTP_OPAQUE_ID HTTP_URL_GROUP_ID, *PHTTP_URL_GROUP_ID;
|
|
typedef HTTP_OPAQUE_ID HTTP_SERVER_SESSION_ID, *PHTTP_SERVER_SESSION_ID;
|
|
|
|
#define HTTP_NULL_ID (0ull)
|
|
#define HTTP_IS_NULL_ID(pid) (HTTP_NULL_ID==*(pid))
|
|
#define HTTP_SET_NULL_ID(pid) (*(pid) = HTTP_NULL_ID)
|
|
|
|
#define HTTP_BYTE_RANGE_TO_EOF ((ULONGLONG)-1)
|
|
|
|
typedef struct _HTTP_BYTE_RANGE {
|
|
ULARGE_INTEGER StartingOffset;
|
|
ULARGE_INTEGER Length;
|
|
} HTTP_BYTE_RANGE,*PHTTP_BYTE_RANGE;
|
|
|
|
typedef struct _HTTP_VERSION {
|
|
USHORT MajorVersion;
|
|
USHORT MinorVersion;
|
|
} HTTP_VERSION,*PHTTP_VERSION;
|
|
|
|
#define HTTP_VERSION_UNKNOWN { 0,0 }
|
|
#define HTTP_VERSION_0_9 { 0,9 }
|
|
#define HTTP_VERSION_1_0 { 1,0 }
|
|
#define HTTP_VERSION_1_1 { 1,1 }
|
|
|
|
#define HTTP_SET_VERSION(version,major,minor) do { (version).MajorVersion = (major); (version).MinorVersion = (minor); } while (0,0)
|
|
#define HTTP_EQUAL_VERSION(version,major,minor) ((version).MajorVersion==(major) && (version).MinorVersion==(minor))
|
|
#define HTTP_GREATER_VERSION(version,major,minor) ((version).MajorVersion > (major) || ((version).MajorVersion==(major) && (version).MinorVersion > (minor)))
|
|
#define HTTP_LESS_VERSION(version,major,minor) ((version).MajorVersion < (major) || ((version).MajorVersion==(major) && (version).MinorVersion < (minor)))
|
|
#define HTTP_NOT_EQUAL_VERSION(version,major,minor) (!HTTP_EQUAL_VERSION(version,major,minor))
|
|
#define HTTP_GREATER_EQUAL_VERSION(version,major,minor) (!HTTP_LESS_VERSION(version,major,minor))
|
|
#define HTTP_LESS_EQUAL_VERSION(version,major,minor) (!HTTP_GREATER_VERSION(version,major,minor))
|
|
|
|
typedef enum _HTTP_VERB {
|
|
HttpVerbUnparsed = 0,
|
|
HttpVerbUnknown,HttpVerbInvalid,HttpVerbOPTIONS,HttpVerbGET,HttpVerbHEAD,HttpVerbPOST,HttpVerbPUT,HttpVerbDELETE,
|
|
HttpVerbTRACE,HttpVerbCONNECT,HttpVerbTRACK,HttpVerbMOVE,HttpVerbCOPY,HttpVerbPROPFIND,HttpVerbPROPPATCH,HttpVerbMKCOL,HttpVerbLOCK,
|
|
HttpVerbUNLOCK,HttpVerbSEARCH,HttpVerbMaximum
|
|
} HTTP_VERB,*PHTTP_VERB;
|
|
|
|
typedef enum _HTTP_HEADER_ID {
|
|
HttpHeaderCacheControl = 0,HttpHeaderConnection = 1,HttpHeaderDate = 2,HttpHeaderKeepAlive = 3,HttpHeaderPragma = 4,HttpHeaderTrailer = 5,
|
|
HttpHeaderTransferEncoding = 6,HttpHeaderUpgrade = 7,HttpHeaderVia = 8,HttpHeaderWarning = 9,HttpHeaderAllow = 10,HttpHeaderContentLength = 11,
|
|
HttpHeaderContentType = 12,HttpHeaderContentEncoding = 13,HttpHeaderContentLanguage = 14,HttpHeaderContentLocation = 15,HttpHeaderContentMd5 = 16,
|
|
HttpHeaderContentRange = 17,HttpHeaderExpires = 18,HttpHeaderLastModified = 19,HttpHeaderAccept = 20,HttpHeaderAcceptCharset = 21,
|
|
HttpHeaderAcceptEncoding = 22,HttpHeaderAcceptLanguage = 23,HttpHeaderAuthorization = 24,HttpHeaderCookie = 25,HttpHeaderExpect = 26,
|
|
HttpHeaderFrom = 27,HttpHeaderHost = 28,HttpHeaderIfMatch = 29,HttpHeaderIfModifiedSince = 30,HttpHeaderIfNoneMatch = 31,HttpHeaderIfRange = 32,
|
|
HttpHeaderIfUnmodifiedSince = 33,HttpHeaderMaxForwards = 34,HttpHeaderProxyAuthorization = 35,HttpHeaderReferer = 36,HttpHeaderRange = 37,
|
|
HttpHeaderTe = 38,HttpHeaderTranslate = 39,HttpHeaderUserAgent = 40,HttpHeaderRequestMaximum = 41,HttpHeaderAcceptRanges = 20,HttpHeaderAge = 21,
|
|
HttpHeaderEtag = 22,HttpHeaderLocation = 23,HttpHeaderProxyAuthenticate = 24,HttpHeaderRetryAfter = 25,HttpHeaderServer = 26,
|
|
HttpHeaderSetCookie = 27,HttpHeaderVary = 28,HttpHeaderWwwAuthenticate = 29,HttpHeaderResponseMaximum = 30,HttpHeaderMaximum = 41
|
|
} HTTP_HEADER_ID,*PHTTP_HEADER_ID;
|
|
|
|
typedef struct _HTTP_KNOWN_HEADER {
|
|
USHORT RawValueLength;
|
|
PCSTR pRawValue;
|
|
} HTTP_KNOWN_HEADER,*PHTTP_KNOWN_HEADER;
|
|
|
|
typedef struct _HTTP_UNKNOWN_HEADER {
|
|
USHORT NameLength;
|
|
USHORT RawValueLength;
|
|
PCSTR pName;
|
|
PCSTR pRawValue;
|
|
} HTTP_UNKNOWN_HEADER,*PHTTP_UNKNOWN_HEADER;
|
|
|
|
typedef enum _HTTP_DATA_CHUNK_TYPE {
|
|
HttpDataChunkFromMemory = 0,
|
|
HttpDataChunkFromFileHandle,
|
|
HttpDataChunkFromFragmentCache,
|
|
HttpDataChunkFromFragmentCacheEx,
|
|
HttpDataChunkMaximum
|
|
} HTTP_DATA_CHUNK_TYPE,*PHTTP_DATA_CHUNK_TYPE;
|
|
|
|
typedef struct _HTTP_DATA_CHUNK {
|
|
HTTP_DATA_CHUNK_TYPE DataChunkType;
|
|
__C89_NAMELESS union {
|
|
struct {
|
|
PVOID pBuffer;
|
|
ULONG BufferLength;
|
|
} FromMemory;
|
|
struct {
|
|
HTTP_BYTE_RANGE ByteRange;
|
|
HANDLE FileHandle;
|
|
} FromFileHandle;
|
|
struct {
|
|
USHORT FragmentNameLength;
|
|
PCWSTR pFragmentName;
|
|
} FromFragmentCache;
|
|
};
|
|
} HTTP_DATA_CHUNK,*PHTTP_DATA_CHUNK;
|
|
|
|
typedef struct _HTTP_REQUEST_HEADERS {
|
|
USHORT UnknownHeaderCount;
|
|
PHTTP_UNKNOWN_HEADER pUnknownHeaders;
|
|
USHORT TrailerCount;
|
|
PHTTP_UNKNOWN_HEADER pTrailers;
|
|
HTTP_KNOWN_HEADER KnownHeaders[HttpHeaderRequestMaximum];
|
|
} HTTP_REQUEST_HEADERS,*PHTTP_REQUEST_HEADERS;
|
|
|
|
typedef struct _HTTP_RESPONSE_HEADERS {
|
|
USHORT UnknownHeaderCount;
|
|
PHTTP_UNKNOWN_HEADER pUnknownHeaders;
|
|
USHORT TrailerCount;
|
|
PHTTP_UNKNOWN_HEADER pTrailers;
|
|
HTTP_KNOWN_HEADER KnownHeaders[HttpHeaderResponseMaximum];
|
|
} HTTP_RESPONSE_HEADERS,*PHTTP_RESPONSE_HEADERS;
|
|
|
|
typedef struct _HTTP_TRANSPORT_ADDRESS {
|
|
PSOCKADDR pRemoteAddress;
|
|
PSOCKADDR pLocalAddress;
|
|
} HTTP_TRANSPORT_ADDRESS,*PHTTP_TRANSPORT_ADDRESS;
|
|
|
|
typedef struct _HTTP_COOKED_URL {
|
|
USHORT FullUrlLength;
|
|
USHORT HostLength;
|
|
USHORT AbsPathLength;
|
|
USHORT QueryStringLength;
|
|
PCWSTR pFullUrl;
|
|
PCWSTR pHost;
|
|
PCWSTR pAbsPath;
|
|
PCWSTR pQueryString;
|
|
} HTTP_COOKED_URL,*PHTTP_COOKED_URL;
|
|
|
|
typedef ULONGLONG HTTP_URL_CONTEXT;
|
|
|
|
typedef struct _HTTP_SSL_CLIENT_CERT_INFO {
|
|
ULONG CertFlags;
|
|
ULONG CertEncodedSize;
|
|
PUCHAR pCertEncoded;
|
|
HANDLE Token;
|
|
BOOLEAN CertDeniedByMapper;
|
|
} HTTP_SSL_CLIENT_CERT_INFO,*PHTTP_SSL_CLIENT_CERT_INFO;
|
|
|
|
typedef struct _HTTP_SSL_INFO {
|
|
USHORT ServerCertKeySize;
|
|
USHORT ConnectionKeySize;
|
|
ULONG ServerCertIssuerSize;
|
|
ULONG ServerCertSubjectSize;
|
|
PCSTR pServerCertIssuer;
|
|
PCSTR pServerCertSubject;
|
|
PHTTP_SSL_CLIENT_CERT_INFO pClientCertInfo;
|
|
ULONG SslClientCertNegotiated;
|
|
} HTTP_SSL_INFO,*PHTTP_SSL_INFO;
|
|
|
|
typedef struct _HTTP_REQUEST_V1 {
|
|
ULONG Flags;
|
|
HTTP_CONNECTION_ID ConnectionId;
|
|
HTTP_REQUEST_ID RequestId;
|
|
HTTP_URL_CONTEXT UrlContext;
|
|
HTTP_VERSION Version;
|
|
HTTP_VERB Verb;
|
|
USHORT UnknownVerbLength;
|
|
USHORT RawUrlLength;
|
|
PCSTR pUnknownVerb;
|
|
PCSTR pRawUrl;
|
|
HTTP_COOKED_URL CookedUrl;
|
|
HTTP_TRANSPORT_ADDRESS Address;
|
|
HTTP_REQUEST_HEADERS Headers;
|
|
ULONGLONG BytesReceived;
|
|
USHORT EntityChunkCount;
|
|
PHTTP_DATA_CHUNK pEntityChunks;
|
|
HTTP_RAW_CONNECTION_ID RawConnectionId;
|
|
PHTTP_SSL_INFO pSslInfo;
|
|
} HTTP_REQUEST_V1, *PHTTP_REQUEST_V1;
|
|
|
|
typedef enum _HTTP_REQUEST_INFO_TYPE {
|
|
HttpRequestInfoTypeAuth = 0
|
|
} HTTP_REQUEST_INFO_TYPE, *PHTTP_REQUEST_INFO_TYPE;
|
|
|
|
typedef struct _HTTP_REQUEST_INFO {
|
|
HTTP_REQUEST_INFO_TYPE InfoType;
|
|
ULONG InfoLength;
|
|
PVOID pInfo;
|
|
} HTTP_REQUEST_INFO, *PHTTP_REQUEST_INFO;
|
|
|
|
#ifdef __cplusplus
|
|
typedef struct _HTTP_REQUEST_V2 : HTTP_REQUEST_V1 {
|
|
USHORT RequestInfoCount;
|
|
PHTTP_REQUEST_INFO pRequestInfo;
|
|
} HTTP_REQUEST_V2, *PHTTP_REQUEST_V2;
|
|
#else
|
|
typedef struct _HTTP_REQUEST_V2 {
|
|
/* struct HTTP_REQUEST_V1; */
|
|
__C89_NAMELESS struct {
|
|
ULONG Flags;
|
|
HTTP_CONNECTION_ID ConnectionId;
|
|
HTTP_REQUEST_ID RequestId;
|
|
HTTP_URL_CONTEXT UrlContext;
|
|
HTTP_VERSION Version;
|
|
HTTP_VERB Verb;
|
|
USHORT UnknownVerbLength;
|
|
USHORT RawUrlLength;
|
|
PCSTR pUnknownVerb;
|
|
PCSTR pRawUrl;
|
|
HTTP_COOKED_URL CookedUrl;
|
|
HTTP_TRANSPORT_ADDRESS Address;
|
|
HTTP_REQUEST_HEADERS Headers;
|
|
ULONGLONG BytesReceived;
|
|
USHORT EntityChunkCount;
|
|
PHTTP_DATA_CHUNK pEntityChunks;
|
|
HTTP_RAW_CONNECTION_ID RawConnectionId;
|
|
PHTTP_SSL_INFO pSslInfo;
|
|
};
|
|
USHORT RequestInfoCount;
|
|
PHTTP_REQUEST_INFO pRequestInfo;
|
|
} HTTP_REQUEST_V2, *PHTTP_REQUEST_V2;
|
|
#endif
|
|
|
|
#if (_WIN32_WINNT >= 0x0600)
|
|
typedef HTTP_REQUEST_V2 HTTP_REQUEST, *PHTTP_REQUEST;
|
|
#else
|
|
typedef HTTP_REQUEST_V1 HTTP_REQUEST, *PHTTP_REQUEST;
|
|
#endif
|
|
|
|
#define HTTP_REQUEST_FLAG_MORE_ENTITY_BODY_EXISTS 0x00000001
|
|
|
|
typedef struct _HTTP_RESPONSE_V1 {
|
|
ULONG Flags;
|
|
HTTP_VERSION Version;
|
|
USHORT StatusCode;
|
|
USHORT ReasonLength;
|
|
PCSTR pReason;
|
|
HTTP_RESPONSE_HEADERS Headers;
|
|
USHORT EntityChunkCount;
|
|
PHTTP_DATA_CHUNK pEntityChunks;
|
|
} HTTP_RESPONSE_V1,*PHTTP_RESPONSE_V1;
|
|
|
|
typedef enum _HTTP_RESPONSE_INFO_TYPE {
|
|
HttpResponseInfoTypeMultipleKnownHeaders = 0,
|
|
HttpResponseInfoTypeAuthenticationProperty,
|
|
HttpResponseInfoTypeQosProperty,
|
|
HttpResponseInfoTypeChannelBind
|
|
} HTTP_RESPONSE_INFO_TYPE, *PHTTP_RESPONSE_INFO_TYPE;
|
|
|
|
typedef struct _HTTP_RESPONSE_INFO {
|
|
HTTP_RESPONSE_INFO_TYPE Type;
|
|
ULONG Length;
|
|
PVOID pInfo;
|
|
} HTTP_RESPONSE_INFO, *PHTTP_RESPONSE_INFO;
|
|
|
|
#ifdef __cplusplus
|
|
typedef struct _HTTP_RESPONSE_V2 : HTTP_RESPONSE_V1 {
|
|
USHORT ResponseInfoCount;
|
|
PHTTP_RESPONSE_INFO pResponseInfo;
|
|
} HTTP_RESPONSE_V2, *PHTTP_RESPONSE_V2;
|
|
#else
|
|
typedef struct _HTTP_RESPONSE_V2 {
|
|
/* struct HTTP_RESPONSE_V1; */
|
|
__C89_NAMELESS struct {
|
|
ULONG Flags;
|
|
HTTP_VERSION Version;
|
|
USHORT StatusCode;
|
|
USHORT ReasonLength;
|
|
PCSTR pReason;
|
|
HTTP_RESPONSE_HEADERS Headers;
|
|
USHORT EntityChunkCount;
|
|
PHTTP_DATA_CHUNK pEntityChunks;
|
|
};
|
|
USHORT ResponseInfoCount;
|
|
PHTTP_RESPONSE_INFO pResponseInfo;
|
|
} HTTP_RESPONSE_V2, *PHTTP_RESPONSE_V2;
|
|
#endif
|
|
|
|
#if (_WIN32_WINNT >= 0x0600)
|
|
typedef HTTP_RESPONSE_V2 HTTP_RESPONSE, *PHTTP_RESPONSE;
|
|
#else
|
|
typedef HTTP_RESPONSE_V1 HTTP_RESPONSE, *PHTTP_RESPONSE;
|
|
#endif /* _WIN32_WINNT >= 0x0600 */
|
|
|
|
typedef enum _HTTP_CACHE_POLICY_TYPE {
|
|
HttpCachePolicyNocache = 0,
|
|
HttpCachePolicyUserInvalidates,
|
|
HttpCachePolicyTimeToLive,
|
|
HttpCachePolicyMaximum
|
|
} HTTP_CACHE_POLICY_TYPE,*PHTTP_CACHE_POLICY_TYPE;
|
|
|
|
typedef struct _HTTP_CACHE_POLICY {
|
|
HTTP_CACHE_POLICY_TYPE Policy;
|
|
ULONG SecondsToLive;
|
|
} HTTP_CACHE_POLICY, *PHTTP_CACHE_POLICY;
|
|
|
|
typedef enum _HTTP_SERVICE_CONFIG_ID {
|
|
HttpServiceConfigIPListenList = 0,
|
|
HttpServiceConfigSSLCertInfo,
|
|
HttpServiceConfigUrlAclInfo,
|
|
HttpServiceConfigMax
|
|
} HTTP_SERVICE_CONFIG_ID, *PHTTP_SERVICE_CONFIG_ID;
|
|
|
|
typedef enum _HTTP_SERVICE_CONFIG_QUERY_TYPE {
|
|
HttpServiceConfigQueryExact = 0,
|
|
HttpServiceConfigQueryNext,
|
|
HttpServiceConfigQueryMax
|
|
} HTTP_SERVICE_CONFIG_QUERY_TYPE,*PHTTP_SERVICE_CONFIG_QUERY_TYPE;
|
|
|
|
typedef struct _HTTP_SERVICE_CONFIG_SSL_KEY {
|
|
PSOCKADDR pIpPort;
|
|
} HTTP_SERVICE_CONFIG_SSL_KEY,*PHTTP_SERVICE_CONFIG_SSL_KEY;
|
|
|
|
typedef struct _HTTP_SERVICE_CONFIG_SSL_PARAM {
|
|
ULONG SslHashLength;
|
|
PVOID pSslHash;
|
|
GUID AppId;
|
|
PWSTR pSslCertStoreName;
|
|
DWORD DefaultCertCheckMode;
|
|
DWORD DefaultRevocationFreshnessTime;
|
|
DWORD DefaultRevocationUrlRetrievalTimeout;
|
|
PWSTR pDefaultSslCtlIdentifier;
|
|
PWSTR pDefaultSslCtlStoreName;
|
|
DWORD DefaultFlags;
|
|
} HTTP_SERVICE_CONFIG_SSL_PARAM,*PHTTP_SERVICE_CONFIG_SSL_PARAM;
|
|
|
|
#define HTTP_SERVICE_CONFIG_SSL_FLAG_USE_DS_MAPPER 0x00000001
|
|
#define HTTP_SERVICE_CONFIG_SSL_FLAG_NEGOTIATE_CLIENT_CERT 0x00000002
|
|
#define HTTP_SERVICE_CONFIG_SSL_FLAG_NO_RAW_FILTER 0x00000004
|
|
|
|
typedef struct _HTTP_SERVICE_CONFIG_SSL_SET {
|
|
HTTP_SERVICE_CONFIG_SSL_KEY KeyDesc;
|
|
HTTP_SERVICE_CONFIG_SSL_PARAM ParamDesc;
|
|
} HTTP_SERVICE_CONFIG_SSL_SET,*PHTTP_SERVICE_CONFIG_SSL_SET;
|
|
|
|
typedef struct _HTTP_SERVICE_CONFIG_SSL_QUERY {
|
|
HTTP_SERVICE_CONFIG_QUERY_TYPE QueryDesc;
|
|
HTTP_SERVICE_CONFIG_SSL_KEY KeyDesc;
|
|
DWORD dwToken;
|
|
} HTTP_SERVICE_CONFIG_SSL_QUERY,*PHTTP_SERVICE_CONFIG_SSL_QUERY;
|
|
|
|
typedef struct _HTTP_SERVICE_CONFIG_IP_LISTEN_PARAM {
|
|
USHORT AddrLength;
|
|
PSOCKADDR pAddress;
|
|
} HTTP_SERVICE_CONFIG_IP_LISTEN_PARAM,*PHTTP_SERVICE_CONFIG_IP_LISTEN_PARAM;
|
|
|
|
typedef struct _HTTP_SERVICE_CONFIG_IP_LISTEN_QUERY {
|
|
ULONG AddrCount;
|
|
SOCKADDR_STORAGE AddrList[ANYSIZE_ARRAY];
|
|
} HTTP_SERVICE_CONFIG_IP_LISTEN_QUERY,*PHTTP_SERVICE_CONFIG_IP_LISTEN_QUERY;
|
|
|
|
typedef struct _HTTP_SERVICE_CONFIG_URLACL_KEY {
|
|
PWSTR pUrlPrefix;
|
|
} HTTP_SERVICE_CONFIG_URLACL_KEY,*PHTTP_SERVICE_CONFIG_URLACL_KEY;
|
|
|
|
typedef struct _HTTP_SERVICE_CONFIG_URLACL_PARAM {
|
|
PWSTR pStringSecurityDescriptor;
|
|
} HTTP_SERVICE_CONFIG_URLACL_PARAM,*PHTTP_SERVICE_CONFIG_URLACL_PARAM;
|
|
|
|
typedef struct _HTTP_SERVICE_CONFIG_URLACL_SET {
|
|
HTTP_SERVICE_CONFIG_URLACL_KEY KeyDesc;
|
|
HTTP_SERVICE_CONFIG_URLACL_PARAM ParamDesc;
|
|
} HTTP_SERVICE_CONFIG_URLACL_SET,*PHTTP_SERVICE_CONFIG_URLACL_SET;
|
|
|
|
typedef struct _HTTP_SERVICE_CONFIG_URLACL_QUERY {
|
|
HTTP_SERVICE_CONFIG_QUERY_TYPE QueryDesc;
|
|
HTTP_SERVICE_CONFIG_URLACL_KEY KeyDesc;
|
|
DWORD dwToken;
|
|
} HTTP_SERVICE_CONFIG_URLACL_QUERY,*PHTTP_SERVICE_CONFIG_URLACL_QUERY;
|
|
|
|
#if !defined(HTTPAPI_LINKAGE)
|
|
#ifdef HTTPAPI_LINKAGE_EXPORT
|
|
#define DECLSPEC_EXPORT __declspec(dllexport)
|
|
#define HTTPAPI_LINKAGE DECLSPEC_EXPORT
|
|
#else
|
|
#define HTTPAPI_LINKAGE DECLSPEC_IMPORT
|
|
#endif
|
|
#endif
|
|
|
|
typedef struct _HTTPAPI_VERSION {
|
|
USHORT HttpApiMajorVersion;
|
|
USHORT HttpApiMinorVersion;
|
|
} HTTPAPI_VERSION,*PHTTPAPI_VERSION;
|
|
|
|
#define HTTPAPI_VERSION_1 {1,0}
|
|
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpInitialize(HTTPAPI_VERSION Version,ULONG Flags,PVOID pReserved);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpTerminate(ULONG Flags,PVOID pReserved);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpCreateHttpHandle(PHANDLE pReqQueueHandle,ULONG Options);
|
|
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);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpAddUrl(HANDLE ReqQueueHandle,PCWSTR pUrlPrefix,PVOID pReserved);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpRemoveUrl(HANDLE ReqQueueHandle,PCWSTR pUrlPrefix);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpReceiveHttpRequest(HANDLE ReqQueueHandle,HTTP_REQUEST_ID RequestId,ULONG Flags,PHTTP_REQUEST pRequestBuffer,ULONG RequestBufferLength,PULONG pBytesReceived,LPOVERLAPPED pOverlapped);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpReceiveRequestEntityBody(HANDLE ReqQueueHandle,HTTP_REQUEST_ID RequestId,ULONG Flags,PVOID pBuffer,ULONG BufferLength,PULONG pBytesReceived,LPOVERLAPPED pOverlapped);
|
|
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);
|
|
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);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpWaitForDisconnect(HANDLE ReqQueueHandle,HTTP_CONNECTION_ID ConnectionId,LPOVERLAPPED pOverlapped);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpFlushResponseCache(HANDLE ReqQueueHandle,PCWSTR pUrlPrefix,ULONG Flags,LPOVERLAPPED pOverlapped);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpAddFragmentToCache(HANDLE ReqQueueHandle,PCWSTR pUrlPrefix,PHTTP_DATA_CHUNK pDataChunk,PHTTP_CACHE_POLICY pCachePolicy,LPOVERLAPPED pOverlapped);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpReadFragmentFromCache(HANDLE ReqQueueHandle,PCWSTR pUrlPrefix,PHTTP_BYTE_RANGE pByteRange,PVOID pBuffer,ULONG BufferLength,PULONG pBytesRead,LPOVERLAPPED pOverlapped);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpSetServiceConfiguration(HANDLE ServiceHandle,HTTP_SERVICE_CONFIG_ID ConfigId,PVOID pConfigInformation,ULONG ConfigInformationLength,LPOVERLAPPED pOverlapped);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpDeleteServiceConfiguration(HANDLE ServiceHandle,HTTP_SERVICE_CONFIG_ID ConfigId,PVOID pConfigInformation,ULONG ConfigInformationLength,LPOVERLAPPED pOverlapped);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpQueryServiceConfiguration(HANDLE ServiceHandle,HTTP_SERVICE_CONFIG_ID ConfigId,PVOID pInputConfigInformation,ULONG InputConfigInformationLength,PVOID pOutputConfigInformation,ULONG OutputConfigInformationLength,PULONG pReturnLength,LPOVERLAPPED pOverlapped);
|
|
|
|
#if (_WIN32_WINNT >= 0x0600)
|
|
#define HTTP_VERSION_2_0 { 2, 0 }
|
|
#define HTTPAPI_VERSION_2 { 2, 0 }
|
|
|
|
typedef enum _HTTP_503_RESPONSE_VERBOSITY {
|
|
Http503ResponseVerbosityBasic = 0,
|
|
Http503ResponseVerbosityLimited,
|
|
Http503ResponseVerbosityFull
|
|
} HTTP_503_RESPONSE_VERBOSITY, *PHTTP_503_RESPONSE_VERBOSITY;
|
|
|
|
typedef enum _HTTP_ENABLED_STATE {
|
|
HttpEnabledStateActive = 0,
|
|
HttpEnabledStateInactive
|
|
} HTTP_ENABLED_STATE, *PHTTP_ENABLED_STATE;
|
|
|
|
typedef enum _HTTP_LOGGING_ROLLOVER_TYPE {
|
|
HttpLoggingRolloverSize = 0,
|
|
HttpLoggingRolloverDaily,
|
|
HttpLoggingRolloverWeekly,
|
|
HttpLoggingRolloverMonthly,
|
|
HttpLoggingRolloverHourly
|
|
} HTTP_LOGGING_ROLLOVER_TYPE, *PHTTP_LOGGING_ROLLOVER_TYPE;
|
|
|
|
typedef enum _HTTP_LOGGING_TYPE {
|
|
HttpLoggingTypeW3C = 0,
|
|
HttpLoggingTypeIIS,
|
|
HttpLoggingTypeNCSA,
|
|
HttpLoggingTypeRaw
|
|
} HTTP_LOGGING_TYPE, *PHTTP_LOGGING_TYPE;
|
|
|
|
typedef enum _HTTP_QOS_SETTING_TYPE {
|
|
HttpQosSettingTypeBandwidth = 0,
|
|
HttpQosSettingTypeConnectionLimit,
|
|
HttpQosSettingTypeFlowRate
|
|
} HTTP_QOS_SETTING_TYPE, *PHTTP_QOS_SETTING_TYPE;
|
|
|
|
typedef enum _HTTP_SERVER_PROPERTY {
|
|
HttpServerAuthenticationProperty = 0,
|
|
HttpServerLoggingProperty,
|
|
HttpServerQosProperty,
|
|
HttpServerTimeoutsProperty,
|
|
HttpServerQueueLengthProperty,
|
|
HttpServerStateProperty,
|
|
HttpServer503VerbosityProperty,
|
|
HttpServerBindingProperty,
|
|
HttpServerExtendedAuthenticationProperty,
|
|
HttpServerListenEndpointProperty,
|
|
HttpServerChannelBindProperty
|
|
} HTTP_SERVER_PROPERTY, *PHTTP_SERVER_PROPERTY;
|
|
|
|
typedef enum _HTTP_AUTHENTICATION_HARDENING_LEVELS {
|
|
HttpAuthenticationHardeningLegacy = 0,
|
|
HttpAuthenticationHardeningMedium = 1,
|
|
HttpAuthenticationHardeningStrict = 2
|
|
} HTTP_AUTHENTICATION_HARDENING_LEVELS;
|
|
|
|
typedef enum _HTTP_SERVICE_BINDING_TYPE {
|
|
HttpServiceBindingTypeNone = 0,
|
|
HttpServiceBindingTypeW = 1,
|
|
HttpServiceBindingTypeA = 2
|
|
} HTTP_SERVICE_BINDING_TYPE;
|
|
|
|
typedef enum _HTTP_LOG_DATA_TYPE {
|
|
HttpLogDataTypeFields = 0
|
|
} HTTP_LOG_DATA_TYPE, *PHTTP_LOG_DATA_TYPE;
|
|
|
|
typedef struct _HTTP_LOG_DATA {
|
|
HTTP_LOG_DATA_TYPE Type;
|
|
} HTTP_LOG_DATA, *PHTTP_LOG_DATA;
|
|
|
|
typedef enum _HTTP_REQUEST_AUTH_TYPE {
|
|
HttpRequestAuthTypeNone = 0,
|
|
HttpRequestAuthTypeBasic,
|
|
HttpRequestAuthTypeDigest,
|
|
HttpRequestAuthTypeNTLM,
|
|
HttpRequestAuthTypeNegotiate,
|
|
HttpRequestAuthTypeKerberos
|
|
} HTTP_REQUEST_AUTH_TYPE, *PHTTP_REQUEST_AUTH_TYPE;
|
|
|
|
typedef enum _HTTP_AUTH_STATUS {
|
|
HttpAuthStatusSuccess = 0,
|
|
HttpAuthStatusNotAuthenticated,
|
|
HttpAuthStatusFailure
|
|
} HTTP_AUTH_STATUS, *PHTTP_AUTH_STATUS;
|
|
|
|
typedef enum _HTTP_SERVICE_CONFIG_TIMEOUT_KEY {
|
|
IdleConnectionTimeout = 0,
|
|
HeaderWaitTimeout
|
|
} HTTP_SERVICE_CONFIG_TIMEOUT_KEY, *PHTTP_SERVICE_CONFIG_TIMEOUT_KEY;
|
|
|
|
typedef USHORT HTTP_SERVICE_CONFIG_TIMEOUT_PARAM, *PHTTP_SERVICE_CONFIG_TIMEOUT_PARAM;
|
|
|
|
typedef struct _HTTP_PROPERTY_FLAGS {
|
|
ULONG Present:1;
|
|
} HTTP_PROPERTY_FLAGS, *PHTTP_PROPERTY_FLAGS;
|
|
|
|
typedef struct _HTTP_CONNECTION_LIMIT_INFO {
|
|
HTTP_PROPERTY_FLAGS Flags;
|
|
ULONG MaxConnections;
|
|
} HTTP_CONNECTION_LIMIT_INFO, *PHTTP_CONNECTION_LIMIT_INFO;
|
|
|
|
typedef struct _HTTP_STATE_INFO {
|
|
HTTP_PROPERTY_FLAGS Flags;
|
|
HTTP_ENABLED_STATE State;
|
|
} HTTP_STATE_INFO, *PHTTP_STATE_INFO;
|
|
|
|
typedef struct _HTTP_QOS_SETTING_INFO {
|
|
HTTP_QOS_SETTING_TYPE QosType;
|
|
PVOID QosSetting;
|
|
} HTTP_QOS_SETTING_INFO, *PHTTP_QOS_SETTING_INFO;
|
|
|
|
typedef struct _HTTP_SERVER_AUTHENTICATION_DIGEST_PARAMS {
|
|
USHORT DomainNameLength;
|
|
PWSTR DomainName;
|
|
USHORT RealmLength;
|
|
PWSTR Realm;
|
|
} HTTP_SERVER_AUTHENTICATION_DIGEST_PARAMS, *PHTTP_SERVER_AUTHENTICATION_DIGEST_PARAMS;
|
|
|
|
typedef struct _HTTP_SERVER_AUTHENTICATION_BASIC_PARAMS {
|
|
USHORT RealmLength;
|
|
PWSTR Realm;
|
|
} HTTP_SERVER_AUTHENTICATION_BASIC_PARAMS, *PHTTP_SERVER_AUTHENTICATION_BASIC_PARAMS;
|
|
|
|
typedef struct _HTTP_SERVER_AUTHENTICATION_INFO {
|
|
HTTP_PROPERTY_FLAGS Flags;
|
|
ULONG AuthSchemes;
|
|
BOOLEAN ReceiveMutualAuth;
|
|
BOOLEAN ReceiveContextHandle;
|
|
BOOLEAN DisableNTLMCredentialCaching;
|
|
UCHAR ExFlags;
|
|
HTTP_SERVER_AUTHENTICATION_DIGEST_PARAMS DigestParams;
|
|
HTTP_SERVER_AUTHENTICATION_BASIC_PARAMS BasicParams;
|
|
} HTTP_SERVER_AUTHENTICATION_INFO, *PHTTP_SERVER_AUTHENTICATION_INFO;
|
|
|
|
typedef struct _HTTP_LOGGING_INFO {
|
|
HTTP_PROPERTY_FLAGS Flags;
|
|
ULONG LoggingFlags;
|
|
PCWSTR SoftwareName;
|
|
USHORT SoftwareNameLength;
|
|
USHORT DirectoryNameLength;
|
|
PCWSTR DirectoryName;
|
|
HTTP_LOGGING_TYPE Format;
|
|
ULONG Fields;
|
|
PVOID pExtFields;
|
|
USHORT NumOfExtFields;
|
|
USHORT MaxRecordSize;
|
|
HTTP_LOGGING_ROLLOVER_TYPE RolloverType;
|
|
ULONG RolloverSize;
|
|
PSECURITY_DESCRIPTOR pSecurityDescriptor;
|
|
} HTTP_LOGGING_INFO, *PHTTP_LOGGING_INFO;
|
|
|
|
typedef struct _HTTP_TIMEOUT_LIMIT_INFO {
|
|
HTTP_PROPERTY_FLAGS Flags;
|
|
USHORT EntityBody;
|
|
USHORT DrainEntityBody;
|
|
USHORT RequestQueue;
|
|
USHORT IdleConnection;
|
|
USHORT HeaderWait;
|
|
ULONG MinSendRate;
|
|
} HTTP_TIMEOUT_LIMIT_INFO, *PHTTP_TIMEOUT_LIMIT_INFO;
|
|
|
|
typedef struct _HTTP_SERVICE_BINDING_BASE {
|
|
HTTP_SERVICE_BINDING_TYPE Type;
|
|
} HTTP_SERVICE_BINDING_BASE, *PHTTP_SERVICE_BINDING_BASE;
|
|
|
|
typedef struct _HTTP_CHANNEL_BIND_INFO {
|
|
HTTP_AUTHENTICATION_HARDENING_LEVELS Hardening;
|
|
ULONG Flags;
|
|
PHTTP_SERVICE_BINDING_BASE *ServiceNames;
|
|
ULONG NumberOfServiceNames;
|
|
} HTTP_CHANNEL_BIND_INFO, *PHTTP_CHANNEL_BIND_INFO;
|
|
|
|
typedef struct _HTTP_REQUEST_CHANNEL_BIND_STATUS {
|
|
PHTTP_SERVICE_BINDING_BASE ServiceName;
|
|
PUCHAR ChannelToken;
|
|
ULONG ChannelTokenSize;
|
|
ULONG Flags;
|
|
} HTTP_REQUEST_CHANNEL_BIND_STATUS, *PHTTP_REQUEST_CHANNEL_BIND_STATUS;
|
|
|
|
typedef struct _HTTP_SERVICE_BINDING_A {
|
|
HTTP_SERVICE_BINDING_BASE Base;
|
|
PCHAR Buffer;
|
|
ULONG BufferSize;
|
|
} HTTP_SERVICE_BINDING_A, *PHTTP_SERVICE_BINDING_A;
|
|
|
|
typedef struct _HTTP_SERVICE_BINDING_W {
|
|
HTTP_SERVICE_BINDING_BASE Base;
|
|
PWCHAR Buffer;
|
|
ULONG BufferSize;
|
|
} HTTP_SERVICE_BINDING_W, *PHTTP_SERVICE_BINDING_W;
|
|
|
|
/* TODO: Is there the abstract unicode type HTTP_SERVICE_BINDING present, too? */
|
|
|
|
typedef struct _HTTP_LOG_FIELDS_DATA {
|
|
HTTP_LOG_DATA Base;
|
|
USHORT UserNameLength;
|
|
USHORT UriStemLength;
|
|
USHORT ClientIpLength;
|
|
USHORT ServerNameLength;
|
|
USHORT ServerIpLength;
|
|
USHORT MethodLength;
|
|
USHORT UriQueryLength;
|
|
USHORT HostLength;
|
|
USHORT UserAgentLength;
|
|
USHORT CookieLength;
|
|
USHORT ReferrerLength;
|
|
PWCHAR UserName;
|
|
PWCHAR UriStem;
|
|
PCHAR ClientIp;
|
|
PCHAR ServerName;
|
|
PCHAR ServiceName;
|
|
PCHAR ServerIp;
|
|
PCHAR Method;
|
|
PCHAR UriQuery;
|
|
PCHAR Host;
|
|
PCHAR UserAgent;
|
|
PCHAR Cookie;
|
|
PCHAR Referrer;
|
|
USHORT ServerPort;
|
|
USHORT ProtocolStatus;
|
|
ULONG Win32Status;
|
|
HTTP_VERB MethodNum;
|
|
USHORT SubStatus;
|
|
} HTTP_LOG_FIELDS_DATA, *PHTTP_LOG_FIELDS_DATA;
|
|
|
|
typedef struct _HTTP_REQUEST_AUTH_INFO {
|
|
HTTP_AUTH_STATUS AuthStatus;
|
|
SECURITY_STATUS SecStatus;
|
|
ULONG Flags;
|
|
HTTP_REQUEST_AUTH_TYPE AuthType;
|
|
HANDLE AccessToken;
|
|
ULONG ContextAttributes;
|
|
ULONG PackedContextLength;
|
|
ULONG PackedContextType;
|
|
PVOID PackedContext;
|
|
ULONG MutualAuthDataLength;
|
|
PCHAR pMutualAuthData;
|
|
} HTTP_REQUEST_AUTH_INFO, *PHTTP_REQUEST_AUTH_INFO;
|
|
|
|
typedef struct _HTTP_MULTIPLE_KNOWN_HEADERS {
|
|
HTTP_HEADER_ID HeaderId;
|
|
ULONG Flags;
|
|
USHORT KnownHeaderCount;
|
|
PHTTP_KNOWN_HEADER KnownHeaders;
|
|
} HTTP_MULTIPLE_KNOWN_HEADERS, *PHTTP_MULTIPLE_KNOWN_HEADERS;
|
|
|
|
typedef struct _HTTP_SERVICE_CONFIG_TIMEOUT_SET {
|
|
HTTP_SERVICE_CONFIG_TIMEOUT_KEY KeyDesc;
|
|
HTTP_SERVICE_CONFIG_TIMEOUT_PARAM ParamDesc;
|
|
} HTTP_SERVICE_CONFIG_TIMEOUT_SET, *PHTTP_SERVICE_CONFIG_TIMEOUT_SET;
|
|
|
|
typedef struct _HTTP_BANDWIDTH_LIMIT_INFO {
|
|
HTTP_PROPERTY_FLAGS Flags;
|
|
ULONG MaxBandwidth;
|
|
} HTTP_BANDWIDTH_LIMIT_INFO, *PHTTP_BANDWIDTH_LIMIT_INFO;
|
|
|
|
typedef struct _HTTP_BINDING_INFO {
|
|
HTTP_PROPERTY_FLAGS Flags;
|
|
HANDLE RequestQueueHandle;
|
|
} HTTP_BINDING_INFO, *PHTTP_BINDING_INFO;
|
|
|
|
typedef struct _HTTP_LISTEN_ENDPOINT_INFO {
|
|
HTTP_PROPERTY_FLAGS Flags;
|
|
BOOLEAN EnableSharing;
|
|
} HTTP_LISTEN_ENDPOINT_INFO, *PHTTP_LISTEN_ENDPOINT_INFO;
|
|
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpSetRequestQueueProperty(HANDLE Handle,HTTP_SERVER_PROPERTY Property,PVOID pPropertyInformation,ULONG PropertyInformationLength,ULONG Reserved,PVOID pReserved);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpQueryRequestQueueProperty(HANDLE Handle,HTTP_SERVER_PROPERTY Property,PVOID pPropertyInformation,ULONG PropertyInformationLength,ULONG Reserved,PULONG pReturnLength,PVOID pReserved);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpCreateRequestQueue(HTTPAPI_VERSION Version,PCWSTR pName,PSECURITY_ATTRIBUTES pSecurityAttributes,ULONG Flags,PHANDLE pReqQueueHandle);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpAddUrlToUrlGroup(HTTP_URL_GROUP_ID UrlGroupId,PCWSTR pFullyQualifiedUrl,HTTP_URL_CONTEXT UrlContext,ULONG Reserved);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpCancelHttpRequest(HANDLE ReqQueueHandle,HTTP_REQUEST_ID RequestId,LPOVERLAPPED pOverlapped);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpCloseRequestQueue(HANDLE ReqQueueHandle);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpCloseServerSession(HTTP_SERVER_SESSION_ID ServerSessionId);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpCloseUrlGroup(HTTP_URL_GROUP_ID UrlGroupId);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpCreateServerSession(HTTPAPI_VERSION Version,PHTTP_SERVER_SESSION_ID pServerSessionId,ULONG Reserved);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpCreateUrlGroup(HTTP_SERVER_SESSION_ID ServerSessionId,PHTTP_URL_GROUP_ID pUrlGroupId,ULONG Reserved);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpQueryServerSessionProperty(HTTP_SERVER_SESSION_ID ServerSessionId,HTTP_SERVER_PROPERTY Property,PVOID pPropertyInformation,ULONG PropertyInformationLength,PULONG pReturnLength);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpQueryUrlGroupProperty(HTTP_URL_GROUP_ID UrlGroupId,HTTP_SERVER_PROPERTY Property,PVOID pPropertyInformation,ULONG PropertyInformationLength,PULONG pReturnLength);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpRemoveUrlFromUrlGroup(HTTP_URL_GROUP_ID UrlGroupId,PCWSTR pFullyQualifiedUrl,ULONG Flags);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpSetServerSessionProperty(HTTP_SERVER_SESSION_ID ServerSessionId,HTTP_SERVER_PROPERTY Property,PVOID pPropertyInformation,ULONG PropertyInformationLength);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpSetUrlGroupProperty(HTTP_URL_GROUP_ID UrlGroupId,HTTP_SERVER_PROPERTY Property,PVOID pPropertyInformation,ULONG PropertyInformationLength);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpShutdownRequestQueue(HANDLE ReqQueueHandle);
|
|
HTTPAPI_LINKAGE ULONG WINAPI HttpWaitForDemandStart(HANDLE ReqQueueHandle,LPOVERLAPPED pOverlapped);
|
|
|
|
#if (_WIN32_WINNT >= 0x0601)
|
|
typedef ULONG HTTP_SERVICE_CONFIG_CACHE_PARAM;
|
|
|
|
typedef enum _HTTP_SERVICE_CONFIG_CACHE_KEY {
|
|
MaxCacheResponseSize = 0,
|
|
CacheRangeChunkSize
|
|
} HTTP_SERVICE_CONFIG_CACHE_KEY;
|
|
|
|
typedef struct _HTTP_FLOWRATE_INFO {
|
|
HTTP_PROPERTY_FLAGS Flags;
|
|
ULONG MaxBandwidth;
|
|
ULONG MaxPeakBandwidth;
|
|
ULONG BurstSize;
|
|
} HTTP_FLOWRATE_INFO, *PHTTP_FLOWRATE_INFO;
|
|
|
|
typedef struct _HTTP_SERVICE_CONFIG_CACHE_SET {
|
|
HTTP_SERVICE_CONFIG_CACHE_KEY KeyDesc;
|
|
HTTP_SERVICE_CONFIG_CACHE_PARAM ParamDesc;
|
|
} HTTP_SERVICE_CONFIG_CACHE_SET, *PHTTP_SERVICE_CONFIG_CACHE_SET;
|
|
|
|
#endif /*(_WIN32_WINNT >= 0x0601)*/
|
|
|
|
#endif /*(_WIN32_WINNT >= 0x0600)*/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __HTTP_H__ */
|