HTTP Server API

Overview of the HTTP Server API technology.

To develop HTTP Server API, you need these headers:

For programming guidance for this technology, see:

Enumerations

 
HTTP_503_RESPONSE_VERBOSITY

The HTTP_503_RESPONSE_VERBOSITY enumeration defines the verbosity levels for a 503, service unavailable, error responses.This structure must be used when setting or querying the HttpServer503ResponseProperty on a request queue.
HTTP_AUTH_STATUS

Defines the authentication state of a request.
HTTP_AUTHENTICATION_HARDENING_LEVELS

Server Hardening level.
HTTP_CACHE_POLICY_TYPE

The HTTP_CACHE_POLICY_TYPE enumeration type defines available cache policies.
HTTP_DATA_CHUNK_TYPE

Defines the data source for a data chunk.
HTTP_DELEGATE_REQUEST_PROPERTY_ID

Describes property information for a delegate request.
HTTP_ENABLED_STATE

Defines the state of a request queue, server session, or URL Group.
HTTP_FEATURE_ID

Defines constants that specify an identifier for an HTTP feature.
HTTP_HEADER_ID

The HTTP_HEADER_ID enumeration type lists known headers for HTTP requests and responses, and associates an array index with each such header.
HTTP_LOG_DATA_TYPE

Identifies the type of log data.
HTTP_LOGGING_ROLLOVER_TYPE

Defines the log file rollover types.
HTTP_LOGGING_TYPE

Defines the type of logging that is performed.
HTTP_QOS_SETTING_TYPE

Identifies the type of a QOS setting contained in a HTTP_QOS_SETTING_INFO structure.
HTTP_REQUEST_AUTH_TYPE

The HTTP_REQUEST_AUTH_TYPE enumeration defines the authentication types supported by the HTTP Server API.This enumeration is used in the HTTP_REQUEST_AUTH_INFO structure.
HTTP_REQUEST_INFO_TYPE

The HTTP_REQUEST_INFO_TYPE enumeration defines the type of information contained in the HTTP_REQUEST_INFO structure.
HTTP_REQUEST_PROPERTY

Defines the properties that are configured by the HTTP Server API on a request.
HTTP_REQUEST_TIMING_TYPE

Defines constants that specify possible request timings for which information will be returned in HTTP_REQUEST_TIMING_INFO.
HTTP_RESPONSE_INFO_TYPE

The HTTP_RESPONSE_INFO_TYPE enumeration defines the type of information contained in the HTTP_RESPONSE_INFO structure.This enumeration is used in the HTTP_RESPONSE_INFO structure.
HTTP_SERVER_PROPERTY

Defines the properties that are configured by the HTTP Server API on a URL group, server session, or request queue.
HTTP_SERVICE_BINDING_TYPE

HTTP_SERVICE_BINDING_TYPE enumerated type specifies the string type for service names.
HTTP_SERVICE_CONFIG_CACHE_KEY

Used in the HttpSetServiceConfiguration and HttpQueryServiceConfiguration functions.
HTTP_SERVICE_CONFIG_ID

Defines service configuration options.
HTTP_SERVICE_CONFIG_QUERY_TYPE

The HTTP_SERVICE_CONFIG_QUERY_TYPE enumeration type defines various types of queries to make. It is used in the HTTP_SERVICE_CONFIG_SSL_QUERY, HTTP_SERVICE_CONFIG_SSL_CCS_QUERY, and HTTP_SERVICE_CONFIG_URLACL_QUERY structures.
HTTP_SERVICE_CONFIG_TIMEOUT_KEY

The HTTP_SERVICE_CONFIG_TIMEOUT_KEY enumeration defines the type of timer that is queried or configured through the HTTP_SERVICE_CONFIG_TIMEOUT_SET structure.
HTTP_VERB

The HTTP_VERB enumeration type defines values that are used to specify known, standard HTTP verbs in the HTTP_REQUEST structure. The majority of these known verbs are documented in RFC 2616 and RFC 2518, as indicated below.

Functions

 
HTTP_EQUAL_VERSION

Returns a non-zero value if an HTTP_VERSION structure is equal to a specified major/minor version combination, or zero otherwise.
HTTP_GREATER_EQUAL_VERSION

The HTTP_GREATER_EQUAL_VERSION macro returns a non-zero value if an HTTP_VERSION structure is greater than or equal to a specified major/minor version combination, or zero otherwise.
HTTP_GREATER_VERSION

Returns a non-zero value if an HTTP_VERSION structure is greater than a specified major/minor version combination, or zero otherwise.
HTTP_IS_NULL_ID

Determines if the HTTP_OPAQUE_ID is NULL.
HTTP_LESS_EQUAL_VERSION

