Функция FsRtlAllocateExtraCreateParameterFromLookasideList (ntifs.h)

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

Синтаксис

NTSTATUS FsRtlAllocateExtraCreateParameterFromLookasideList(
  [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] EcpType

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

[in] SizeOfContext

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

[in] Flags

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

[in, optional] CleanupCallback

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

[in, out] LookasideList

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

[out] EcpContext

Указатель на расположение, которое получает указатель на выделенную структуру контекста ECP. Если FsRtlAllocateExtraCreateParameterFromLookasideList не удалось выделить достаточный пул для структуры контекста ECP, FsRtlAllocateExtraCreateParameterFromLookasideList присваивает EcpContextзначение NULL и возвращает код состояния STATUS_INSUFFICIENT_RESOURCES.

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

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

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

Комментарии

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

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

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

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

Требования

Требование Значение
Минимальная версия клиента FsRtlAllocateExtraCreateParameterFromLookasideList доступен, начиная с Windows Vista.
Целевая платформа Универсальное
Верхняя часть ntifs.h (включая Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

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

FsRtlDeleteExtraCreateParameterLookasideList

FsRtlFreeExtraCreateParameter

FsRtlInitExtraCreateParameterLookasideList

PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK