Partager via


FltOplockBreakToNoneEx, fonction (fltkernel.h)

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

Syntaxe

FLT_PREOP_CALLBACK_STATUS FLTAPI FltOplockBreakToNoneEx(
  [in]           POPLOCK                                 Oplock,
  [in]           PFLT_CALLBACK_DATA                      CallbackData,
  [in]           ULONG                                   Flags,
  [in, optional] PVOID                                   Context,
  [in, optional] PFLTOPLOCK_WAIT_COMPLETE_ROUTINE        WaitCompletionRoutine,
  [in, optional] PFLTOPLOCK_PREPOST_CALLBACKDATA_ROUTINE PrePostCallbackDataRoutine
);

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 des données de rappel (FLT_CALLBACK_DATA) pour l’opération d’E/S.

[in] Flags

Masque de bits pour l’opération d’E/S de fichier associée. Un pilote minifilter définit des bits pour spécifier le comportement de FltOplockBreakToNoneEx. Le paramètre indicateurs de contient les options suivantes :

OPLOCK_FLAG_COMPLETE_IF_OPLOCKED (0x00000001)

Permet à un saut d’oplock de 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’opération d’E/S représentée par les données de rappel que le paramètre CallbackData pointe vers est 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 auxquelles les paramètres WaitCompletionRoutine et PrePostCallbackDataRoutine pointent.

[in, optional] WaitCompletionRoutine

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
(*PFLTOPLOCK_WAIT_COMPLETE_ROUTINE) (
    __in PFLT_CALLBACK_DATA CallbackData,
 __in_opt PVOID Context
      );

Cette routine a les paramètres suivants :

CallbackData

Pointeur vers la structure de données de rappel pour l’opération d’E/S.

Contexte

Pointeur d’informations de contexte transmis dans le paramètre Context à FltOplockBreakToNoneEx.

[in, optional] PrePostCallbackDataRoutine

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
(*PFLTOPLOCK_PREPOST_CALLBACKDATA_ROUTINE) (
    __in PFLT_CALLBACK_DATA CallbackData,
 __in_opt PVOID Context
      );

Cette routine a les paramètres suivants :

CallbackData

Pointeur vers la structure de données de rappel pour l’opération d’E/S.

Contexte

Pointeur d’informations de contexte transmis dans le paramètre Context à FltOplockBreakToNoneEx.

Valeur de retour

FltOplockBreakToNoneEx retourne l’un des codes FLT_PREOP_CALLBACK_STATUS suivants :

Retourner le code Description
FLT_PREOP_COMPLETE
FltOplockBreakToNoneEx rencontré un échec d’allocation de pool, ou un appel à la fonction FsRtlOplockBreakToNoneEx a renvoyé une erreur. FltOplockBreakToNoneEx définit le code d’erreur dans le membre Status de la structure IO_STATUS_BLOCK. La structure IO_STATUS_BLOCK est spécifiée dans le membre IoStatus de la structure de données de rappel FLT_CALLBACK_DATA. Le paramètre CallbackData pointe vers cette FLT_CALLBACK_DATA.
FLT_PREOP_PENDING
Un arrêt d’oplock a été lancé, ce qui a provoqué la publication de l’opération d’E/S dans une file d’attente de travail. L’opération d’E/S est représentée par les données de rappel auxquelles pointe le paramètre CallbackData.
FLT_PREOP_SUCCESS_WITH_CALLBACK
Les données de rappel auxquelles le CallbackData points de paramètre à ne pas avoir été suspendus et l’opération d’E/S a été effectuée immédiatement. N’oubliez pas que si l’appelant a spécifié OPLOCK_FLAG_COMPLETE_IF_OPLOCKED dans le paramètre Indicateurs, un saut d’oplock peut être en cours même si l’opération d’E/S n’a pas été bloquée. Pour déterminer s’il s’agit de la situation, l’appelant doit vérifier STATUS_OPLOCK_BREAK_IN_PROGRESS dans le membre Status de la structure IO_STATUS_BLOCK. La structure IO_STATUS_BLOCK est spécifiée dans le membre IoStatus de la structure de données de rappel FLT_CALLBACK_DATA.

Remarques

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

Exigences

Exigence Valeur
client minimum pris en charge La routine FltOplockBreakToNoneEx est disponible à partir de Windows 7.
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

FltInitializeOplock

FsRtlOplockBreakToNoneEx

IO_STATUS_BLOCK