Partager via


FsRtlChangeBackingFileObject, fonction (ntifs.h)

La routine FsRtlChangeBackingFileObject remplace l’objet de fichier actif par un nouvel objet de fichier.

Syntaxe

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

Paramètres

CurrentFileObject

[in, facultatif] l’objet fichier actif. Si currentFileObject est null, l’objet de fichier actuel du système d’exploitation est défini sur NewFileObject. S’il n’est pas NULL, l’objet de fichier de stockage est remplacé par NewFileObject uniquement si l’objet de fichier de stockage actuel du système d’exploitation est égal à cette valeur. Si cet objet de fichier n’appartient pas au flux, l’opération échoue.

NewFileObject

[in] Le nouvel objet de fichier que le système d’exploitation référence et stocke en interne.

ChangeBackingType

[in] Valeur d’énumération de FSRTL_CHANGE_BACKING_TYPE qui indique quelle structure interne doit être modifiée pour référencer NewFileObject.

Flags

[in] réservé pour une utilisation ultérieure.

Valeur de retour

La routine FsRtlChangeBackingFileObject retourne STATUS_SUCCESS si l’opération réussit. Sinon, FsRtlChangeBackingFileObject retourne le code d’erreur approprié. Le tableau suivant contient des codes d’erreur qui FsRtlChangeBackingFileObject peuvent retourner.

Retourner le code Description
STATUS_INVALID_PARAMETER_2 L’opération de modification a échoué, car l’objet de fichier qui NewFileObject spécifie ne représente pas le même flux que CurrentFileObject.
STATUS_INVALID_PARAMETER_3 L’opération de modification a échoué, car l’appelant a spécifié un type de stockage non valide dans ChangeBackingType.
STATUS_INVALID_PARAMETER_4 L’opération de modification a échoué, car l’appelant a spécifié une valeur non valide dans Indicateurs.
STATUS_NOT_SUPPORTED L’opération de modification a échoué, car l’appelant a obtenu l’objet de fichier d’une manière qui n’autorise pas l’échange ultérieur de l’objet fichier. Par exemple, si l’appelant a obtenu l’objet de fichier avec un appel à CcGetFileObjectFromSectionPtrs, il n’est pas sûr de permuter l’objet de fichier.

Remarques

La routine FsRtlChangeBackingFileObject modifie l’objet de fichier pour l’une des opérations suivantes :

  • Une des zones de contrôle d’image du gestionnaire de mémoire pour le flux

  • Zone de contrôle des données du gestionnaire de mémoire pour le flux

  • Mappage du cache partagé du gestionnaire de cache pour le flux

La routine FsRtlChangeBackingFileObject n’est pas synchrone. Il traite la demande d’un changement d’objet de fichier et retourne immédiatement. Le gestionnaire de cache et le gestionnaire de mémoire synchronisent la modification de l’objet de fichier et ne libèreront pas l’ancien objet de fichier tant que toutes les opérations incomplètes associées à l’ancien objet de fichier n’ont pas terminé. Un état de retour de STATUS_SUCCESS de FsRtlChangeBackingFileObject ne signifie pas que le système d’exploitation a déjà modifié l’objet de fichier.

Toutefois, après FsRtlChangeBackingFileObject s’exécute correctement, le système d’exploitation associe toutes les opérations futures au nouvel objet de fichier.

Pour modifier l’objet de fichier pour plusieurs types de stockage, l’appelant doit appeler FsRtlChangeBackingFileObject plusieurs fois, une fois pour chaque type de stockage à modifier.

Exigences

Exigence Valeur
client minimum pris en charge La routine FsRtlChangeBackingFileObject est disponible à partir de Windows Vista.
plateforme cible Universel
d’en-tête ntifs.h (include Ntifs.h)
bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
règles de conformité DDI PowerIrpDDis(wdm)

Voir aussi

FSRTL_CHANGE_BACKING_TYPE