Partager via


FSCTL_OPLOCK_BREAK_ACKNOWLEDGE IOCTL (winioctl.h)

Répond à la notification indiquant qu’un verrou opportuniste exclusif sur un fichier est sur le point d’être relâché. Utilisez cette opération pour indiquer que le fichier doit recevoir un verrou opportuniste de niveau 2.

Pour effectuer cette opération, appelez la fonction DeviceIoControl à l’aide des paramètres suivants.

BOOL DeviceIoControl(
  (HANDLE) hDevice,                 // handle to file
  FSCTL_OPLOCK_BREAK_ACKNOWLEDGE,   // dwIoControlCode
  NULL,                             // lpInBuffer
  0,                                // nInBufferSize
  NULL,                             // lpOutBuffer
  0,                                // nOutBufferSize
  (LPDWORD) lpBytesReturned,        // number of bytes returned
  (LPOVERLAPPED) lpOverlapped       // OVERLAPPED structure
);

Remarques

Cette opération est utilisée uniquement par les applications clientes qui ont demandé un verrou opportuniste à un serveur local. Les applications clientes qui demandent des verrous opportunistes à partir de serveurs distants ne doivent pas les demander directement . Le redirecteur réseau demande en toute transparence des verrous opportunistes pour l’application.

Pour connaître les implications des E/S qui se chevauchent sur cette opération, consultez la section Remarques de la rubrique DeviceIoControl .

FSCTL_OPLOCK_BREAK_ACKNOWLEDGE est une réponse à une notification indiquant qu’un verrou opportuniste de niveau 1, de lot ou de filtre sur le fichier d’une application a été rompu. Il indique au serveur que l’application doit recevoir un verrou opportuniste de niveau 2. Si l’opération retourne le code d’erreur ERROR_IO_PENDING, le serveur a accordé à l’application un verrou de niveau 2 sur le fichier.

Une alternative à l’utilisation de FSCTL_OPLOCK_BREAK_ACKNOWLEDGE consiste à indiquer que l’application est sur le point de fermer le fichier de toute façon. Utilisez le code de contrôle FSCTL_OPBATCH_ACK_CLOSE_PENDING pour cette réponse.

Une autre alternative consiste à demander à conserver le fichier ouvert, mais à perdre tout verrouillage, au moyen du code de contrôle FSCTL_OPLOCK_BREAK_ACK_NO_2 .

Les applications sont averties qu’un verrou opportuniste est rompu à l’aide du membre hEvent de la structure OVERLAPPED associée au fichier sur lequel le verrou opportuniste est rompu. Les applications peuvent également utiliser des fonctions telles que GetOverlappedResult et HasOverlappedIoCompleted.

Dans Windows 8 et Windows Server 2012, ce code est pris en charge par les technologies suivantes.

Technologie Prise en charge
Protocole Server Message Block (SMB) 3.0 No
Basculement transparent SMB 3.0 (TFO) No
SMB 3.0 avec partages de fichiers avec montée en puissance parallèle (SO) No
Système de fichiers du volume partagé de cluster (CsvFS) Oui
Système de fichiers résilient (ReFS) Oui

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
En-tête winioctl.h (inclure Windows.h)

Voir aussi