Partager via


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 contient 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 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 :

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_CALLBACK_DATA

FLT_PARAMETERS pour IRP_MJ_CREATE

FLT_PARAMETERS pour IRP_MJ_FILE_SYSTEM_CONTROL

FSCTL_OPBATCH_ACK_CLOSE_PENDING

FSCTL_OPLOCK_BREAK_ACKNOWLEDGE

FSCTL_OPLOCK_BREAK_ACK_NO_2

FSCTL_OPLOCK_BREAK_NOTIFY

FSCTL_REQUEST_BATCH_OPLOCK

FSCTL_REQUEST_FILTER_OPLOCK

FSCTL_REQUEST_OPLOCK

FSCTL_REQUEST_OPLOCK_LEVEL_1

FSCTL_REQUEST_OPLOCK_LEVEL_2

FltCheckOplockEx

FltInitializeOplock

FsRtlOplockFsctrlEx

IRP_MJ_CREATE

IRP_MJ_FILE_SYSTEM_CONTROL