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