Поделиться через


Функция 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. В этом случае, если параметр флагов содержит значение флага FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA бита, системный пул, выделенный FsRtlAllocateExtraCreateParameterFromLookasideList взимается с квоты памяти текущего процесса. Дополнительные сведения о значениях битовых флагов см. в параметре FlagsFsRtlAllocateExtraCreateParameter. В более типичном случае, когда 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. В этом случае параметр EcpContextNULL.
STATUS_SUCCESS Структура контекста ECP успешно выделена. В этом случае FsRtlAllocateExtraCreateParameterFromLookasideList возвращает указатель на выделенную структуру в параметре EcpContext.

Замечания

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

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

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

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские FsRtlAllocateExtraCreateParameterFromLookasideList доступен начиная с Windows Vista.
целевая платформа Всеобщий
заголовка ntifs.h (include Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

См. также

FsRtlDeleteExtraCreateParameterLookasideList

FsRtlFreeExtraCreateParameter

FsRtlInitExtraCreateParameterLookasideList

PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK