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


Функция KsAllocateExtraData (ks.h)

Функция KsAllocateExtraData используется с потоковой передачей IRP для выделения буфера для хранения дополнительных данных заголовка. Возвращается указатель на выделенный буфер, и буфер должен в конечном итоге освободиться вызывающим объектом.

Синтаксис

KSDDKAPI NTSTATUS KsAllocateExtraData(
  [in, out] PIRP  Irp,
  [in]      ULONG ExtraSize,
  [out]     PVOID *ExtraBuffer
);

Параметры

[in, out] Irp

Указывает IRP, содержащий заголовки потока. IRP должен быть передан в KsProbeStreamIrp для буферизации заголовков.

[in] ExtraSize

Задает размер в байтах дополнительной памяти для выделения между каждым заголовком потока. Это значение должно быть выровненным по границе восьмибайтов. Копия заголовков помещается в возвращаемый буфер с дополнительным размером данных, вставленным между каждым заголовком. Это должно быть освобождено вызывающим абонентом.

[out] ExtraBuffer

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

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

Функция KsAllocateExtraData возвращает STATUS_SUCCESS в случае успешного выполнения или возвращает ресурс или ошибку доступа.

Замечания

Когда KsAllocateExtraData успешно завершается, возвращается указатель на блок памяти, содержащий оба заголовка данных потока из IRP, указанные в Irp, и заполнение между каждым заголовком размера, указанным в ExtraSize. Ниже показан пример такого результирующий буфер:

диаграмма, иллюстрирующая результирующий буфер.

Если дополнительный буфер больше не нужен, память должна быть освобождена с помощью ExFreePool.

Требования

Требование Ценность
целевая платформа Всеобщий
заголовка ks.h (include Ks.h)
библиотеки Ks.lib
IRQL < DISPATCH_LEVEL