Функция 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] Зарезервировано для дальнейшего использования.
Возвращаемое значение
Подпрограмма
Возвращаемый код | Описание |
---|---|
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) |