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) |