FSCTL_REQUEST_OPLOCK_LEVEL_1 IOCTL (winioctl.h)

Solicita un bloqueo oportunista de nivel 1 en un archivo.

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

BOOL DeviceIoControl(
  (HANDLE) hDevice,                 // handle to file
  FSCTL_REQUEST_OPLOCK_LEVEL_1,     // 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 solicitan 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. Un intento de usar esta operación para solicitar bloqueos oportunistas de servidores remotos provocará que se deniegue la solicitud.

Si se desea un nuevo tipo de interbloqueo, se debe cerrar el identificador y se debe volver a abrir un nuevo identificador mediante CreateFile y se debe llamar a DeviceIoControl en el nuevo identificador con el código de control de FSCTL_REQUEST_OPLOCK deseado_XXX. Para solicitar un interbloqueo en un identificador que puede cambiar el tipo de interbloqueo en su lugar (el identificador no tiene que cerrarse y volver a abrirse), use el código de control FSCTL_REQUEST_OPLOCK .

Use FSCTL_REQUEST_OPLOCK_LEVEL_1 para solicitar un bloqueo oportunista de nivel 1 en un archivo. Un sistema de archivos cliente puede almacenar en caché tanto los datos de lectura como los datos de escritura localmente siempre que se mantenga el bloqueo de nivel 1.

El propietario de oplock de nivel 1 debe reconocer una interrupción de interbloqueo de operación (consulte Bloqueos oportunistas de interrupción) antes de que cualquier operación incompatible con un interbloqueo de nivel 1 pueda pasar por otro identificador. Una vez interrumpido el bloqueo, se notifica al redirector de red que no tiene en cuenta los datos almacenados en caché del archivo.

Para obtener más información, vea Tipos de bloqueos oportunistas.

Para obtener una comparación de los distintos códigos de control de interbloqueo, consulte FSCTL_REQUEST_OPLOCK.

Se produce un error en un código de control FSCTL_REQUEST_OPLOCK_LEVEL_1 si el archivo se abre en modo no superpuesto (sincrónico).

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

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