Returns a non-zero value if an HTTP_VERSION structure is less than or equal to a specified major/minor version combination, or zero otherwise.
HTTP_LESS_VERSION

Returns a non-zero value if an HTTP_VERSION structure is less than a specified major/minor version combination, or zero otherwise.
HTTP_NOT_EQUAL_VERSION

Returns a non-zero value if an HTTP_VERSION structure is greater or less than a specified major/minor version combination, or zero if it is equal.
HTTP_SET_NULL_ID

The HTTP_SET_NULL_ID macro sets the HTTP_OPAQUE_ID to NULL.
HTTP_SET_VERSION

Sets a specified HTTP_VERSION structure to a specified major/minor version combination.
HttpAddFragmentToCache

The HttpAddFragmentToCache function caches a data fragment with a specified name by which it can be retrieved, or updates data cached under a specified name.
HttpAddUrl

Registers a given URL so that requests that match it are routed to a specified HTTP Server API request queue.
HttpAddUrlToUrlGroup

Adds the specified URL to the URL Group identified by the URL Group ID.
HTTPAPI_EQUAL_VERSION

Returns a non-zero value if an HTTPAPI_VERSION structure is exactly equal to a specified major/minor version combination, or zero otherwise.
HTTPAPI_GREATER_VERSION

Returns a non-zero value if an HTTPAPI_VERSION structure is greater than a specified major/minor version combination, or zero otherwise.
HTTPAPI_LESS_VERSION

Returns a non-zero value if an HTTPAPI_VERSION structure is less than a specified major/minor version combination, or zero otherwise.
HTTPAPI_VERSION_GREATER_OR_EQUAL

The HTTPAPI_VERSION_GREATER_OR_EQUAL returns a non-zero value if an HTTPAPI_VERSION structure is greater than or equal to a specified major/minor version combination, or zero otherwise.
HttpCancelHttpRequest

The HttpCancelHttpRequest function cancels a specified reqest.
HttpCloseRequestQueue

Closes the handle to the specified request queue created by HttpCreateRequestQueue.
HttpCloseServerSession

Deletes the server session identified by the server session ID.
HttpCloseUrlGroup

Closes the URL Group identified by the URL Group ID.
HttpCreateHttpHandle

Creates an HTTP request queue for the calling application and returns a handle to it.
HttpCreateRequestQueue

Creates a new request queue or opens an existing request queue.
HttpCreateServerSession

Creates a server session for the specified version.
HttpCreateUrlGroup

Creates a URL Group under the specified server session.
HttpDeclarePush

Declares a resource-to-subresource relationship to use for an HTTP server push. HTTP.sys then performs an HTTP 2.0 server push for the given resource, if the underlying protocol, connection, client, and policies allow the push operation.
HttpDelegateRequestEx

Delegates a request from the source request queue to the target request queue.
HttpDeleteServiceConfiguration

Deletes specified data, such as IP addresses or SSL Certificates, from the HTTP Server API configuration store, one record at a time.
HttpFindUrlGroupId

Retrieves a URL group ID for a URL and a request queue.
HttpFlushResponseCache

Removes from the HTTP Server API cache associated with a given request queue all response fragments that have a name whose site portion matches a specified UrlPrefix.
HttpInitialize

The HttpInitialize function initializes the HTTP Server API driver, starts it, if it has not already been started, and allocates data structures for the calling application to support response-queue creation and other operations.
HttpIsFeatureSupported

Checks whether a particular feature is supported.
HttpPrepareUrl

Parses, analyzes, and normalizes a non-normalized Unicode or punycode URL so it is safe and valid to use in other HTTP functions.
HttpQueryRequestQueueProperty

Queries a property of the request queue identified by the specified handle.
HttpQueryServerSessionProperty

Queries a server property on the specified server session.
HttpQueryServiceConfiguration

Retrieves one or more HTTP Server API configuration records.
HttpQueryUrlGroupProperty

Queries a property on the specified URL Group.
HttpReadFragmentFromCache

The HttpReadFragmentFromCache function retrieves a response fragment having a specified name from the HTTP Server API cache.
HttpReceiveClientCertificate

The HttpReceiveClientCertificate function is used by a server application to retrieve a client SSL certificate or channel binding token (CBT).
HttpReceiveHttpRequest

Retrieves the next available HTTP request from the specified request queue either synchronously or asynchronously.
HttpReceiveRequestEntityBody

Receives additional entity body data for a specified HTTP request.
HttpRemoveUrl

Causes the system to stop routing requests that match a specified UrlPrefix string to a specified request queue.
HttpRemoveUrlFromUrlGroup

Removes the specified URL from the group identified by the URL Group ID.
HttpSendHttpResponse

Sends an HTTP response to the specified HTTP request.
HttpSendResponseEntityBody

