Partager via


FsRtlRemovePerFileObjectContext, fonction (ntifs.h)

Pour un pilote de filtre de système de fichiers « hérité », la fonction FsRtlRemovePerFileObjectContext dissocie une structure d’informations de contexte par objet-fichier de la liste des contextes par objet-fichier précédemment associés à un objet fichier.

Syntaxe

PFSRTL_PER_FILEOBJECT_CONTEXT FsRtlRemovePerFileObjectContext(
  [in]           PFILE_OBJECT FileObject,
  [in, optional] PVOID        OwnerId,
  [in, optional] PVOID        InstanceId
);

Paramètres

[in] FileObject

Pointeur vers un objet fichier pour lequel supprimer des informations de contexte.

[in, optional] OwnerId

Pointeur vers une variable allouée par l’appelant qui identifie de manière unique le filtre propriétaire de la structure de contexte par fichier-objet. Le format de cette variable est spécifique au pilote de filtre.

[in, optional] InstanceId

Pointeur vers une variable allouée par l’appelant qui peut être utilisée pour distinguer les structures de contexte par objet-fichier créées par le même pilote de filtre. Le format de cette variable est spécifique au pilote de filtre. Ce paramètre est facultatif et peut être NULL.

Valeur retournée

FsRtlRemovePerFileObjectContext dissocie et retourne un pointeur vers le premier contexte correspondant par objet-fichier trouvé. Si aucune correspondance n’est trouvée, FsRtlRemovePerFileObjectContext retourne NULL.

Remarques

Un pilote de filtre de système de fichiers « hérité » appelle FsRtlRemovePerFileObjectContext pour dissocier sa propre structure de contexte par objet-fichier de la liste des contextes par fichier-objet associés à l’objet fichier. Toutes ces structures de contexte doivent avoir été précédemment associées à l’objet file en appelant FsRtlInsertPerFileObjectContext.

Si l’appel à FsRtlRemovePerFileObjectContext réussit, la première structure de contexte par objet-fichier correspondant à OwnerId (et InstanceId, le cas échéant) est dissociée et un pointeur vers celui-ci est retourné. Ce pointeur peut être utilisé par le pilote de filtre pour libérer la structure de contexte non lié.

RemarqueFsRtlRemovePerFileObjectContext dissocie uniquement la première structure de contexte correspondante par fichier-objet trouvée. S’il existe d’autres contextes correspondants par objet-fichier, le pilote de filtre doit appeler FsRtlRemovePerFileObjectContext autant de fois que nécessaire pour les dissocier tous.
 
Pour initialiser une structure de contexte par objet-fichier, utilisez la macro FsRtlInitPerFileObjectContext .

Pour associer une structure de contexte par objet fichier initialisée à un objet fichier, utilisez la fonction FsRtlInsertPerFileObjectContext .

Pour récupérer une structure de contexte par objet de fichier associée à un objet fichier, utilisez la fonction FsRtlLookupPerFileObjectContext .

Note Les pilotes de filtre hérités doivent appeler la fonction FsRtlRemovePerFileObjectContext pour dissocier et libérer la structure des informations de contexte avant l’achèvement de IRP_MJ_CLOSE. Sinon, la mémoire allouée à cette structure de contexte sera divulguée.
 
En outre, les pilotes de minifiltre du système de fichiers ne doivent pas utiliser les fonctions FsRtlXxxPerFileObjectContext . Au lieu de cela, ils peuvent utiliser les fonctions FltXxxContext appropriées. Pour plus d’informations, consultez la rubrique FSRTL_PER_FILEOBJECT_CONTEXT .

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista
Plateforme cible Universal
En-tête ntifs.h (include Fltkernel.h, Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Voir aussi

FSRTL_PER_FILEOBJECT_CONTEXT

FsRtlInitPerFileObjectContext

FsRtlInsertPerFileObjectContext

FsRtlLookupPerFileObjectContext