HTTP 服务器 API

HTTP 服务器 API 技术概述。

若要开发 HTTP 服务器 API,需要以下标头:

有关此技术的编程指南,请参阅:

枚举

 
HTTP_503_RESPONSE_VERBOSITY

HTTP_503_RESPONSE_VERBOSITY枚举定义 503、服务不可用、错误响应的详细级别。在请求队列上设置或查询 HttpServer503ResponseProperty 时,必须使用此结构。
HTTP_AUTH_STATUS

定义请求的身份验证状态。
HTTP_AUTHENTICATION_HARDENING_LEVELS

服务器强化级别。
HTTP_CACHE_POLICY_TYPE

HTTP_CACHE_POLICY_TYPE枚举类型定义可用的缓存策略。
HTTP_DATA_CHUNK_TYPE

定义数据区块的数据源。
HTTP_DELEGATE_REQUEST_PROPERTY_ID

描述委托请求的属性信息。
HTTP_ENABLED_STATE

定义请求队列、服务器会话或 URL 组的状态。
HTTP_FEATURE_ID

定义指定 HTTP 功能的标识符的常量。
HTTP_HEADER_ID

HTTP_HEADER_ID枚举类型列出 HTTP 请求和响应的已知标头,并将数组索引与每个此类标头相关联。
HTTP_LOG_DATA_TYPE

标识日志数据类型。
HTTP_LOGGING_ROLLOVER_TYPE

定义日志文件滚动更新类型。
HTTP_LOGGING_TYPE

定义执行的日志记录的类型。
HTTP_QOS_SETTING_TYPE

标识包含在HTTP_QOS_SETTING_INFO结构中的 QOS 设置的类型。
HTTP_REQUEST_AUTH_TYPE

HTTP_REQUEST_AUTH_TYPE枚举定义 HTTP 服务器 API 支持的身份验证类型。此枚举用于HTTP_REQUEST_AUTH_INFO结构。
HTTP_REQUEST_INFO_TYPE

HTTP_REQUEST_INFO_TYPE枚举定义HTTP_REQUEST_INFO结构中包含的信息类型。
HTTP_REQUEST_PROPERTY

定义 HTTP 服务器 API 在请求中配置的属性。
HTTP_REQUEST_TIMING_TYPE

定义常量,这些常量指定将在 HTTP_REQUEST_TIMING_INFO中返回信息的可能请求计时。
HTTP_RESPONSE_INFO_TYPE

HTTP_RESPONSE_INFO_TYPE枚举定义HTTP_RESPONSE_INFO结构中包含的信息类型。此枚举在 HTTP_RESPONSE_INFO 结构中使用。
HTTP_SERVER_PROPERTY

定义 HTTP 服务器 API 在 URL 组、服务器会话或请求队列上配置的属性。
HTTP_SERVICE_BINDING_TYPE

HTTP_SERVICE_BINDING_TYPE枚举类型指定服务名称的字符串类型。
HTTP_SERVICE_CONFIG_CACHE_KEY

用于 HttpSetServiceConfiguration 和 HttpQueryServiceConfiguration 函数。
HTTP_SERVICE_CONFIG_ID

定义服务配置选项。
HTTP_SERVICE_CONFIG_QUERY_TYPE

HTTP_SERVICE_CONFIG_QUERY_TYPE枚举类型定义要执行的各种类型的查询。 它用于HTTP_SERVICE_CONFIG_SSL_QUERY、HTTP_SERVICE_CONFIG_SSL_CCS_QUERY和HTTP_SERVICE_CONFIG_URLACL_QUERY结构。
HTTP_SERVICE_CONFIG_TIMEOUT_KEY

HTTP_SERVICE_CONFIG_TIMEOUT_KEY枚举定义通过HTTP_SERVICE_CONFIG_TIMEOUT_SET结构查询或配置的计时器类型。
HTTP_VERB

HTTP_VERB 枚举类型定义用于在HTTP_REQUEST结构中指定已知标准 HTTP 谓词的值。 RFC 2616 和 RFC 2518 中记录了大多数已知的谓词,如下所示。

函数

 
HTTP_EQUAL_VERSION

如果HTTP_VERSION结构等于指定的主版本/次要版本组合,则返回非零值,否则返回零值。
HTTP_GREATER_EQUAL_VERSION

如果HTTP_VERSION结构大于或等于指定的主版本/次要版本组合,则HTTP_GREATER_EQUAL_VERSION宏将返回非零值,否则返回零值。
HTTP_GREATER_VERSION

如果HTTP_VERSION结构大于指定的主版本/次要版本组合,则返回非零值,否则返回零值。
HTTP_IS_NULL_ID

确定HTTP_OPAQUE_ID是否为 NULL。
HTTP_LESS_EQUAL_VERSION

