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


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

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

FSRTL_PER_FILE_CONTEXT

FsRtlGetPerFileContextPointer

FsRtlInsertPerFileContext

FsRtlLookupPerFileContext

Отслеживание контекста Per-File в устаревшем драйвере фильтра файловой системы