Función FsRtlChangeBackingFileObject (ntifs.h)
La rutina de FsRtlChangeBackingFileObject reemplaza el objeto de archivo actual por un nuevo objeto de archivo.
Sintaxis
NTSTATUS FsRtlChangeBackingFileObject(
PFILE_OBJECT CurrentFileObject,
PFILE_OBJECT NewFileObject,
FSRTL_CHANGE_BACKING_TYPE ChangeBackingType,
ULONG Flags
);
Parámetros
CurrentFileObject
[in, opcional] El objeto de archivo actual. Si CurrentFileObject es null, el objeto de archivo actual del sistema operativo se establece en NewFileObject. Si no es NULL, el objeto de archivo de respaldo se cambia a NewFileObject solo si el objeto de archivo de respaldo actual del sistema operativo es igual a este valor. Si este objeto de archivo no pertenece a la secuencia, se produce un error en la operación.
NewFileObject
[in] El nuevo objeto de archivo al que hará referencia el sistema operativo y almacenará internamente.
ChangeBackingType
[in] Valor de enumeración FSRTL_CHANGE_BACKING_TYPE que indica qué estructura interna se debe cambiar para hacer referencia a NewFileObject.
Flags
[in] Reservado para uso futuro.
Valor devuelto
La rutina FsRtlChangeBackingFileObject
Código devuelto | Descripción |
---|---|
STATUS_INVALID_PARAMETER_2 | Error en la operación de cambio porque el objeto de archivo que NewFileObject especifica no representa la misma secuencia que CurrentFileObject. |
STATUS_INVALID_PARAMETER_3 | Error en la operación de cambio porque el autor de la llamada especificó un tipo de respaldo no válido en ChangeBackingType. |
STATUS_INVALID_PARAMETER_4 | Error en la operación de cambio porque el autor de la llamada especificó un valor no válido en Marcas. |
STATUS_NOT_SUPPORTED | Error en la operación de cambio porque el autor de la llamada obtuvo el objeto de archivo de una manera que no permite el intercambio posterior del objeto de archivo. Por ejemplo, si el autor de la llamada obtuvo el objeto de archivo con una llamada a CcGetFileObjectFromSectionPtrs, no es seguro intercambiar el objeto de archivo. |
Observaciones
El FsRtlChangeBackingFileObject rutina cambia el objeto de archivo para uno de los siguientes elementos:
Una de las áreas de control de imágenes del administrador de memoria para la secuencia
Área de control de datos del administrador de memoria para la secuencia
Mapa de caché compartida del administrador de caché para la secuencia
La rutina de FsRtlChangeBackingFileObject no es sincrónica. Procesa la solicitud de un cambio de objeto de archivo y devuelve inmediatamente. El administrador de caché y el administrador de memoria sincronizan el cambio del objeto de archivo y no liberarán el objeto de archivo antiguo hasta que se hayan completado todas las operaciones incompletas asociadas al objeto de archivo anterior. Un estado devuelto de STATUS_SUCCESS de FsRtlChangeBackingFileObject no significa que el sistema operativo ya haya cambiado el objeto de archivo.
Sin embargo, después de FsRtlChangeBackingFileObject se ejecuta correctamente, el sistema operativo asocia todas las operaciones futuras con el nuevo objeto de archivo.
Para cambiar el objeto de archivo para más de un tipo de respaldo, el autor de la llamada debe llamar a FsRtlChangeBackingFileObject varias veces, una vez para que cada tipo de respaldo cambie.