如果HTTP_VERSION结构小于或等于指定的主/次要版本组合,则返回非零值,否则返回零值。
HTTP_LESS_VERSION

如果HTTP_VERSION结构小于指定的主版本/次要版本组合,则返回非零值,否则返回零值。
HTTP_NOT_EQUAL_VERSION

如果HTTP_VERSION结构大于或小于指定的主版本/次要版本组合,则返回非零值;如果结构相等,则返回零值。
HTTP_SET_NULL_ID

HTTP_SET_NULL_ID宏将HTTP_OPAQUE_ID设置为 NULL。
HTTP_SET_VERSION

将指定的HTTP_VERSION结构设置为指定的主版本/次要版本组合。
HttpAddFragmentToCache

HttpAddFragmentToCache 函数缓存具有指定名称的数据片段,以便检索数据片段,或更新以指定名称缓存的数据。
HttpAddUrl

注册给定 URL,以便将其匹配的请求路由到指定的 HTTP 服务器 API 请求队列。
HttpAddUrlToUrlGroup

将指定的 URL 添加到 URL 组 ID 标识的 URL 组。
HTTPAPI_EQUAL_VERSION

如果HTTPAPI_VERSION结构完全等于指定的主/次要版本组合,则返回非零值,否则返回零值。
HTTPAPI_GREATER_VERSION

如果HTTPAPI_VERSION结构大于指定的主版本/次要版本组合,则返回非零值,否则返回零值。
HTTPAPI_LESS_VERSION

如果HTTPAPI_VERSION结构小于指定的主版本/次要版本组合,则返回非零值,否则返回零值。
HTTPAPI_VERSION_GREATER_OR_EQUAL

如果HTTPAPI_VERSION结构大于或等于指定的主版本/次要版本组合,则HTTPAPI_VERSION_GREATER_OR_EQUAL返回非零值,否则返回零值。
HttpCancelHttpRequest

HttpCancelHttpRequest 函数取消指定的请求。
HttpCloseRequestQueue

关闭由 HttpCreateRequestQueue 创建的指定请求队列的句柄。
HttpCloseServerSession

删除由服务器会话 ID 标识的服务器会话。
HttpCloseUrlGroup

关闭由 URL 组 ID 标识的 URL 组。
HttpCreateHttpHandle

为调用应用程序创建 HTTP 请求队列,并返回一个句柄。
HttpCreateRequestQueue

创建新的请求队列或打开现有请求队列。
HttpCreateServerSession

为指定版本创建服务器会话。
HttpCreateUrlGroup

在指定的服务器会话下创建 URL 组。
HttpDeclarePush

声明要用于 HTTP 服务器推送的资源到子资源关系。 如果基础协议、连接、客户端和策略允许推送操作,则 HTTP.sys 对给定资源执行 HTTP 2.0 服务器推送。
HttpDelegateRequestEx

将源请求队列中的请求委托给目标请求队列。
HttpDeleteServiceConfiguration

从 HTTP 服务器 API 配置存储区中删除指定的数据,例如 IP 地址或 SSL 证书,一次一条记录。
HttpFindUrlGroupId

检索 URL 和请求队列的 URL 组 ID。
HttpFlushResponseCache

从与给定请求队列关联的 HTTP 服务器 API 缓存中删除其网站部分与指定 UrlPrefix 匹配的名称的所有响应片段。
HttpInitialize

HttpInitialize 函数初始化 HTTP 服务器 API 驱动程序,启动它(如果尚未启动),并为调用应用程序分配数据结构以支持响应队列创建和其他操作。
HttpIsFeatureSupported

检查是否支持特定功能。
HttpPrepareUrl

分析、分析和规范化非规范化 Unicode 或 punycode URL,使其在其他 HTTP 函数中使用是安全且有效的。
HttpQueryRequestQueueProperty

查询由指定句柄标识的请求队列的属性。
HttpQueryServerSessionProperty

查询指定服务器会话上的服务器属性。
HttpQueryServiceConfiguration

检索一个或多个 HTTP 服务器 API 配置记录。
HttpQueryUrlGroupProperty

查询指定 URL 组上的属性。
HttpReadFragmentFromCache

HttpReadFragmentFromCache 函数从 HTTP 服务器 API 缓存中检索具有指定名称的响应片段。
HttpReceiveClientCertificate

服务器应用程序使用 HttpReceiveClientCertificate 函数检索客户端 SSL 证书或通道绑定令牌 (CBT) 。
HttpReceiveHttpRequest

以同步或异步方式从指定的请求队列中检索下一个可用的 HTTP 请求。
HttpReceiveRequestEntityBody

接收指定 HTTP 请求的其他实体正文数据。
HttpRemoveUrl

使系统停止将匹配指定 UrlPrefix 字符串的请求路由到指定的请求队列。
HttpRemoveUrlFromUrlGroup

