Функция FsRtlRemovePerFileContext (ntifs.h)
Подпрограмма FsRtlRemovePerFileContext возвращает указатель на объект FSRTL_PER_FILE_CONTEXT , связанный с файлом. FsRtlRemovePerFileContext удаляет объект FSRTL_PER_FILE_CONTEXT из списка, который он занимает, а также связанные сведения о контексте драйвера.
Синтаксис
PFSRTL_PER_FILE_CONTEXT FsRtlRemovePerFileContext(
[in] PVOID *PerFileContextPointer,
[in, optional] PVOID OwnerId,
[in, optional] PVOID InstanceId
);
Параметры
[in] PerFileContextPointer
Указатель на непрозрачный указатель, используемый пакетом библиотеки среды выполнения файловой системы (FSRTL) для отслеживания контекстов файлов. Чтобы получить этот указатель из объекта файла, используйте макрос FsRtlGetPerFileContextPointer .
[in, optional] OwnerId
Указатель на переменную, выделенную драйвером фильтра, которая однозначно идентифицирует владельца структуры контекста для каждого файла. Этот параметр является необязательным, но должен иметь значение, отличное от NULL, если InstanceId имеет значение, отличное от NULL.
[in, optional] InstanceId
Указатель на переменную, выделенную драйвером фильтра, которую можно использовать для различения структур контекста для каждого файла, созданных одним и тем же драйвером фильтра. Этот параметр является необязательным.
Возвращаемое значение
Указатель на первый FSRTL_PER_FILE_CONTEXT , соответствующий идентификаторам ownerId и InstanceId, если они указаны. Если совпадение не найдено или система не поддерживает сведения о контексте файла, эта подпрограмма возвращает значение NULL.
Комментарии
FsRtlRemovePerFileContext удаляет только первую найденную структуру контекста для каждого файла. При наличии дополнительных соответствующих контекстов для каждого файла драйвер фильтра должен вызывать FsRtlRemovePerFileContext столько раз, сколько требуется для удаления всех контекстов.
Драйвер фильтра файловой системы должен освободить память, используемую для этой контекстной информации, после удаления FSRTL_PER_FILE_CONTEXT .
Используйте эту подпрограмму для драйверов, чтобы удалять контексты только в том случае, если драйвер должен удалить сведения о контексте для каждого файла, пока файл все еще открыт. Контексты удаляются при закрытии файла с помощью FsRtlTeardownPerFileContexts.
Не используйте эту процедуру в своей процедуре FreeCallback . Файловая система удаляет контексты из списка перед вызовом этой подпрограммы.
Не используйте эту подпрограмму в обработчике IRP_CLOSE. Вы не получите уведомление о сносе потока.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista |
Целевая платформа | Универсальное |
Верхняя часть | ntifs.h (включая FltKernel.h, Ntifs.h) |
Библиотека | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <=APC_LEVEL |
См. также раздел
Отслеживание контекста Per-File в устаревшем драйвере фильтра файловой системы
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по