Функция 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 (включая Ks.h) |
Библиотека | Ks.lib |
IRQL | < DISPATCH_LEVEL |