Partager via


FltOplockFsctrl, fonction (fltkernel.h)

FltOplockFsctrl effectue diverses opérations de verrouillage opportuniste (oplock) au nom d’un pilote minifilter.

Syntaxe

FLT_PREOP_CALLBACK_STATUS FLTAPI FltOplockFsctrl(
  [in] POPLOCK            Oplock,
  [in] PFLT_CALLBACK_DATA CallbackData,
  [in] ULONG              OpenCount
);

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.

Valeur de retour

FltOplockFsctrl 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, FltOplockFsctrl retourne FLT_PREOP_COMPLETE.

Remarques

Un pilote minifilter appelle FltOplockFsctrl pour effectuer différentes opérations de verrouillage opportunistes pour une opération d’E/S de contrôle de système de fichiers ou de création.

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 de IRP_MJ_FILE_SYSTEM_CONTROL, FltOplockFsctrl 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
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_LEVEL_1

FSCTL_REQUEST_OPLOCK_LEVEL_2

FltCheckOplock

FltCurrentBatchOplock

FltInitializeOplock

FltOplockIsFastIoPossible

FltUninitializeOplock

FsRtlOplockFsctrl

IRP_MJ_CREATE

IRP_MJ_FILE_SYSTEM_CONTROL