Partager via


Fonction FltProcessFileLock (fltkernel.h)

La routine FltProcessFileLock traite et termine une opération de verrouillage de fichier.

Syntaxe

FLT_PREOP_CALLBACK_STATUS FLTAPI FltProcessFileLock(
  [in]           PFILE_LOCK         FileLock,
  [in]           PFLT_CALLBACK_DATA CallbackData,
  [in, optional] PVOID              Context
);

Paramètres

[in] FileLock

Pointeur vers la structure FILE_LOCK pour le fichier. Cette structure doit avoir été initialisée par un appel précédent à FltAllocateFileLock ou FltInitializeFileLock.

[in] CallbackData

Pointeur vers la structure de données de rappel (FLT_CALLBACK_DATA) pour l’opération de IRP_MJ_LOCK_CONTROL .

[in, optional] Context

Pointeur de contexte à utiliser à la fin de l’opération. Ce pointeur de contexte est passé aux routines de rappel CompleteLockCallbackDataRoutine et UnlockRoutine que le pilote de minifiltre inscrit lors d’un appel précédent à FltAllocateFileLock. Ce paramètre est facultatif et peut être NULL.

Valeur retournée

FltProcessFileLock retourne l’un des éléments suivants.

Code de retour Description
FLT_PREOP_COMPLETE Le Gestionnaire de filtres est terminé avec CallbackData, qui peut maintenant être terminé.
FLT_PREOP_DISALLOW_FASTIO CallbackData représente une opération d’E/S rapide, et un pilote de minifiltre dans la pile a interdit les E/S rapides à utiliser pour cette opération. Le Gestionnaire de filtres n’envoie pas l’opération aux pilotes de minifiltre en dessous de celui qui n’a pas autorisé l’opération. Dans ce cas, le Gestionnaire de filtres appelle uniquement les routines de rappel post-opération (et les rappels CompleteLockCallbackDataRoutine ) des pilotes de minifiltre au-dessus du pilote de minifiltre qui ont interdit l’opération d’E/S rapide.
FLT_PREOP_PENDING L’opération de verrouillage a été suspendu.

Remarques

FltProcessFileLock traite une opération de verrouillage de fichier (IRP_MJ_LOCK_CONTROL). L’opération de verrouillage peut être une opération rapide basée sur les E/S ou les IRP.

Pour les opérations de déverrouillage, le Gestionnaire de filtres appelle la routine de rappel UnlockRoutine que l’appelant a inscrite pour la structure FILE_LOCK lors d’un appel précédent à FltAllocateFileLock.

Une fois l’opération de verrouillage terminée, le Gestionnaire de filtre appelle la routine de rappel d’achèvement CompleteLockCallbackDataRoutine (PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE) que l’appelant a inscrite pour la structure FILE_LOCK dans un appel précédent à FltAllocateFileLock.

Lorsque le paramètre CallbackData passé à FltProcessFileLock représente une opération d’E/S rapide, le rappel spécifié dans le paramètre CompleteLockCallbackDataRoutine de la routine FltAllocateFileLock n’est pas appelé. La routine de rappel est appelée uniquement lorsque l’opération d’E/S dans CallbackData est un IRP et que CompleteLockCallbackDataRoutine n’est pas NULL.

Pour déterminer si CallbackData représente une opération d’E/S rapide, utilisez la macro FLT_IS_FASTIO_OPERATION .

Pour allouer et initialiser une nouvelle structure de verrou de fichier, appelez FltAllocateFileLock.

Pour libérer une structure FILE_LOCK initialisée, appelez FltFreeFileLock.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP SP2
Serveur minimal pris en charge Windows Server 2003 avec SP1
Plateforme cible Universal
En-tête fltkernel.h (inclure Fltkernel.h)
Bibliothèque FltMgr.lib
DLL Fltmgr.sys
IRQL <= APC_LEVEL

Voir aussi

FILE_LOCK

FLT_CALLBACK_DATA

FLT_IS_FASTIO_OPERATION

FltAllocateFileLock

FltCheckLockForReadAccess

FltCheckLockForWriteAccess

FltFreeFileLock

FltInitializeFileLock

FltUninitializeFileLock

FsRtlProcessFileLock

IRP_MJ_LOCK_CONTROL

PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE

[PUNLOCK_ROUTINE] (.. /ntifs/nc-ntifs-punlock_routine.md