Compartir a través de


FSCTL_REQUEST_FILTER_OPLOCK IOCTL (winioctl.h)

Solicita un bloqueo oportunista de filtro 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_FILTER_OPLOCK,      // 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_FILTER_OPLOCK para solicitar un bloqueo oportunista de filtro en un archivo. Un sistema de archivos cliente puede almacenar en caché los datos de lectura y controlar los datos localmente siempre y cuando se mantenga el bloqueo de filtro, pero solo un cliente puede contener el bloqueo a la vez.

El propietario del interbloqueo de filtro debe reconocer una interrupción de oplock (consulte Bloqueos oportunistas importantes) antes de que cualquier operación que no sea compatible con un interbloqueo de filtro 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 de FSCTL_REQUEST_FILTER_OPLOCK 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

   
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