httpReadFragmentFromCache 函数 (http.h)

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

语法

HTTPAPI_LINKAGE ULONG HttpReadFragmentFromCache(
  [in]  HANDLE           RequestQueueHandle,
  [in]  PCWSTR           UrlPrefix,
  [in]  PHTTP_BYTE_RANGE ByteRange,
  [out] PVOID            Buffer,
  [in]  ULONG            BufferLength,
  [out] PULONG           BytesRead,
  [in]  LPOVERLAPPED     Overlapped
);

参数

[in] RequestQueueHandle

与指定响应片段关联的请求队列的句柄。 创建请求队列,并通过调用 HttpCreateRequestQueue 函数返回其句柄。

带 SP1 的 Windows Server 2003 和 SP2 的 Windows XP: 请求队列的句柄由 HttpCreateHttpHandle 函数创建。

[in] UrlPrefix

指向 UrlPrefix 字符串 的指针,该字符串包含要检索的片段的名称。 这必须与之前成功调用 HttpAddFragmentToCache 中使用的 UrlPrefix 字符串匹配。

[in] ByteRange

指向 HTTP_BYTE_RANGE 结构的可选指针,该结构指示要返回的指定片段和字节计数中的起始偏移量。 如果未使用,则为 NULL,在这种情况下,将返回整个片段。

[out] Buffer

指向函数将请求的片段复制到其中的缓冲区的指针。

[in] BufferLength

pBuffer 缓冲区的大小(以字节为单位)。

[out] BytesRead

指向变量的可选指针,该变量接收要写入输出缓冲区的字节数。 如果 BufferLength 小于此数字,则调用失败并返回ERROR_INSUFFICIENT_BUFFER,并且 pBytesRead 指向的值可用于确定调用成功所需的最小缓冲区长度。

使用 pOverlapped 进行异步调用时,请将 pBytesRead 设置为 NULL。 否则,当 pOverlapped 设置为 NULL 时, pBytesRead 必须包含有效的内存地址,并且不能设置为 NULL

[in] Overlapped

对于异步调用,请将 pOverlapped 设置为指向 OVERLAPPED 结构;对于同步调用,将其设置为 NULL

同步调用会阻止,直到缓存操作完成,而异步调用会立即返回ERROR_IO_PENDING,调用应用程序随后使用 GetOverlappedResult 或 I/O 完成端口来确定操作何时完成。 有关使用 OVERLAPPED 结构进行同步的详细信息,请参阅 同步和重叠输入和输出

返回值

如果函数成功,则返回值NO_ERROR。

如果异步使用函数,则返回值 ERROR_IO_PENDING 表示缓存请求已排队,稍后通过正常的重叠 I/O 完成机制完成。

如果函数失败,则返回值为以下错误代码之一。

含义
ERROR_INVALID_PARAMETER
提供的一个或多个参数以不可用的形式提供。
ERROR_MORE_DATA
pBuffer 指向的缓冲区太小,无法接收所有请求的数据;所需的缓冲区大小由 pBytesRead 指向,除非它是 NULL 或调用是异步的。 对于异步调用,GetOverLappedResult 函数的 lpNumberOfBytesTransferred 参数指向的值设置为所需的缓冲区大小。
其他
WinError.h 中定义的 系统错误代码

要求

要求
最低受支持的客户端 Windows Vista、Windows XP 和 SP2 [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 http.h
Library Httpapi.lib
DLL Httpapi.dll

另请参阅

HTTP 服务器 API 版本 1.0 函数

HttpAddFragmentToCache

HttpFlushResponseCache