FsRtlChangeBackingFileObject, fonction (ntifs.h)

La routine FsRtlChangeBackingFileObject remplace l’objet fichier actuel par un nouvel objet file.

Syntaxe

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

Paramètres

CurrentFileObject

[in, facultatif] Objet de fichier actuel. Si CurrentFileObject a la valeur 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] Nouvel objet de fichier que le système d’exploitation référencera et stockera en interne.

ChangeBackingType

[in] Valeur d’énumération FSRTL_CHANGE_BACKING_TYPE qui indique la structure interne à modifier pour référencer NewFileObject.

Flags

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

Valeur retournée

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

Code de retour Description
STATUS_INVALID_PARAMETER_2 L’opération de modification a échoué, car l’objet file spécifié par NewFileObject 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 file 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 file avec un appel à CcGetFileObjectFromSectionPtrs, il n’est pas sûr d’échanger l’objet file.

Remarques

La routine FsRtlChangeBackingFileObject modifie l’objet file pour l’un des éléments suivants :

  • 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

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

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

Toutefois, une fois que 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 file pour plusieurs types de stockage, l’appelant doit appeler FsRtlChangeBackingFileObject plusieurs fois, une fois pour chaque type de stockage à modifier.

Configuration requise

Condition requise Valeur
Client minimal pris en charge La routine FsRtlChangeBackingFileObject est disponible à partir de Windows Vista.
Plateforme cible Universal
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