Partager via


Fonction FsRtlUpperOplockFsctrl (ntifs.h)

La routine FsRtlUpperOplockFsctrl traite les demandes de verrouillage opportuniste (oplock) et les accusés de réception pour les systèmes de fichiers secondaires ou en couches. Le système de fichiers supérieur envoie l’état du verrou d’opération contenu dans le système de fichiers inférieur. FsRtlUpperOplockFsctrl détermine s’il faut accorder ou refuser le verrouillage du système de fichiers supérieur.

Syntaxe

NTSTATUS FsRtlUpperOplockFsctrl(
  [in] POPLOCK Oplock,
  [in] PIRP    Irp,
  [in] ULONG   OpenCount,
  [in] ULONG   LowerOplockState,
  [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] Irp

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

[in] OpenCount

Nombre de handles utilisateur pour le fichier, si un oplock exclusif est demandé. La définition d’une valeur différente de zéro pour une demande de verrouillage oplock de niveau 2, R ou RH indique qu’il existe des verrous de plage d’octets sur le fichier. Pour plus d’informations sur les types d’oplocks, consultez Types d’oplocks.

[in] LowerOplockState

Valeur du niveau d’oplock inférieur détenu par le système de fichiers supérieur. Il s’agit d’une combinaison OR au niveau du bit des éléments suivants :

Valeur Signification
OPLOCK_LEVEL_CACHE_READ Indique un type oplock Read (R).
OPLOCK_LEVEL_CACHE_WRITE Indique un type d’écriture oplock (W).
OPLOCK_LEVEL_CACHE_HANDLE Indique un type de handle oplock (H).

[in] Flags

Masque de bits pour les opérations oplock associées. Un système de fichiers ou un pilote de filtre définit des bits pour spécifier le comportement de FsRtlUpperOplockFsctrl. Le paramètre Flags a les options suivantes :

Valeur Signification
OPLOCK_FSCTRL_FLAG_ALL_KEYS_MATCH (0x00000001) Le système de fichiers a vérifié que toutes les clés oplock sur les descripteurs actuellement ouverts correspondent. En spécifiant cet indicateur, vous autorisez le package oplock à accorder un oplock de niveau RW ou RWH lorsqu’il existe plusieurs handles ouverts au fichier.

Valeur retournée

FsRtlUpperOplockFsctrl retourne l’une des valeurs NTSTATUS suivantes :

Code de retour Description
STATUS_SUCCESS Pour une demande IRP_MJ_CREATE, STATUS_SUCCESS indique que le verrou opportuniste de filtre (oplock) demandé a été accordé. Pour une opération FSCTL, la signification de STATUS_SUCCESS dépend du code FSCTL. Pour plus d’informations, consultez la section Notes dans FsRtlOplockFsctrlEx.
STATUS_CANCELLED L’opération d’E/S a été annulée. STATUS_CANCELLED est un code d’erreur.
STATUS_INVALID_PARAMETER Le code FSCTL de l’opération d’E/S n’était pas une demande de verrouillage de valeurs valide. Les types de requête valides sont répertoriés dans la section Notes de FsRtlOplockFsctrlEx. STATUS_INVALID_PARAMETER est un code d’erreur.
STATUS_OPLOCK_NOT_GRANTED L’oplock n’a pas pu être accordé. Le niveau du verrouillage du système de fichiers supérieur demandé n’est pas valide pour le verrouillage d’opération accordé pour le système de fichiers inférieur. STATUS_OPLOCK_NOT_GRANTED est un code d’erreur.
STATUS_PENDING Utilisé uniquement pour les opérations FSCTL. La signification de STATUS_PENDING dépend du code FSCTL. Pour plus d’informations, consultez la section Notes dans FsRtlOplockFsctrlEx. STATUS_PENDING est un code de réussite.
STATUS_CANNOT_GRANT_REQUESTED_OPLOCK Un accusé de réception oplock pour un nouveau verrou d’opération n’est pas autorisé. Le niveau de verrouillage du système de fichiers supérieur n’est pas valide pour le verrouillage du système de fichiers inférieur.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 8.1
Plateforme cible Universal
En-tête ntifs.h (include Ntifs.h)
Bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <= APC_LEVEL

Voir aussi

FsRtlCheckUpperOplock

FsRtlOplockFsctrlEx