Partager via


Macro FsRtlCheckOplock (rxprocs.h)

La routine FsRtlCheckOplock synchronise l’IRP pour une opération d’E/S de fichier avec l’état actuel du verrouillage opportuniste (oplock) du fichier.

Syntaxe

void FsRtlCheckOplock(
   A1,
   A2,
   A3,
   A4,
   A5
);

Paramètres

A1

Pointeur de verrou opportuniste opaque pour le fichier. Ce pointeur doit avoir été initialisé par un appel précédent à FsRtlInitializeOplock.

A2

Pointeur vers l’IRP pour l’opération d’E/S.

A3

Pointeur vers les informations de contexte définies par l’appelant à passer aux routines de rappel vers laquelle pointent les paramètres CompletionRoutine et PostIrpRoutine .

A4

Pointeur vers une routine de rappel fournie par l’appelant. Si un verrou opportuniste est en cours, cette routine est appelée lorsque l’arrêt est terminé. Ce paramètre est facultatif et peut être NULL. S’il a la valeur NULL, l’appelant est mis en état d’attente jusqu’à ce que le verrou opportuniste soit terminé.

Cette routine est déclarée comme suit :

typedef VOID
(*POPLOCK_WAIT_COMPLETE_ROUTINE) (
      IN PVOID Context,
      IN PIRP Irp
      );

Cette routine a les paramètres suivants :

Contexte

Pointeur d’informations de contexte qui a été passé dans le paramètre Context à FsRtlCheckOplock.

Irp

Pointeur vers l’IRP pour l’opération d’E/S.

A5

Pointeur vers une routine de rappel fournie par l’appelant à appeler si l’opération d’E/S est publiée dans une file d’attente de travail. Ce paramètre est facultatif et peut être NULL.

Cette routine est déclarée comme suit :

typedef VOID
(*POPLOCK_FS_PREPOST_IRP) (
      IN PVOID Context,
      IN PIRP Irp
      );

Contexte

Pointeur d’informations de contexte qui a été passé dans le paramètre Context à FsRtlCheckOplock.

Irp

Pointeur vers l’IRP pour l’opération d’E/S.

Valeur de retour

None

Remarques

FsRtlCheckOplock synchronise l’IRP pour une opération d’E/S avec l’état de verrouillage opportuniste actuel d’un fichier selon les conditions suivantes :

  • Si l’opération d’E/S entraîne l’arrêt du verrou opportuniste, l’arrêt de verrouillage opportuniste est lancé.
  • Si l’opération d’E/S ne peut pas continuer tant que le verrou opportuniste n’est pas terminé, FsRtlCheckOplock retourne STATUS_PENDING et appelle la routine de rappel vers laquelle pointe le paramètre PostIrpRoutine .
Si un système de fichiers ou un pilote de filtre utilise des verrous opportunistes, il doit appeler FsRtlCheckOplock à partir de toutes les routines de distribution pour les opérations d’E/S qui peuvent provoquer des interruptions de verrouillage opportunistes. Cette règle s’applique aux types d’opérations d’E/S suivants, car ces opérations peuvent provoquer des blocages opportunistes :

IRP_MJ_CLEANUP

IRP_MJ_CREATE

IRP_MJ_FILE_SYSTEM_CONTROL

IRP_MJ_FLUSH_BUFFERS

IRP_MJ_LOCK_CONTROL

IRP_MJ_READ

IRP_MJ_SET_INFORMATION

IRP_MJ_WRITE

Pour plus d’informations sur les verrous opportunistes, consultez la documentation Microsoft Windows SDK.

Les minifiltres doivent appeler FltCheckOplock au lieu de FsRtlCheckOplock.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Cette routine est disponible dans Microsoft Windows 2000 et versions ultérieures des systèmes d’exploitation Windows.
Plateforme cible Universal
En-tête rxprocs.h (include FltKernel.h, Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Voir aussi

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

FsRtlCurrentBatchOplock

FsRtlInitializeOplock

FsRtlOplockFsctrl

FsRtlOplockIsFastIoPossible

FsRtlUninitializeOplock