从 URL 组 ID 标识的组中删除指定的 URL。
HttpSendHttpResponse

向指定的 HTTP 请求发送 HTTP 响应。
HttpSendResponseEntityBody

发送与 HTTP 响应关联的实体正文数据。
HttpSetRequestProperty

设置新属性或修改指定请求中的现有属性。
HttpSetRequestQueueProperty

设置由指定句柄标识的请求队列上的新属性或修改现有属性。
HttpSetServerSessionProperty

设置新的服务器会话属性或修改指定服务器会话上的现有属性。
HttpSetServiceConfiguration

创建并设置 HTTP 服务器 API 配置存储的配置记录。
HttpSetUrlGroupProperty

设置新属性或修改指定 URL 组上的现有属性。
HttpShutdownRequestQueue

停止为指定的请求队列进程排队请求。
HttpTerminate

清理 HTTP 服务器 API 用于处理应用程序调用的资源。
HttpUpdateServiceConfiguration

以原子方式汇报服务配置参数,该参数在 HTTP 服务器 API 配置存储中的配置记录中指定传输层安全性 (TLS) 证书。
HttpWaitForDemandStart

等待可由新请求队列进程提供的新请求的到达。
HttpWaitForDisconnect

当与 HTTP 客户端的连接因任何原因断开时,通知应用程序。
HttpWaitForDisconnectEx

此函数是 HttpWaitForDisconnect 的扩展。

结构

 
HTTP_BANDWIDTH_LIMIT_INFO

HTTP_BANDWIDTH_LIMIT_INFO结构用于设置或查询带宽限制。 在 URL 组或服务器会话上设置或查询 HttpServerBandwidthProperty 时,必须使用此结构。
HTTP_BINDING_INFO

用于将 URL 组与请求队列相关联。
HTTP_BYTE_RANGE

HTTP_BYTE_RANGE 结构用于指定缓存的响应片段、文件或其他数据块中的字节范围。
HTTP_CACHE_POLICY

用于定义与缓存的响应片段关联的缓存策略。
HTTP_CHANNEL_BIND_INFO

HTTP_CHANNEL_BIND_INFO。
HTTP_CONNECTION_LIMIT_INFO

用于设置或查询 URL 组的最大未完成连接数限制。
HTTP_COOKED_URL

包含经验证的规范 UTF-16 Unicode 编码的 URL 请求字符串,以及指向它的指针和元素长度。
HTTP_DATA_CHUNK

表示内存、文件中或 HTTP 服务器 API 响应片段缓存中的单个数据块。
HTTP_DELEGATE_REQUEST_PROPERTY_INFO

描述委托请求时的其他属性信息。
HTTP_FLOWRATE_INFO

响应的传输速率。
HTTP_KNOWN_HEADER

包含 HTTP 请求或 HTTP 响应中已知标头的标头值。
HTTP_LISTEN_ENDPOINT_INFO

控制基于 IP 的 URL 是应侦听特定 IP 地址还是侦听通配符。
HTTP_LOG_DATA

包含一个值,该值指定日志数据类型。
HTTP_LOG_FIELDS_DATA

用于在启用 WC3 日志记录时传递为 HTTP 响应记录的字段。
HTTP_LOGGING_INFO

用于在 URL 组或服务器会话上启用服务器端日志记录。
HTTP_MULTIPLE_KNOWN_HEADERS

指定当需要多个标头时 HTTP 响应中包含的标头。
HTTP_PROPERTY_FLAGS

由属性配置结构用于在设置属性配置时启用或禁用配置对象上的属性。
HTTP_QOS_SETTING_INFO

包含有关 QOS 设置的信息。
HTTP_REQUEST_AUTH_INFO

包含请求的身份验证状态,其中包含客户端令牌的句柄,接收进程可以使用该句柄来模拟经过身份验证的客户端。
HTTP_REQUEST_CHANNEL_BIND_STATUS

HTTP_REQUEST_CHANNEL_BIND_STATUS。
HTTP_REQUEST_HEADERS

包含使用 HTTP 请求发送的标头。
HTTP_REQUEST_INFO

使用有关请求的其他信息扩展HTTP_REQUEST结构。
HTTP_REQUEST_PROPERTY_STREAM_ERROR

HTTP_REQUEST_PROPERTY_STREAM_ERROR结构表示 HTTP/2 或 HTTP/3 流错误代码。
HTTP_REQUEST_TIMING_INFO

包含有关每个请求处理阶段所花费的时间的信息。
HTTP_REQUEST_V1

使用 HTTP_REQUEST 结构返回与特定请求关联的数据。
HTTP_REQUEST_V2

使用有关请求的详细信息扩展HTTP_REQUEST_V1请求结构。
HTTP_RESPONSE_HEADERS

包含使用 HTTP 响应发送的标头。
HTTP_RESPONSE_INFO

