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

Подпрограмма FsRtlChangeBackingFileObject заменяет текущий объект файла новым объектом file.

Синтаксис

NTSTATUS FsRtlChangeBackingFileObject(
  PFILE_OBJECT              CurrentFileObject,
  PFILE_OBJECT              NewFileObject,
  FSRTL_CHANGE_BACKING_TYPE ChangeBackingType,
  ULONG                     Flags
);

Параметры

CurrentFileObject

[in, необязательный] Текущий объект файла. Если значение CurrentFileObject равно NULL, текущий объект файла операционной системы имеет значение NewFileObject. Если значение не равно NULL, то резервный файловый объект изменяется на NewFileObject только в том случае, если текущий объект резервного файла ОС равен этому значению. Если этот файловый объект не принадлежит потоку, операция завершается ошибкой.

NewFileObject

[in] Новый объект файла, на который ОС будет ссылаться и храниться внутри системы.

ChangeBackingType

[in] Значение перечисления FSRTL_CHANGE_BACKING_TYPE , указывающее, какая внутренняя структура должна быть изменена для ссылки на NewFileObject.

Flags

[in] Зарезервировано для использования в будущем.

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

Подпрограмма FsRtlChangeBackingFileObject возвращает STATUS_SUCCESS, если операция выполнена успешно. В противном случае FsRtlChangeBackingFileObject возвращает соответствующий код ошибки. В следующей таблице содержатся коды ошибок, которые может возвращать FsRtlChangeBackingFileObject .

Код возврата Описание
STATUS_INVALID_PARAMETER_2 Операция изменения завершилась сбоем, так как объект файла, который указывает NewFileObject , не представляет тот же поток, что и CurrentFileObject.
STATUS_INVALID_PARAMETER_3 Операция изменения завершилась сбоем, так как вызывающий объект указал недопустимый тип резервного копирования в ChangeBackingType.
STATUS_INVALID_PARAMETER_4 Операция изменения завершилась сбоем, так как вызывающий объект указал недопустимое значение в разделе Флаги.
STATUS_NOT_SUPPORTED Операция изменения завершилась сбоем, так как вызывающий объект получил файловый объект способом, который не допускает последующего переключения файлового объекта. Например, если вызывающий объект получил файловый объект с помощью вызова CcGetFileObjectFromSectionPtrs, переключить объект файла небезопасно.

Комментарии

Подпрограмма FsRtlChangeBackingFileObject изменяет объект файла для одного из следующих:

  • Одна из областей управления изображениями диспетчера памяти для потока

  • Область управления данными диспетчера памяти для потока

  • Схема общего кэша диспетчера кэша для потока

Подпрограмма FsRtlChangeBackingFileObject не является синхронной. Он обрабатывает запрос на изменение объекта файла и возвращает его немедленно. Диспетчер кэша и диспетчер памяти синхронизируют изменение объекта файла и не будут освобождать старый файловый объект, пока не будут завершены все незавершенные операции, связанные со старым объектом файла. Состояние возврата STATUS_SUCCESS из FsRtlChangeBackingFileObject не означает, что операционная система уже изменила объект файла.

Однако после успешного выполнения FsRtlChangeBackingFileObject операционная система связывает все будущие операции с новым объектом файла.

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

Требования

Требование Значение
Минимальная версия клиента Подпрограмма FsRtlChangeBackingFileObject доступна начиная с Windows Vista.
Целевая платформа Универсальное
Верхняя часть ntifs.h (включая Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
Правила соответствия DDI PowerIrpDDis(wdm)

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

FSRTL_CHANGE_BACKING_TYPE