Функция 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 |