Поделиться через


Функция HttpReadFragmentFromCache (http.h)

Функция HttpReadFragmentFromCache извлекает фрагмент ответа с указанным именем из кэша API HTTP-сервера.

Синтаксис

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 .

Windows Server 2003 с пакетом обновления 1 (SP1) и Windows XP с пакетом обновления 2 (SP2): Дескриптор очереди запросов создается функцией HttpCreateHttpHandle .

[in] UrlPrefix

Указатель на строку UrlPrefix , содержащую имя извлекаемого фрагмента. Он должен соответствовать строке UrlPrefix, используемой в предыдущем успешном вызове HttpAddFragmentToCache.

[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 или завершения ввода-вывода, чтобы определить, когда операция завершена. Дополнительные сведения об использовании структур OVERLAPPED для синхронизации см. в разделе Синхронизация и перекрытие входных и выходных данных.

Возвращаемое значение

Если функция выполняется успешно, возвращаемое значение будет NO_ERROR.

Если функция используется асинхронно, возвращаемое значение ERROR_IO_PENDING указывает, что запрос кэша помещается в очередь и завершается позже с помощью обычных перекрывающихся механизмов завершения ввода-вывода.

Если функция завершается сбоем, возвращаемое значение представляет собой один из следующих кодов ошибок.

Значение Значение
ERROR_INVALID_PARAMETER
Один или несколько предоставленных параметров доступны в непригодном для использования виде.
ERROR_MORE_DATA
Буфер, на который указывает pBuffer , слишком мал для получения всех запрошенных данных; pBytesRead указывает на необходимый размер буфера, если он не имеет значение NULL или вызов не был асинхронным. В случае асинхронного вызова для значения, на который указывает параметр lpNumberOfBytesTransferred функции GetOverLappedResult , устанавливается требуемый размер буфера.
Другое
Код системной ошибки, определенный в WinError.h.

Требования

Требование Значение
Минимальная версия клиента Windows Vista, Windows XP с пакетом обновления 2 (SP2) [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header http.h
Библиотека Httpapi.lib
DLL Httpapi.dll

См. также раздел

Функции API HTTP-сервера версии 1.0

HttpAddFragmentToCache

HttpFlushResponseCache