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
PFLT_COMPLETE_LOCK_CALLBACK_DATA_ROUTINE
[PUNLOCK_ROUTINE] (.. /ntifs/nc-ntifs-punlock_routine.md