Sends entity-body data associated with an HTTP response.
HttpSetRequestProperty

Sets a new property or modifies an existing property on the specified request.
HttpSetRequestQueueProperty

Sets a new property or modifies an existing property on the request queue identified by the specified handle.
HttpSetServerSessionProperty

Sets a new server session property or modifies an existing property on the specified server session.
HttpSetServiceConfiguration

Creates and sets a configuration record for the HTTP Server API configuration store.
HttpSetUrlGroupProperty

Sets a new property or modifies an existing property on the specified URL Group.
HttpShutdownRequestQueue

Stops queuing requests for the specified request queue process.
HttpTerminate

Cleans up resources used by the HTTP Server API to process calls by an application.
HttpUpdateServiceConfiguration

Updates atomically a service configuration parameter that specifies a Transport Layer Security (TLS) certificate in a configuration record within the HTTP Server API configuration store.
HttpWaitForDemandStart

Waits for the arrival of a new request that can be served by a new request queue process.
HttpWaitForDisconnect

Notifies the application when the connection to an HTTP client is broken for any reason.
HttpWaitForDisconnectEx

This function is an extension to HttpWaitForDisconnect.

Structures

 
HTTP_BANDWIDTH_LIMIT_INFO

The HTTP_BANDWIDTH_LIMIT_INFO structure is used to set or query the bandwidth throttling limit. This structure must be used when setting or querying the HttpServerBandwidthProperty on a URL Group or server session.
HTTP_BINDING_INFO

Used to associate a URL Group with a request queue.
HTTP_BYTE_RANGE

The HTTP_BYTE_RANGE structure is used to specify a byte range within a cached response fragment, file, or other data block.
HTTP_CACHE_POLICY

Used to define a cache policy associated with a cached response fragment.
HTTP_CHANNEL_BIND_INFO

HTTP_CHANNEL_BIND_INFO.
HTTP_CONNECTION_LIMIT_INFO

Used to set or query the limit on the maximum number of outstanding connections for a URL Group.
HTTP_COOKED_URL

Contains a validated, canonical, UTF-16 Unicode-encoded URL request string together with pointers into it and element lengths.
HTTP_DATA_CHUNK

Represents an individual block of data either in memory, in a file, or in the HTTP Server API response-fragment cache.
HTTP_DELEGATE_REQUEST_PROPERTY_INFO

Describes additional property information when delegating a request.
HTTP_FLOWRATE_INFO

The transfer rate of a response.
HTTP_KNOWN_HEADER

Contains the header values for a known header from an HTTP request or HTTP response.
HTTP_LISTEN_ENDPOINT_INFO

Controls whether IP-based URLs should listen on the specific IP address or on a wildcard.
HTTP_LOG_DATA

Contains a value that specifies the type of the log data.
HTTP_LOG_FIELDS_DATA

Used to pass the fields that are logged for an HTTP response when WC3 logging is enabled.
HTTP_LOGGING_INFO

Used to enable server side logging on a URL Group or on a server session.
HTTP_MULTIPLE_KNOWN_HEADERS

Specifies the headers that are included in an HTTP response when more than one header is required.
HTTP_PROPERTY_FLAGS

Used by the property configuration structures to enable or disable a property on a configuration object when setting property configurations.
HTTP_QOS_SETTING_INFO

Contains information about a QOS setting.
HTTP_REQUEST_AUTH_INFO

Contains the authentication status of the request with a handle to the client token that the receiving process can use to impersonate the authenticated client.
HTTP_REQUEST_CHANNEL_BIND_STATUS

HTTP_REQUEST_CHANNEL_BIND_STATUS.
HTTP_REQUEST_HEADERS

Contains headers sent with an HTTP request.
HTTP_REQUEST_INFO

Extends the HTTP_REQUEST structure with additional information about the request.
HTTP_REQUEST_PROPERTY_STREAM_ERROR

The HTTP_REQUEST_PROPERTY_STREAM_ERROR structure represents an HTTP/2 or HTTP/3 stream error code.
HTTP_REQUEST_TIMING_INFO

Contains information about how much time was spent at each request processing stage.
HTTP_REQUEST_V1

Uses the HTTP_REQUEST structure to return data associated with a specific request.
HTTP_REQUEST_V2

Extends the HTTP_REQUEST_V1 request structure with more information about the request.
HTTP_RESPONSE_HEADERS

Contains the headers sent with an HTTP response.
HTTP_RESPONSE_INFO

Extends the HTTP_RESPONSE structure with additional information for the response.
HTTP_RESPONSE_V1

Contains data associated with an HTTP response.
HTTP_RESPONSE_V2

Extends the HTTP version 1.0 response structure with more information for the response.
HTTP_SERVER_AUTHENTICATION_BASIC_PARAMS

