Partager via


FsRtlOplockBreakToNoneEx, fonction (ntifs.h)

La routine FsRtlOplockBreakToNoneEx interrompt immédiatement tous les verrous opportunistes (oplocks) sans tenir compte de toute clé oplock.

Syntaxe

NTSTATUS FsRtlOplockBreakToNoneEx(
  [in, out]      POPLOCK                       Oplock,
  [in]           PIRP                          Irp,
  [in]           ULONG                         Flags,
  [in, optional] PVOID                         Context,
  [in, optional] POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine,
  [in, optional] POPLOCK_FS_PREPOST_IRP        PostIrpRoutine
);

Paramètres

[in, out] Oplock

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

[in] Irp

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

[in] Flags

Masque de bits pour l’opération d’E/S de fichier associée. Un système de fichiers ou un pilote de filtre définit des bits pour spécifier le comportement de FsRtlOplockBreakToNoneEx. Le paramètre indicateurs de contient les options suivantes :

OPLOCK_FLAG_COMPLETE_IF_OPLOCKED (0x00000001)

Spécifie d’autoriser un saut d’oplock à continuer sans bloquer ou en attente l’opération qui a provoqué l’arrêt d’oplock. En règle générale, cet indicateur est utilisé uniquement si l’IRP que le paramètre Irp pointe pour déclarer une opération de IRP_MJ_CREATE.

[in, optional] Context

Pointeur vers lequel les informations de contexte définies par l’appelant doivent être transmises aux routines de rappel vers laquelle pointent les paramètres CompletionRoutine et PostIrpRoutine point.

[in, optional] CompletionRoutine

Pointeur vers une routine de rappel fournie par l’appelant. Si un saut d’oplock 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 s’agit NULL, l’appelant est placé dans un état d’attente jusqu’à ce que l’arrêt d’oplock 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 à FsRtlOplockBreakToNoneEx.

Irp

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

[in, optional] PostIrpRoutine

Pointeur vers une routine de rappel fournie par l’appelant à appeler si l’opération d’E/S doit être pendée. La routine est appelée avant que le package oplock pende l’IRP. 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 à FsRtlOplockBreakToNoneEx.

Irp

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

Valeur de retour

FsRtlOplockBreakToNoneEx retourne STATUS_SUCCESS ou un code NTSTATUS approprié, tel que l’un des éléments suivants :

Retourner le code Description
STATUS_CANCELLED
L’IRP a été annulé. STATUS_CANCELLED est un code d’erreur.
STATUS_PENDING
Une rupture d’oplock est en cours. Par conséquent, l’IRP a été suspendu. STATUS_PENDING est un code de réussite.
STATUS_OPLOCK_BREAK_IN_PROGRESS
Un arrêt de verrou opportuniste (oplock) est en cours. STATUS_OPLOCK_BREAK_IN_PROGRESS est un code de réussite qui FsRtlOplockBreakToNoneEx retourne si l’appelant définit OPLOCK_FLAG_COMPLETE_IF_OPLOCKED dans le paramètre indicateurs de et qu’un oplock doit être rompu.

Remarques

Pour plus d’informations sur les verrous opportunistes, consultez la documentation du Kit de développement logiciel (SDK) Microsoft Windows.

Les minifilters doivent appeler FltOplockBreakToNoneEx au lieu de FsRtlOplockBreakToNoneEx .

Exigences

Exigence Valeur
client minimum pris en charge La routine FsRtlOplockBreakToNoneEx est disponible à partir de Windows 7.
plateforme cible Universel
d’en-tête ntifs.h (include Ntifs.h)
bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= APC_LEVEL

Voir aussi

FltOplockBreakToNoneEx

FsRtlInitializeOplock