Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Программа 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. В этом случае, если параметр флагов содержит значение флага FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA бита, системный пул, выделенный подпрограммой, будет взиматься плата за квоту памяти текущего процесса. Дополнительные сведения см. в параметре флаговFltAllocateExtraCreatePara meter. В более типичном случае при выделении памяти для структуры контекста ECP из списка lookaside флаг FSRTL_ALLOCATE_ECP_FLAG_CHARGE_QUOTA бит не используется подпрограммой.
[in, optional] CleanupCallback
Необязательный указатель на определяемую мини-фильтром подпрограмму обратного вызова типа PFSRTL_EXTRA_CREATE_PARAMETER_CLEANUP_CALLBACK. Подпрограмма обратного вызова очистки вызывается при удалении структуры контекста ECP. Присвойте этому параметру значение NULL, если подпрограмма обратного вызова очистки неприменима.
[in, out] LookasideList
Указатель на инициализированный список lookaside, в котором необходимо попытаться выделить пул (для структуры контекста 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 и списки lookaside, которые они создают перед выгрузками. Однако если драйвер фильтра файловой системы или файловой системы подключает ECP к существующей или недавно созданной ECP_LIST при обработке запроса IRP_MJ_CREATE, этот ECP автоматически очищается после завершения IRP. В результате драйвер фильтра не должен очищать ЕЦП, которые добавляются динамически. Это позволяет правильно распространять ЕЦП драйвера фильтра по точкам повторного анализа, что может потребовать создания нескольких IRP_MJ_CREATE запросов.
Дополнительные сведения об использовании списков lookaside с драйверами см. в использовании списков Lookaside.
Требования
| Требование | Ценность |
|---|---|
| целевая платформа | Всеобщий |
| заголовка | fltkernel.h (include Fltkernel.h) |
| библиотеки | FltMgr.lib |
| IRQL | <= APC_LEVEL |
См. также
FltAllocateExtraCreateParameter
FltAllocateExtraCreateParameterList
FltDeleteExtraCreateParameterLookasideList
FltFreeExtraCreateParameterList