Fonction FltOplockFsctrlEx (fltkernel.h)
La routine FltOplockFsctrlEx effectue diverses opérations de verrouillage opportuniste (oplock) pour le compte d’un pilote de minifiltre.
Syntaxe
FLT_PREOP_CALLBACK_STATUS FLTAPI FltOplockFsctrlEx(
[in] POPLOCK Oplock,
[in] PFLT_CALLBACK_DATA CallbackData,
[in] ULONG OpenCount,
[in] ULONG Flags
);
Paramètres
[in] Oplock
Pointeur oplock opaque pour le fichier. Ce pointeur doit avoir été initialisé par un appel précédent à FltInitializeOplock.
[in] CallbackData
Pointeur vers la structure FLT_CALLBACK_DATA pour l’opération d’E/S. Ce paramètre est obligatoire et ne peut pas avoir la valeur NULL.
[in] OpenCount
Nombre de handles utilisateur pour le fichier, si un oplock exclusif est demandé. La définition d’une valeur différente de zéro pour une requête oplock de niveau 2, R ou RH indique qu’il existe des verrous de plage d’octets sur le fichier. Pour plus d’informations sur les types oplock, consultez Vue d’ensemble d’Oplock.
[in] Flags
Masque de bits pour les opérations oplock associées. Un pilote de minifiltre définit des bits pour spécifier le comportement de FltOplockFsctrlEx. Le paramètre Flags comporte les options suivantes :
Valeur | Signification |
---|---|
OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH (0x00000001) | Le système de fichiers a vérifié que toutes les clés oplock sur les handles actuellement ouverts correspondent. En spécifiant cet indicateur, vous autorisez le package oplock à accorder un oplock de niveau RW ou RWH lorsqu’il existe plusieurs handle ouverts au fichier. Pour plus d’informations sur les types oplock, consultez Vue d’ensemble d’Oplock. |
Valeur retournée
FltOplockFsctrlEx retourne FLT_PREOP_PENDING pour certaines opérations FSCTL. Pour plus d’informations, consultez les pages de référence pour les codes FSCTL répertoriés dans la section Remarques suivante. Sinon, FltOplockFsctrlEx retourne FLT_PREOP_COMPLETE.
Remarques
Un pilote de minifiltre appelle FltOplockFsctrlEx pour effectuer diverses opérations de verrouillage opportunistes pour une opération de création ou une opération d’E/S de contrôle du système de fichiers.
La structure FLT_CALLBACK_DATA pointée par le paramètre CallbackData doit représenter une opération de IRP_MJ_FILE_SYSTEM_CONTROL ou de IRP_MJ_CREATE basée sur IRP.
Si l’opération est une opération IRP_MJ_FILE_SYSTEM_CONTROL, FltOplockFsctrlEx peut être utilisé avec les codes FSCTL suivants :
- FSCTL_OPBATCH_ACK_CLOSE_PENDING
- FSCTL_OPLOCK_BREAK_ACK_NO_2
- FSCTL_OPLOCK_BREAK_ACKNOWLEDGE
- FSCTL_OPLOCK_BREAK_NOTIFY
- FSCTL_REQUEST_BATCH_OPLOCK
- FSCTL_REQUEST_FILTER_OPLOCK
- FSCTL_REQUEST_OPLOCK_LEVEL_1
- FSCTL_REQUEST_OPLOCK_LEVEL_2
- FSCTL_REQUEST_OPLOCK
Le code FSCTL est défini dans le membre FsControlCode de la structure FLT_PARAMETERS de l’opération. Pour plus d’informations sur FsControlCode et d’autres paramètres IRP_MJ_FILE_SYSTEM_CONTROL, consultez FLT_PARAMETERS pour IRP_MJ_FILE_SYSTEM_CONTROL.
Pour plus d’informations sur les verrous opportunistes, consultez la documentation Microsoft Windows SDK.
Si l’opération est une requête IRP_MJ_CREATE , FltOplockFsctrl peut être utilisé pour demander un verrou opportuniste de filtre en attente si toutes les conditions suivantes sont remplies :
- La valeur du paramètre OpenCount doit être 1.
- La valeur du paramètre DesiredAccess pour la requête IRP_MJ_CREATE est FILE_READ_ATTRIBUTES. Ce paramètre est défini dans le membre SecurityContext de la structure FLT_PARAMETERS de l’opération. Pour plus d’informations, consultez FLT_PARAMETERS pour IRP_MJ_CREATE.
- La valeur du paramètre ShareAccess pour l’opération de IRP_MJ_CREATE est FILE_SHARE_READ, FILE_SHARE_WRITE ou FILE_SHARE_DELETE. Ce paramètre est défini dans le membre ShareAccess de la structure FLT_PARAMETERS de l’opération. Pour plus d’informations, consultez FLT_PARAMETERS pour IRP_MJ_CREATE.
Les filtres et les systèmes de fichiers qui appellent cette fonction doivent synchroniser les appels dans le package oplock fourni par le système. Pour plus d’informations, consultez Synchronisation Oplock .
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Cette routine est disponible à partir de Windows 8. |
Plateforme cible | Universal |
En-tête | fltkernel.h (inclure Fltkernel.h) |
Bibliothèque | FltMgr.lib |
DLL | Fltmgr.sys |
IRQL | <= APC_LEVEL |
Voir aussi
FLT_PARAMETERS pour IRP_MJ_CREATE
FLT_PARAMETERS pour IRP_MJ_FILE_SYSTEM_CONTROL
FSCTL_OPBATCH_ACK_CLOSE_PENDING