The HTTP_SERVER_AUTHENTICATION_BASIC_PARAMS structure contains the information for Basic authentication on a URL Group.This structure is contained in the HTTP_SERVER_AUTHENTICATION_INFO structure.
HTTP_SERVER_AUTHENTICATION_DIGEST_PARAMS

Contains the information for digest authentication on a URL Group.
HTTP_SERVER_AUTHENTICATION_INFO

Used to enable server-side authentication on a URL group or server session.
HTTP_SERVICE_BINDING_A

HTTP_SERVICE_BINDING_A.
HTTP_SERVICE_BINDING_BASE

HTTP_SERVICE_BINDING_BASE.
HTTP_SERVICE_BINDING_W

HTTP_SERVICE_BINDING_W.
HTTP_SERVICE_CONFIG_CACHE_SET

Used in the pConfigInformation parameter of the HttpSetServiceConfiguration function.
HTTP_SERVICE_CONFIG_IP_LISTEN_PARAM

Used to specify an IP address to be added to or deleted from the list of IP addresses to which the HTTP service binds.
HTTP_SERVICE_CONFIG_IP_LISTEN_QUERY

Used by HttpQueryServiceConfiguration to return a list of the Internet Protocol (IP) addresses to which the HTTP service binds.
HTTP_SERVICE_CONFIG_SSL_CCS_KEY

Serves as the key by which identifies the SSL certificate record that specifies that Http.sys should consult the Centralized Certificate Store (CCS) store to find certificates if the port receives a Transport Layer Security (TLS) handshake.
HTTP_SERVICE_CONFIG_SSL_CCS_QUERY

Specifies a Secure Sockets Layer (SSL) configuration to query for an SSL Centralized Certificate Store (CCS) record on the port when you call the HttpQueryServiceConfiguration function.
HTTP_SERVICE_CONFIG_SSL_CCS_SET

Represents the SSL certificate record that specifies that Http.sys should consult the Centralized Certificate Store (CCS) store to find certificates if the port receives a Transport Layer Security (TLS) handshake.
HTTP_SERVICE_CONFIG_SSL_KEY

Serves as the key by which a given Secure Sockets Layer (SSL) certificate record is identified.
HTTP_SERVICE_CONFIG_SSL_PARAM

Defines a record in the SSL configuration store.
HTTP_SERVICE_CONFIG_SSL_QUERY

Used to specify a particular record to query in the SSL configuration store.
HTTP_SERVICE_CONFIG_SSL_SET

Used to add a new record to the SSL store or retrieve an existing record from it.
HTTP_SERVICE_CONFIG_SSL_SNI_KEY

Serves as the key by which a given Secure Sockets Layer (SSL) Server Name Indication (SNI) certificate record is identified in the SSL SNI store.
HTTP_SERVICE_CONFIG_SSL_SNI_QUERY

Used to specify a particular Secure Sockets Layer (SSL) Server Name Indication (SNI) certificate record to query in the SSL SNI store.
HTTP_SERVICE_CONFIG_SSL_SNI_SET

Used to add a new Secure Sockets Layer (SSL) Server Name Indication (SNI) certificate record to the SSL SNI store or retrieve an existing record from it.
HTTP_SERVICE_CONFIG_TIMEOUT_SET

Used to set the HTTP Server API wide timeout value.
HTTP_SERVICE_CONFIG_URLACL_KEY

Used to specify a particular reservation record in the URL namespace reservation store.
HTTP_SERVICE_CONFIG_URLACL_PARAM

Used to specify the permissions associated with a particular record in the URL namespace reservation store.
HTTP_SERVICE_CONFIG_URLACL_QUERY

Used to specify a particular reservation record to query in the URL namespace reservation store.
HTTP_SERVICE_CONFIG_URLACL_SET

Used to add a new record to the URL reservation store or retrieve an existing record from it.
HTTP_SSL_CLIENT_CERT_INFO

Contains data about a Secure Sockets Layer (SSL) client certificate that can be used to determine whether the certificate is valid.
HTTP_SSL_INFO

Contains data for a connection that uses Secure Sockets Layer (SSL), obtained through the SSL handshake.
HTTP_STATE_INFO

Used to enable or disable a Server Session or URL Group.
HTTP_TIMEOUT_LIMIT_INFO

Defines the application-specific connection timeout limits.
HTTP_TRANSPORT_ADDRESS

Specifies the addresses (local and remote) used for a particular HTTP connection.
HTTP_UNKNOWN_HEADER

Contains the name and value for a header in an HTTP request or response whose name does not appear in the enumeration.
HTTP_VERSION

Defines a version of the HTTP protocol that a request requires or a response provides.
HTTPAPI_VERSION

Defines the version of the HTTP Server API.