Функция FltDeleteFileContext (fltkernel.h)

Подпрограмма FltDeleteFileContext извлекает и удаляет контекст файла, заданный драйвером минифильтра для данного файла.

Синтаксис

NTSTATUS FLTAPI FltDeleteFileContext(
  [in]  PFLT_INSTANCE Instance,
  [in]  PFILE_OBJECT  FileObject,
  [out] PFLT_CONTEXT  *OldContext
);

Параметры

[in] Instance

Указатель непрозрачного экземпляра для вызывающего объекта. Этот параметр является обязательным и не может иметь значение NULL.

[in] FileObject

Указатель файлового объекта для файла. Этот параметр является обязательным и не может иметь значение NULL.

[out] OldContext

Указатель на переменную, выделенную вызывающим объектом, которая получает адрес удаленного контекста. Если соответствующий контекст не найден, эта переменная получает NULL_CONTEXT. Этот параметр является необязательным и может иметь значение NULL. Дополнительные сведения об этом параметре см. в следующем разделе Примечаний.

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

FltDeleteFileContext возвращает STATUS_SUCCESS или соответствующее значение NTSTATUS, например одно из следующих значений:

Код возврата Описание
STATUS_NOT_FOUND Соответствующий контекст не найден. Это код ошибки.
STATUS_NOT_SUPPORTED Контексты файлов для этого файла не поддерживаются. Это код ошибки.

Комментарии

Дополнительные сведения о контекстах см. в разделе О контекстах минифильтра.

Так как контексты считаются ссылочными, драйверу минифильтра обычно не требуется вызывать подпрограмму , например FltDeleteFileContext или FltDeleteContext , для явного удаления контекста.

Драйвер минифильтра вызывает FltDeleteFileContext , чтобы получить и удалить контекст файла, заданный ранее для файла, путем вызова Метода FltSetFileContext.

Если для входных данных параметр OldContext имеет значение NULL и найден соответствующий контекст файла, FltDeleteFileContext освобождает ссылку, добавленную предыдущим вызовом драйвера минифильтра к FltSetFileContext. Удаленный контекст обычно освобождается немедленно, если на него нет незавершенной ссылки (например, потому, что контекст по-прежнему используется другим потоком).

Если параметр OldContext не имеет значения NULL и найден и возвращается соответствующий контекст файла, вызывающий объект отвечает за освобождение ссылки, добавленной с помощью FltSetFileContext. Чтобы освободить эту ссылку, драйвер минифильтра должен как можно скорее вызвать FltReleaseContext в контексте удаленного файла после выполнения любой необходимой очистки.

Чтобы выделить новый контекст, вызовите FltAllocateContext.

Чтобы определить, поддерживаются ли контексты файлов для данного файла, вызовите FltSupportsFileContexts или FltSupportsFileContextsEx.

Требования

Требование Значение
Минимальная версия клиента Windows Vista и более поздних версий
Целевая платформа Универсальное
Верхняя часть fltkernel.h (включая Fltkernel.h)
Библиотека FltMgr.lib
IRQL <= APC_LEVEL

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

FLT_CONTEXT_REGISTRATION

FltAllocateContext

FltDeleteContext

FltGetFileContext

FltReleaseContext

FltSetFileContext

FltSupportsFileContexts

FltSupportsFileContextsEx