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


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