使用响应的其他信息扩展HTTP_RESPONSE结构。
HTTP_RESPONSE_V1

包含与 HTTP 响应关联的数据。
HTTP_RESPONSE_V2

使用响应的详细信息扩展 HTTP 1.0 版响应结构。
HTTP_SERVER_AUTHENTICATION_BASIC_PARAMS

HTTP_SERVER_AUTHENTICATION_BASIC_PARAMS 结构包含 URL 组上基本身份验证的信息。此结构包含在 HTTP_SERVER_AUTHENTICATION_INFO 结构中。
HTTP_SERVER_AUTHENTICATION_DIGEST_PARAMS

包含 URL 组的摘要式身份验证信息。
HTTP_SERVER_AUTHENTICATION_INFO

用于在 URL 组或服务器会话上启用服务器端身份验证。
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

在 HttpSetServiceConfiguration 函数的 pConfigInformation 参数中使用。
HTTP_SERVICE_CONFIG_IP_LISTEN_PARAM

用于指定要在 HTTP 服务绑定到的 IP 地址列表中添加或删除的 IP 地址。
HTTP_SERVICE_CONFIG_IP_LISTEN_QUERY

HttpQueryServiceConfiguration 用于返回 INTERNET 协议列表, (HTTP 服务绑定到的 IP) 地址。
HTTP_SERVICE_CONFIG_SSL_CCS_KEY

用作标识 SSL 证书记录的密钥,该记录指定 Http.sys 在端口收到传输层安全 (TLS) 握手时,应查阅集中式证书存储 (CCS) 存储来查找证书。
HTTP_SERVICE_CONFIG_SSL_CCS_QUERY

指定安全套接字层 (SSL) 配置,以便在调用 HttpQueryServiceConfiguration 函数时,在端口上查询 SSL 集中式证书存储 (CCS) 记录。
HTTP_SERVICE_CONFIG_SSL_CCS_SET

表示 SSL 证书记录,该记录指定在端口收到传输层安全性 (TLS) 握手时,Http.sys 应查阅集中式证书存储 (CCS) 存储来查找证书。
HTTP_SERVICE_CONFIG_SSL_KEY

用作用于标识给定安全套接字层 (SSL) 证书记录的密钥。
HTTP_SERVICE_CONFIG_SSL_PARAM

定义 SSL 配置存储中的记录。
HTTP_SERVICE_CONFIG_SSL_QUERY

用于指定要在 SSL 配置存储中查询的特定记录。
HTTP_SERVICE_CONFIG_SSL_SET

用于将新记录添加到 SSL 存储或从中检索现有记录。
HTTP_SERVICE_CONFIG_SSL_SNI_KEY

用作在 SSL SNI 存储中标识给定安全套接字层 (SSL) 服务器名称指示 (SNI) 证书记录的密钥。
HTTP_SERVICE_CONFIG_SSL_SNI_QUERY

用于指定特定安全套接字层 (SSL) 服务器名称指示 (SNI) 证书记录,以在 SSL SNI 存储中查询。
HTTP_SERVICE_CONFIG_SSL_SNI_SET

用于将新的安全套接字层 (SSL) 服务器名称指示 (SNI) 证书记录添加到 SSL SNI 存储或从中检索现有记录。
HTTP_SERVICE_CONFIG_TIMEOUT_SET

用于设置 HTTP 服务器 API 宽超时值。
HTTP_SERVICE_CONFIG_URLACL_KEY

用于在 URL 命名空间预留存储中指定特定的预留记录。
HTTP_SERVICE_CONFIG_URLACL_PARAM

用于指定与 URL 命名空间预留存储区中的特定记录关联的权限。
HTTP_SERVICE_CONFIG_URLACL_QUERY

用于指定要在 URL 命名空间预留存储中查询的特定预留记录。
HTTP_SERVICE_CONFIG_URLACL_SET

用于将新记录添加到 URL 预留存储或从中检索现有记录。
HTTP_SSL_CLIENT_CERT_INFO

包含有关安全套接字层 (SSL) 客户端证书的数据,可用于确定证书是否有效。
HTTP_SSL_INFO

包含使用安全套接字层 (SSL) 的连接的数据,该连接通过 SSL 握手获取。
HTTP_STATE_INFO

用于启用或禁用服务器会话或 URL 组。
HTTP_TIMEOUT_LIMIT_INFO

定义特定于应用程序的连接超时限制。
HTTP_TRANSPORT_ADDRESS

指定用于特定 HTTP 连接的本地和远程) (地址。
HTTP_UNKNOWN_HEADER

包含 HTTP 请求或响应中名称未显示在枚举中的标头的名称和值。
HTTP_VERSION

定义请求需要或响应提供的 HTTP 协议版本。
HTTPAPI_VERSION

定义 HTTP 服务器 API 的版本。