Функция FltAllocateCallbackData (fltkernel.h)
FltAllocateCallbackData выделяет структуру данных обратного вызова, которую может использовать драйвер мини-фильтра для запуска запроса ввода-вывода.
Синтаксис
NTSTATUS FLTAPI FltAllocateCallbackData(
[in] PFLT_INSTANCE Instance,
[in, optional] PFILE_OBJECT FileObject,
[out] PFLT_CALLBACK_DATA *RetNewCallbackData
);
Параметры
[in] Instance
Указатель непрозрачного экземпляра для экземпляра драйвера мини-фильтра, инициирующего операцию ввода-вывода. Этот параметр является обязательным и не может быть null.
[in, optional] FileObject
Указатель объекта файла, используемый в операции ввода-вывода. Этот параметр является необязательным и может быть null.
[out] RetNewCallbackData
Указатель на выделенную вызывающим переменную, которая получает адрес только что выделенной структуры обратного вызова (FLT_CALLBACK_DATA).
Возвращаемое значение
FltAllocateCallbackData возвращает STATUS_SUCCESS или соответствующее значение NTSTATUS, например следующее:
Возвращаемый код | Описание |
---|---|
|
FltAllocateCallbackData обнаружил сбой выделения пула при попытке выделить структуру данных обратного вызова. Это код ошибки. |
Замечания
Драйвер минифильтра может вызывать FltAllocateCallbackData выделить структуру данных обратного вызова (FLT_CALLBACK_DATA) для операции ввода-вывода, инициированной драйвером мини-фильтра.
После инициализации параметров структуры данных обратного вызова, возвращаемой FltAllocateCallbackData, вызывающий объект инициирует операцию ввода-вывода путем передачи структуры в FltPerformSynchronousIo или FltPerformAsynchronousIo. Эти подпрограммы отправляют операцию ввода-вывода только в экземпляры драйвера мини-фильтра, подключенные под экземпляром инициации (указанные в параметре экземпляра) и файловой системе. Драйверы мини-фильтра, подключенные над указанным экземпляром, не получают операции ввода-вывода.
Драйверы мини-фильтра могут инициировать только операции ввода-вывода на основе IRP. Они не могут инициировать быстрые операции обратного вызова ввода-вывода или файловой системы (FSFilter).
Драйверы минифильтра должны использовать FltAllocateCallbackData, FltPerformAsynchronousIoи FltPerformSynchronousIo только для операций ввода-вывода, для которых такие подпрограммы, как следующие, нельзя использовать:
Когда структура данных обратного вызова, выделенная FltAllocateCallbackData, больше не требуется, вызывающий объект отвечает за освобождение, вызывая FltFreeCallbackData.
Требования
Требование | Ценность |
---|---|
целевая платформа | Всеобщий |
заголовка | fltkernel.h (include Fltkernel.h) |
библиотеки | FltMgr.lib |
IRQL | <= APC_LEVEL |