FSCTL_OPLOCK_BREAK_ACKNOWLEDGE IOCTL (winioctl.h)

Responde a la notificación de que un bloqueo oportunista exclusivo de un archivo está a punto de romperse. Use esta operación para indicar que el archivo debe recibir un bloqueo oportunista de nivel 2.

Para realizar esta operación, llame a la función DeviceIoControl mediante los parámetros siguientes.

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
);

Comentarios

Esta operación solo la usan las aplicaciones cliente que han solicitado un bloqueo oportunista desde un servidor local. Las aplicaciones cliente que solicitan bloqueos oportunistas de servidores remotos no deben solicitarlos directamente: el redirector de red solicita de forma transparente bloqueos oportunistas para la aplicación.

Para conocer las implicaciones de la E/S superpuesta en esta operación, consulte la sección Comentarios del tema DeviceIoControl .

FSCTL_OPLOCK_BREAK_ACKNOWLEDGE es una respuesta a la notificación de que se ha interrumpido un bloqueo oportunista de nivel 1, lote o filtro en el archivo de una aplicación. Indica al servidor que la aplicación debe recibir un bloqueo oportunista de nivel 2. Si la operación devuelve el código de error ERROR_IO_PENDING, el servidor ha concedido a la aplicación un bloqueo de nivel 2 en el archivo.

Una alternativa al uso de FSCTL_OPLOCK_BREAK_ACKNOWLEDGE es indicar que la aplicación está a punto de cerrar el archivo de todos modos. Use el código de control FSCTL_OPBATCH_ACK_CLOSE_PENDING para esta respuesta.

Otra alternativa es solicitar mantener el archivo abierto, pero perder todo el bloqueo, mediante el código de control FSCTL_OPLOCK_BREAK_ACK_NO_2 .

Se notifica a las aplicaciones que un bloqueo oportunista se interrumpe mediante el miembro hEvent de la estructura SUPERPUESTA asociada al archivo en el que se interrumpe el bloqueo oportunista. Las aplicaciones también pueden usar funciones como GetOverlappedResult y HasOverlappedIoCompleted.

En Windows 8 y Windows Server 2012, este código es compatible con las siguientes tecnologías.

Tecnología Compatible
Protocolo Bloque de mensajes del servidor (SMB) 3.0 No
Conmutación por error transparente (TFO) de SMB 3.0 No
SMB 3.0 con recursos compartidos de archivos de escalabilidad horizontal (SO) No
Sistema de archivos de Volumen compartido de clúster (CsvFS)
Sistema de archivos resistente a errores (ReFS)

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Encabezado winioctl.h (incluye Windows.h)

Consulte también