Функция 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 можно позже использовать для запросов или изменений дескриптора безопасности.

Вы можете найти KSCREATE_ITEM_IRP_STORAGE(Irp) и связанные макросы в ks.h.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть ks.h (включая Ks.h)
Библиотека Ks.lib