code de contrôle FSCTL_OPLOCK_BREAK_NOTIFY
Le code de contrôle FSCTL_OPLOCK_BREAK_NOTIFY permet à l’application appelante d’attendre l’achèvement d’un arrêt de verrou opportuniste (oplock).
Cette opération n’est utile que pour un arrêt d’opération qui a déjà été initié lorsque le handle de l’appelant a été ouvert. Le handle doit avoir été ouvert avec FILE_COMPLETE_IF_OPLOCKED. Cette opération n’a aucun sens si un oplock est actuellement conservé et que l’arrêt d’opération n’a pas démarré.
Pour traiter ce code de contrôle, un minifiltre appelle FltOplockFsctrl avec les paramètres suivants. Un système de fichiers ou un pilote de filtre hérité appelle FsRtlOplockFsctrl.
Pour plus d’informations sur le verrouillage opportuniste et sur le code de contrôle FSCTL_OPLOCK_BREAK_NOTIFY, consultez la documentation Microsoft Windows SDK.
Paramètres
Oplock : pointeur d’objet oplock opaque pour le fichier.
CallbackData : FltOplockFsctrl uniquement. Structure de données de rappel (FLT_CALLBACK_DATA) pour une demande FSCTL IRP_MJ_FILE_SYSTEM_CONTROL. Le paramètre FsControlCode de l’opération doit être FSCTL_OPLOCK_BREAK_NOTIFY.
Irp : FsRtlOplockFsctrl uniquement. IRP pour une demande FSCTL IRP_MJ_FILE_SYSTEM_CONTROL. Le paramètre FsControlCode de l’opération doit être FSCTL_OPLOCK_BREAK_NOTIFY.
OpenCount : non utilisé avec cette opération ; défini sur zéro.
Bloc d’état
FltOplockFsctrl retourne FLT_PREOP_PENDING si l’arrêt d’opération est en cours et que l’IRP est terminé une fois l’arrêt d’opération terminé. (Dans ce cas, l’IRP peut éventuellement se terminer avec STATUS_SUCCESS ou STATUS_CANCELLED.) Sinon, FltOplockFsctrl retourne FLT_PREOP_COMPLETE.
FsRtlOplockFsctrl retourne l’une des valeurs NTSTATUS suivantes pour cette opération :
Code | Signification |
---|---|
STATUS_SUCCESS | Aucun oplock n’a été tenu par ce handle, ou un oplock est tenu et l’arrêt d’oplock n’a pas démarré. |
STATUS_INVALID_OPLOCK_PROTOCOL | L’IRP a été annulé avant la fin de l’opération de FSCTL_OPLOCK_BREAK_NOTIFY. |
STATUS_PENDING | L’arrêt d’oplock est en cours. L’IRP sera terminé une fois l’arrêt d’opération terminé. L’IRP peut éventuellement se terminer avec STATUS_SUCCESS ou STATUS_CANCELLED. Il s’agit d’un code de réussite. |
Configuration requise
Type d’exigence | Condition requise |
---|---|
En-tête | Ntifs.h (inclure Ntifs.h ou Fltkernel.h) |
Voir aussi
FLT_PARAMETERS pour IRP_MJ_FILE_SYSTEM_CONTROL
FSCTL_OPBATCH_ACK_CLOSE_PENDING