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