Fonction FltOplockFsctrl (fltkernel.h)

FltOplockFsctrl effectue diverses opérations de verrouillage opportuniste (oplock) pour le compte d’un pilote de minifiltre.

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 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.

Valeur retournée

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

Remarques

Un pilote de minifiltre appelle FltOplockFsctrl pour effectuer diverses opérations de verrouillage opportunistes pour une opération d’E/S de création ou 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, FltOplockFsctrl peut être utilisé avec les codes FSCTL suivants :

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
Plateforme cible Universal
En-tête fltkernel.h (inclure 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