FsRtlOplockBreakH, fonction (ntifs.h)
La routine FsRtlOplockBreakH interrompt CACHE_HANDLE_LEVEL verrous opportunistes (oplocks).
Syntaxe
NTSTATUS FsRtlOplockBreakH(
[in] 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] Oplock
Pointeur de verrou opportuniste 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 FsRtlOplockBreakH. Le paramètre indicateurs de
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.
OPLOCK_FLAG_IGNORE_OPLOCK_KEYS (0x00000008)
Pris en charge dans Windows 7 et versions ultérieures.
Spécifie d’autoriser CACHE_HANDLE_LEVEL sauts d’oplock à continuer indépendamment de la clé oplock.
[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
[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 transmis dans le paramètre context
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 transmis dans le paramètre context
Irp
Pointeur vers l’IRP pour l’opération d’E/S.
Valeur de retour
FsRtlOplockBreakH retourne STATUS_SUCCESS ou un code NTSTATUS approprié, tel que l’un des éléments suivants :
Retourner le code | Description |
---|---|
|
L’IRP a été annulé. STATUS_CANCELLED est un code d’erreur. |
|
L’IRP a été publié dans une file d’attente de travail. STATUS_PENDING est un code de réussite. |
|
Impossible d’accomplir l’arrêt du verrou opportuniste (oplock). L’IRP est une demande de IRP_MJ_CREATE. FILE_OPEN_REQUIRING_OPLOCK a été spécifié dans le paramètre d’options de création pour l’opération, et il existe un oplock accordé. STATUS_CANNOT_BREAK_OPLOCK est un code d’erreur. |
Remarques
Lorsqu’une opération doit interrompre CACHE_HANDLE_LEVEL verrous d’opération, l’opération appelle FsRtlOplockBreakH.
Si l’appelant spécifie l’indicateur de OPLOCK_FLAG_IGNORE_OPLOCK_KEYS dans le paramètre Flags, FsRtlOplockBreakH interrompt toutes les CACHE_HANDLE_LEVEL verrous oplock, quelle que soit la clé oplock. Le comportement par défaut de FsRtlOplockBreakH consiste à briser les verrous dont les clés ne correspondent pas à la clé de l’objet de fichier de l’appelant.
Les minifilters doivent appeler FltOplockBreakH au lieu de FsRtlOplockBreakH.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | La routine FsRtlOplockBreakH 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 |