Функция FltAllocateCallbackDataEx (fltkernel.h)

Подпрограмма FltAllocateCallbackDataEx выделяет структуру данных обратного вызова и может предварительно выделять память для дополнительных структур, которые драйвер мини-фильтра может использовать для инициации запроса ввода-вывода.

Синтаксис

NTSTATUS FLTAPI FltAllocateCallbackDataEx(
  [in]          PFLT_INSTANCE                    Instance,
  [in/optional] PFILE_OBJECT                     FileObject,
  [in]          FLT_ALLOCATE_CALLBACK_DATA_FLAGS Flags,
  [out]         PFLT_CALLBACK_DATA               *RetNewCallbackData
);

Параметры

[in] Instance

Непрозрачный экземпляр указывает на экземпляр драйвера минифильтра, который инициирует операцию ввода-вывода. Этот параметр является обязательным и не может иметь значение NULL.

[in/optional] FileObject

Указатель на файловый объект, используемый в операции ввода-вывода. Этот параметр является необязательным и может иметь значение NULL. Задайте для Параметра FileObjectзначение NULL , если это операция CREATE.

[in] Flags

Значение, равное нулю или следующему флагу: FLT_ALLOCATE_CALLBACK_DATA_PREALLOCATE_ALL_MEMORY

Если этот флаг установлен, подпрограмма предварительно выделяет всю память, необходимую диспетчеру фильтров для использования дополнительных структур в запросе ввода-вывода.

[out] RetNewCallbackData

Указатель на переменную, выделенную вызывающим объектом, которая получает адрес вновь выделенных данных обратного вызова FLT_CALLBACK_DATA структуре.

Возвращаемое значение

Подпрограмма FltAllocateCallbackDataEx возвращает STATUS_SUCCESS при успешном выполнении или STATUS_INSUFFICIENT_RESOURCES, если подпрограмма столкнулась с ошибкой выделения пула при попытке выделить структуру данных обратного вызова или если установлен флаг FLT_ALLOCATE_CALLBACK_DATA_PREALLOCATE_ALL_MEMORY и не удалось выделить дополнительную память.

Комментарии

Если установлен флаг FLT_ALLOCATE_CALLBACK_DATA_PREALLOCATE_ALL_MEMORY, подпрограмма выделяет всю память, необходимую для дополнительных структур диспетчера фильтров, которые будут использоваться в последующем запросе ввода-вывода. Использование этого флага позволяет минифильтру предварительно выделить одну или несколько структур данных обратного вызова, которые будут использоваться для выдачи запросов ввода-вывода в условиях нехватки памяти или в ситуациях, когда восстановление после сбоя выделения памяти может оказаться сложным.

Примечание

Дополнительный выделенный объем памяти предназначен для использования диспетчером фильтров. Файловая система или другие фильтры по-прежнему могут завершить запрос ввода-вывода ошибкой из-за нехватки памяти.

Важно!

Комментарии для FltAllocateCallbackData также относятся к FltAllocateCallbackDataEx . Просмотрите эти сведения, чтобы выбрать правильную процедуру для вашего проекта.

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows 7 и более поздних версиях операционной системы Windows.
Целевая платформа Универсальное
Верхняя часть fltkernel.h (включая FltKernel.h)
Библиотека FltMgr.lib
IRQL <= APC_LEVEL

См. также раздел

FLT_CALLBACK_DATA

FltAllocateCallbackData