Partager via


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 :

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