Функция KsCreateDefaultAllocatorEx (ks.h)
Создает распределитель по умолчанию, который использует указанный пул памяти и связывает IoGetCurrentIrpStackLocation(pIrp)->FileObject с этим распределителем с помощью внутренней таблицы диспетчера (KSDISPATCH_TABLE).
Синтаксис
KSDDKAPI NTSTATUS KsCreateDefaultAllocatorEx(
[in] PIRP Irp,
[in, optional] PVOID InitializeContext,
[in, optional] PFNKSDEFAULTALLOCATE DefaultAllocate,
[in, optional] PFNKSDEFAULTFREE DefaultFree,
[in, optional] PFNKSINITIALIZEALLOCATOR InitializeAllocator,
[in, optional] PFNKSDELETEALLOCATOR DeleteAllocator
);
Параметры
[in] Irp
Содержит IRP с обрабатываемыми запросами на создание распределителя.
[in, optional] InitializeContext
При необходимости содержит контекст для использования с внешним распределителем. Это используется только в качестве контекста инициализации для необязательного обратного вызова InitializeAllocator при создании контекста распределителя. Параметр не используется в противном случае. Если внешний распределитель не указан, этот параметр должен иметь значение NULL.
[in, optional] DefaultAllocate
При необходимости содержит внешнюю функцию выделения, которая используется вместо выделения пула по умолчанию. Если это null, используется выделение по умолчанию.
[in, optional] DefaultFree
При необходимости содержит внешнюю бесплатную функцию, которая используется вместо выделения пула по умолчанию. Если внешний распределитель не указан, этот параметр должен иметь значение NULL.
[in, optional] InitializeAllocator
При необходимости содержит функцию инициализации внешнего распределителя, в которую передается параметр InitializeContext. Эта функция должна возвращать контекст распределителя на основе обрамления. Если внешний распределитель не указан, этот параметр должен иметь значение NULL.
[in, optional] DeleteAllocator
При необходимости содержит функцию удаления внешнего распределителя, которая используется для внешних распределителей. Если внешний распределитель не указан, этот параметр должен иметь значение NULL.
Возвращаемое значение
Возвращает STATUS_SUCCESS, в противном случае ошибка при создании распределителя по умолчанию. Не завершает IRP или не задает состояние в IRP.
Замечания
Перед вызовом этой процедуры макрос KSCREATE_ITEM_IRP_STORAGE(Irp) должен вернуть указатель на структуру KSOBJECT_CREATE_ITEM, которая является элементом создания для этого распределителя. KsCreateDefaultAllocatorEx задает FsContext, чтобы указать возвращаемое значение этого макроса. Таким образом, FsContext позже можно использовать для запросов дескриптора безопасности или изменений.
В ks.hможно найти и связанные макросы KSCREATE_ITEM_IRP_STORAGE(Irp).
Требования
Требование | Ценность |
---|---|
целевая платформа | Всеобщий |
заголовка | ks.h (include Ks.h) |
библиотеки | Ks.lib |