Функция 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 указывает, что запрос кэша помещается в очередь и завершается позже с помощью обычных перекрывающихся механизмов завершения ввода-вывода.
Если функция завершается сбоем, возвращаемое значение представляет собой один из следующих кодов ошибок.
Значение | Значение |
---|---|
|
Один или несколько предоставленных параметров доступны в непригодном для использования виде. |
|
Буфер, на который указывает 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 |