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

Подпрограмма FltAllocateExtraCreateParameterFromLookasideList выделяет пул памяти из заданного списка lookaside для дополнительной структуры контекста параметра создания (ECP) и создает указатель на данную структуру.

Синтаксис

NTSTATUS FLTAPI FltAllocateExtraCreateParameterFromLookasideList(
  [in]           PFLT_FILTER                                    Filter,
  [in]           LPCGUID                                        EcpType,
  [in]           ULONG                                          SizeOfContext,
  [in]           FSRTL_ALLOCATE_ECP_FLAGS                       Flags,
  [in, optional] PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK CleanupCallback,
  [in, out]      PVOID                                          LookasideList,
  [out]          PVOID                                          *EcpContext
);

Параметры

[in] Filter

Указатель непрозрачного фильтра на драйвер минифильтра. Этот указатель однозначно идентифицирует драйвер минифильтра и остается неизменным до тех пор, пока драйвер минифильтра загружен.

[in] EcpType

Указатель на GUID, указывающий тип структуры контекста ECP. Дополнительные сведения см . в статье Использование идентификаторов GUID в разделе Драйверы .

[in] SizeOfContext

Размер (в байтах) структуры контекста ECP.

[in] Flags

Определяет параметры выделения пула. Если значение параметра SizeOfContext больше размера (в байтах) заданного списка lookaside, структура контекста ECP будет выделена из системного пула, а не списка lookaside. В этом случае, если параметр Flags содержит значение флага FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA бита, системный пул, выделенный подпрограммой, будет взиматься по квоте памяти текущего процесса. Дополнительные сведения см. в разделе Параметр Flagsпараметра FltAllocateExtraCreateParameter . В более типичном случае, когда память для структуры контекста ECP выделяется из списка lookaside, флаг бита FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA не используется подпрограммой.

[in, optional] CleanupCallback

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

[in, out] LookasideList

Указатель на инициализированный список взглядов, из которого следует попытаться выделить пул (для структуры контекста ECP). Чтобы инициализировать список lookaside, используйте подпрограмму FltInitExtraCreateParameterLookasideList .

[out] EcpContext

Получает указатель на выделенную структуру контекста ECP. Если подпрограмме не удалось выделить достаточный пул для структуры контекста ECP, ecpContext будет иметь значение NULL и подпрограмма вернет код состояния STATUS_INSUFFICIENT_RESOURCES.

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

Подпрограмма FltAllocateExtraCreateParameterFromLookasideList может возвращать одно из следующих значений:

Код возврата Описание
STATUS_INSUFFICIENT_RESOURCES Подпрограмме FltAllocateExtraCreateParameterFromLookasideList не удалось выделить достаточно памяти для структуры контекста ECP. В этом случае EcpContext будет иметь значение NULL.
STATUS_SUCCESS Структура контекста ECP успешно выделена. В этом случае указатель на выделенную структуру возвращается параметром EcpContext .

Комментарии

Эта подпрограмма доступна, начиная с Windows Vista.

Подпрограмма FltAllocateExtraCreateParameterFromLookasideList выделяет пул памяти для структуры контекста ECP из заданного инициализированного или нестраничного списка lookaside. Однако если размер структуры контекста ECP (как определено параметром SizeOfContext ) больше, чем список lookaside, подпрограмма аналогичным образом выделяет память из страничного или нестраничного системного пула.

Используйте подпрограмму FltInitExtraCreateParameterLookasideList для инициализации страничного или нестраничного списка просмотра пула. Используйте подпрограмму FltAllocateExtraCreateParameterFromLookasideList для выделения структуры контекста ECP из списка lookaside и подпрограмму FltFreeExtraCreateParameter для освобождения структуры контекста ECP.

Используйте подпрограмму FltDeleteExtraCreateParameterLookasideList , чтобы освободить список lookaside.

Перед выгрузками драйверы должны освободить все структуры контекста ECP и списки внешних элементов, которые они создают. Однако если драйвер фильтра файловой системы или файловой системы подключает ECP к существующему или только что созданному ECP_LIST при обработке запроса IRP_MJ_CREATE, этот ECP автоматически очищается по завершении IRP. В результате драйверу фильтра не нужно очищать динамически добавляемые ESP. Это позволяет правильно распространять ECP драйвера фильтра по точкам повторного анализа . Процесс, который может потребовать создания нескольких запросов IRP_MJ_CREATE.

Дополнительные сведения об использовании списков lookaside с драйверами см. в статье Использование lookaside Списки.

Требования

Требование Значение
Целевая платформа Универсальное
Верхняя часть fltkernel.h (включая Fltkernel.h)
Библиотека FltMgr.lib
IRQL <= APC_LEVEL

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

ECP_LIST

FltAllocateExtraCreateParameter

FltAllocateExtraCreateParameterList

FltCreateFileEx2

FltDeleteExtraCreateParameterLookasideList

FltFreeExtraCreateParameter

FltFreeExtraCreateParameterList

FltGetEcpListFromCallbackData

FltInitExtraCreateParameterLookasideList

FltInsertExtraCreateParameter

FltRemoveExtraCreateParameter

FltSetEcpListIntoCallbackData

IoCreateFileEx

PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK