FsRtlCheckUpperOplock, fonction (ntifs.h)
La routine FsRtlCheckUpperOplock fournit une vérification de verrou opportuniste (oplock) dans les systèmes de fichiers secondaires ou en couches lorsque les oplocks qu’ils contiennent contiennent l’état de modification. Les systèmes de fichiers secondaires, tels que les redirecteurs réseau et les services de fichiers de clustering, appellent FsRtlCheckUpperOplock lorsqu’un oplock conservé dans un système de fichiers inférieur par le système de fichiers secondaire change d’état. Une modification d’état peut se produire par un arrêt ou une mise à niveau. FsRtlCheckUpperOplock brisera l’oplock du système de fichiers supérieur, si nécessaire, pour confirmer le nouvel état d’oplock inférieur. L’appelant peut également fournir des rappels facultatifs pour les notifications d’accusé de réception d’arrêt et l’état en attente.
Syntaxe
NTSTATUS FsRtlCheckUpperOplock(
[in] POPLOCK Oplock,
[in] ULONG NewLowerOplockState,
[in, optional] PVOID CompletionRoutineContext,
[in, optional] POPLOCK_WAIT_COMPLETE_ROUTINE CompletionRoutine,
POPLOCK_FS_PREPOST_IRP PrePendRoutine,
[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 à FsRtlInitializeOplock.
[in] NewLowerOplockState
Valeur représentant l’oplock demandé conservé dans un système de fichiers inférieur par un système de fichiers secondaire. Il s’agit d’une combinaison OR au niveau du bit des éléments suivants :
Valeur | Signification |
---|---|
OPLOCK_LEVEL_CACHE_READ | Indique un type de lecture oplock (R). |
OPLOCK_LEVEL_CACHE_WRITE | Indique un type d’écriture oplock (W). |
OPLOCK_LEVEL_CACHE_HANDLE | Indique un type de handle d’oplock (H). |
[in, optional] CompletionRoutineContext
Pointeur vers lequel les informations de contexte définies par l’appelant doivent être transmises aux routines de rappel auxquelles pointent les paramètres CompletionRoutine et PrePendIrpRou tine.
[in, optional] CompletionRoutine
Pointeur vers une routine de rappel fournie par l’appelant. Si un saut de 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 s’agit de NULL, l’appelant est placé dans un état d’attente jusqu’à ce que le saut de verrou opportuniste soit terminé.
Les descriptions des déclarations et des paramètres de cette routine sont les suivantes :
typedef VOID
(*POPLOCK_WAIT_COMPLETE_ROUTINE) (
_In_ PVOID Context,
_In_opt_ PIRP Irp
);
Paramètre | Description |
---|---|
contexte | Pointeur d’informations de contexte transmis dans le paramètre |
Irp | Pointeur facultatif vers l’IRP pour l’opération d’E/S. FsRtlCheckUpperOplock définissez toujours cette valeur sur NULL. |
PrePendRoutine
Pointeur vers une routine de rappel fournie par l’appelant à appeler si FsRtlCheckUpperOplock retourne STATUS_PENDING. Ce paramètre est facultatif et peut être NULL.
Les descriptions des déclarations et des paramètres de cette routine sont les suivantes :
typedef VOID
(*POPLOCK_FS_PREPOST_IRP) (
_In_ PVOID Context,
_in_opt_ PIRP Irp
);
Paramètre | Description |
---|---|
contexte | Pointeur d’informations de contexte transmis dans le paramètre |
Irp | Pointeur facultatif vers l’IRP pour l’opération d’E/S. FsRtlCheckUpperOplock définissez toujours cette valeur sur NULL. |
[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 FsRtlCheckUpperOplock. Le paramètre indicateurs de
Valeur | Signification |
---|---|
OPLOCK_UPPER_FLAG_CHECK_NO_BREAK (0x00010000) | Retourne STATUS_CANNOT_BREAK_OPLOCK si la valeur de NewLowerOplockState entraîne un saut d’oplock. |
OPLOCK_UPPER_FLAG_NOTIFY_REFRESH_READ (0x00020000) | Arrêtez uniquement les verrous supérieurs en lecture (R) et informez les titulaires R qu’ils peuvent à nouveau demander R. Tous les autres contrôles d’oplock supérieur qu’il retourne STATUS_CANNOT_BREAK_OPLOCK. |
Valeur de retour
FsRtlCheckUpperOplock retourne un code NTSTATUS approprié, tel que l’un des éléments suivants :
Retourner le code | Description |
---|---|
STATUS_SUCCESS | Un saut d’oplock n’est pas obligatoire ou l’arrêt a été reconnu. Si CompletionRoutine a la valeur NULL, FsRtlCheckUpperOplock blocs pendant que le saut d’oplock est traité plutôt que de retourner STATUS_PENDING. |
STATUS_CANNOT_BREAK_OPLOCK | Impossible d’accomplir le saut d’oplock. Consultez indicateurs pour connaître les conditions qui limitent un saut. |
STATUS_PENDING | Une rupture de verrou opportuniste est en cours. Si elle est fournie, PrePendIrpRoutine est appelée comme notification de l’opération en attente. CompletionRoutine est appelée lorsque le saut d’oplock est terminé. STATUS_PENDING est un code de réussite. |
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 8.1 |
plateforme cible | Universel |
d’en-tête | ntifs.h (include Ntifs.h) |
bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | IRQL <= APC_LEVEL |