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


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

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

Синтаксис

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

Параметры

CurrentFileObject

[in, необязательный] текущий объект файла. Если CurrentFileObjectNULL, текущий файловый объект операционной системы имеет значение 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 Операция изменения завершилась ошибкой, так как вызывающий объект указал недопустимое значение в Flags.
STATUS_NOT_SUPPORTED Операция изменения завершилась сбоем, так как вызывающий объект получил объект файла таким образом, что не допускает последующее переключение объекта файла. Например, если вызывающий объект получил объект файла с вызовом CcGetFileObjectFromSectionPtrs, он не является безопасным для замены объекта файла.

Замечания

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

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

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

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

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

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

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Подпрограмма FsRtlChangeBackingFileObject доступна начиная с Windows Vista.
целевая платформа Всеобщий
заголовка ntifs.h (include Ntifs.h)
библиотеки NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
правил соответствия DDI PowerIrpDDis(wdm)

См. также

FSRTL_CHANGE_BACKING_TYPE