Compartir a través de


FSCTL_REQUEST_BATCH_OPLOCK IOCTL (winioctl.h)

Solicita un bloqueo oportunista por lotes en un archivo.

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

BOOL b = DeviceIoControl(
  (HANDLE) hDevice,              // handle to file
  FSCTL_REQUEST_BATCH_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 (oplock) 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_BATCH_OPLOCK para solicitar un bloqueo oportunista por lotes en un archivo. Un sistema de archivos de cliente puede almacenar en caché los datos de lectura, escribir datos y controlar los datos localmente siempre que se mantenga el bloqueo de nivel 1.

El propietario del interbloqueo por lotes debe reconocer una interrupción de interbloqueo (consulte Bloqueos oportunistas importantes) antes de que cualquier operación incompatible con un interbloqueo por lotes 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_BATCH_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