Compartir a través de


FSCTL_OPLOCK_BREAK_ACK_NO_2 IOCTL (winioctl.h)

Responde a la notificación de que un bloqueo oportunista en un archivo está a punto de romperse. Use esta operación para desbloquear todos los bloqueos oportunistas del archivo, pero manténgalo abierto.

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_ACK_NO_2,      // 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 desde 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 .

Cuando reciba una notificación de que un bloqueo oportunista en un archivo está a punto de romperse, use el código de control FSCTL_OPLOCK_BREAK_ACK_NO_2 para indicar al servidor que desea renunciar a los bloqueos oportunistas, pero planee mantener el archivo abierto. Si la operación devuelve el código de error ERROR_IO_PENDING, el servidor ha concedido un bloqueo de nivel 2 en el archivo.

Una alternativa al uso de FSCTL_OPLOCK_BREAK_ACK_NO_2 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, que se usa si el bloqueo que se interrumpe es un bloqueo oportunista exclusivo, es indicar que el archivo debe recibir un bloqueo oportunista de nivel 2 en su lugar. Use el código de control FSCTL_OPLOCK_BREAK_ACKNOWLEDGE para esta respuesta.

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 (incluya Windows.h)

Consulte también