FltOplockFsctrlEx, fonction (fltkernel.h)
La routine FltOplockFsctrlEx effectue diverses opérations de verrouillage opportuniste (oplock) au nom d’un pilote minifilter.
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 être 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 minifilter définit des bits pour spécifier le comportement de FltOplockFsctrlEx. Le paramètre indicateurs de
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 lorsque plusieurs handles ouverts existent sur le fichier. Pour plus d’informations sur les types oplock, consultez Vue d’ensemble d’Oplock. |
Valeur de retour
FltOplockFsctrlEx retourne FLT_PREOP_PENDING pour certaines opérations FSCTL. Pour plus d’informations, consultez les pages de référence des codes FSCTL répertoriés dans la section Remarques suivantes. Sinon, FltOplockFsctrlEx retourne FLT_PREOP_COMPLETE.
Remarques
Un pilote minifilter appelle FltOplockFsctrlEx pour effectuer différentes opérations de verrouillage opportunistes pour une opération de création ou une opération d’E/S de contrôle de système de fichiers.
La structure FLT_CALLBACK_DATA pointée par le paramètre CallbackData doit représenter une opération IRP_MJ_FILE_SYSTEM_CONTROL ou IRP_MJ_CREATE basée sur IRP.
Si l’opération est une opération IRP_MJ_FILE_SYSTEM_CONTROL, FltOplockFsctrlEx pouvez ê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 pour 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 du Kit de développement logiciel (SDK) Microsoft Windows.
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 pour l’opération. Pour plus d’informations, consultez FLT_PARAMETERS pour IRP_MJ_CREATE. - La valeur du paramètre ShareAccess
de 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 pour 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 de synchronisation Oplock.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Cette routine est disponible à partir de Windows 8. |
plateforme cible | Universel |
d’en-tête | fltkernel.h (include 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