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


Метод IGlobalRSCAQueryProvider::ResizeOutputBuffer

Изменяет размер и возвращает выходной BYTE массив.

Синтаксис

virtual HRESULT ResizeOutputBuffer(  
   DWORD cbNewBuffer,  
   DWORD cbBytesToCopy,  
   IN OUT BYTE** ppbBuffer  
) = 0;  

Параметры

cbNewBuffer
[IN] Объект DWORD , содержащий количество выделенных байтов.

cbBytesToCopy
[IN] Объект DWORD , содержащий количество байтов для копирования в ppbBuffer новый буфер.

ppbBuffer
[IN] [OUT] Указатель на BYTE массив, содержащий новый буфер.

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

Объект HRESULT. Допустимые значения включают, но не ограничиваются, значения, приведенные в следующей таблице.

Значение Определение
S_OK Указывает, что операция выполнена успешно.
E_INVALIDARG Указывает, что cbBytesToCopy больше cbNewBuffer.
E_OUTOFMEMORY Указывает, что память кучи исчерпана.

Комментарии

Производные классы CGlobalModule, которые регистрируются для событий GL_RSCA_QUERY, получают указатель IGlobalRscaQueryProvider в качестве параметра в методе CGlobalModule::OnGlobalRSCAQueryvirtual. Затем можно изменить размер текущего BYTE массива, вызвав ResizeOutputBuffer метод для указателя IGlobalRSCAQueryProvider .

Возвращаемое ResizeOutputBuffer значение зависит от реализации. В качестве руководства следует использовать следующие сведения, но они могут быть неправильными во всех сценариях:

Реализующий IGlobalRSCAQueryProvider объект объявляет private``BYTE указатель в качестве переменной-члена с именем buffer; при создании реализует инициализирует buffer значение NULL. cbBytesToCopy Если параметр больше, чем параметр при ResizeOutputBuffer вызове cbNewBuffer , ResizeOutputBuffer немедленно возвращает E_INVALIDARG. В противном случае вызывается функция LocalAlloc для создания нового буфера размера cbNewBuffer, а содержимое ppbBuffer параметра (до длины cbBytesToCopy) копируется в этот новый буфер. Затем вызывается функция LocalFree для удаления частного буфера, который переназначается новому буферу. Затем private буфер возвращается в параметре разыменования ppbBuffer , если ResizeOutputBuffer возвращает S_OK.

Важно Этот метод является частью инфраструктуры IIS 7 и не предназначен для использования непосредственно из кода.

Примечания для разработчиков

IGlobalRSCAQueryProviderразработчики отвечают за управление памятью с помощью этих данных; Поэтому разработчики, использующие динамическое выделение памяти, IGlobalRSCAQueryProvider должны освобождать или вызывать BYTEdelete указатель, когда он больше не нужен.

Примечания для вызывающих абонентов

IGlobalRSCAQueryProvider разработчики отвечают за управление памятью с помощью этих данных; IGlobalRSCAQueryProvider Поэтому клиенты не должны освобождать или вызывать delete возвращаемый BYTE указатель, если эти данные больше не нужны.

Требования

Тип Описание
клиент — IIS 7.0 в Windows Vista
— IIS 7.5 в Windows 7
— IIS 8.0 в Windows 8
— IIS 10.0 в Windows 10
Сервер — IIS 7.0 в Windows Server 2008
— IIS 7.5 в Windows Server 2008 R2
— IIS 8.0 в Windows Server 2012
— IIS 8.5 в Windows Server 2012 R2
— IIS 10.0 в Windows Server 2016
Продукт — IIS 7.0, IIS 7.5, IIS 8.0, IIS 8.5, IIS 10.0
— IIS Express 7.5, IIS Express 8.0, IIS Express 10.0
Заголовок Httpserv.h

См. также:

Интерфейс IGlobalRSCAQueryProvider
Метод IGlobalRSCAQueryProvider::GetOutputBuffer