Функция FsRtlRemovePerFileObjectContext (ntifs.h)

Для драйвера фильтра файловой системы прежних версий функция FsRtlRemovePerFileObjectContext отменяет связь со структурой контекста для каждого объекта файла из списка контекстов объекта файла, ранее связанных с объектом файла.

Синтаксис

PFSRTL_PER_FILEOBJECT_CONTEXT FsRtlRemovePerFileObjectContext(
  [in]           PFILE_OBJECT FileObject,
  [in, optional] PVOID        OwnerId,
  [in, optional] PVOID        InstanceId
);

Параметры

[in] FileObject

Указатель на объект файла, для которого удаляются сведения о контексте.

[in, optional] OwnerId

Указатель на выделенную вызывающим переменную, которая однозначно идентифицирует фильтр владения структуры контекста объекта для каждого файла. Формат этой переменной зависит от драйвера фильтра.

[in, optional] InstanceId

Указатель на выделенную вызывающим переменную, которую можно использовать для различения структур контекста объекта файла, созданных одним драйвером фильтра. Формат этой переменной зависит от драйвера фильтра. Этот параметр является необязательным и может быть null.

Возвращаемое значение

FsRtlRemovePerFileObjectContext отмены связи и возвращает указатель на первый соответствующий контекст объекта файла. Если совпадение не найдено, FsRtlRemovePerFileObjectContext возвращает NULL.

Замечания

Драйвер фильтра файловой системы "устаревший" вызывает FsRtlRemovePerFileObjectContext , чтобы отменить связь со своей собственной структурой контекста объекта файла из списка контекстов каждого файла, связанных с объектом файла. Все такие структуры контекста должны быть ранее связаны с объектом файла путем вызова FsRtlInsertPerFileObjectContext.

Если вызов FsRtlRemovePerFileObjectContext выполнен успешно, первая структура контекста объекта файла, соответствующая OwnerIdInstanceId, если она присутствует), не связана, а указатель на него возвращается. Этот указатель можно использовать драйвером фильтра для освобождения несвязанной структуры контекста.

ПримечаниеFsRtlRemovePerFileObjectContext отменяет связь только с первой структурой контекста объекта файла, найденной. При наличии дополнительных сопоставлений контекстов объекта для каждого файла драйвер фильтра должен вызывать FsRtlRemovePerFileObjectContext столько раз, сколько требуется для отмены связи всех.
 
Чтобы инициализировать структуру контекста объекта файла, используйте макрос FsRtlInitPerFileObjectContext .

Чтобы связать инициализированную структуру контекста объекта с файлом, используйте функцию FsRtlInsertPerFileObjectContext.

Чтобы получить структуру контекста объекта файла, связанную с файлом, используйте функцию FsRtlLookupPerFileObjectContext.

примечание устаревшие драйверы фильтров должны вызывать функцию FsRtlRemovePerFileObjectContext, чтобы отменить связь и освободить структуру сведений контекста до завершения IRP_MJ_CLOSE. В противном случае память, выделенная для этой структуры контекста, будет утечка.
 
Кроме того, драйверы мини-фильтра файловой системы не должны использовать функции FsRtlXxxPerFileObjectContext. Вместо этого они могут использовать соответствующие функции FltXxxContext. Дополнительные сведения см. в разделе FSRTL_PER_FILEOBJECT_CONTEXT.

Требования

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

См. также

FSRTL_PER_FILEOBJECT_CONTEXT

FsRtlInitPerFileObjectContext

FsRtlInsertPerFileObjectContext

FsRtlLookupPerFileObjectContext