Compartilhar via


FSCTL_OPLOCK_BREAK_ACKNOWLEDGE IOCTL (winioctl.h)

Responde à notificação de que um bloqueio oportunista exclusivo em um arquivo está prestes a ser desfeito. Use essa operação para indicar que o arquivo deve receber um bloqueio oportunista de nível 2.

Para executar essa operação, chame a função DeviceIoControl usando os parâmetros a seguir.

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

Comentários

Essa operação é usada apenas por aplicativos cliente que solicitaram um bloqueio oportunista de um servidor local. Os aplicativos cliente que solicitam bloqueios oportunistas de servidores remotos não devem solicitá-los diretamente— o redirecionador de rede solicita de forma transparente bloqueios oportunistas para o aplicativo.

Para obter as implicações de E/S sobrepostas nessa operação, consulte a seção Comentários do tópico DeviceIoControl .

FSCTL_OPLOCK_BREAK_ACKNOWLEDGE é uma resposta à notificação de que um bloqueio oportunista de nível 1, lote ou filtro no arquivo de um aplicativo foi interrompido. Indica ao servidor que o aplicativo deve receber um bloqueio oportunista de nível 2. Se a operação retornar o código de erro ERROR_IO_PENDING, o servidor concedeu ao aplicativo um bloqueio de nível 2 no arquivo.

Uma alternativa ao uso de FSCTL_OPLOCK_BREAK_ACKNOWLEDGE é indicar que o aplicativo está prestes a fechar o arquivo de qualquer maneira. Use o código de controle FSCTL_OPBATCH_ACK_CLOSE_PENDING para essa resposta.

Outra alternativa é solicitar para manter o arquivo aberto, mas perder todo o bloqueio, por meio do código de controle FSCTL_OPLOCK_BREAK_ACK_NO_2 .

Os aplicativos são notificados de que um bloqueio oportunista é interrompido usando o membro hEvent da estrutura OVERLAPPED associada ao arquivo no qual o bloqueio oportunista está quebrado. Os aplicativos também podem usar funções como GetOverlappedResult e HasOverlappedIoCompleted.

Em Windows 8 e Windows Server 2012, esse código é compatível com as tecnologias a seguir.

Tecnologia Com suporte
Protocolo SMB (SMB) 3.0 No
TFO (Failover transparente) do SMB 3.0 No
SMB 3.0 com compartilhamentos de arquivos de expansão (SO) No
Sistema de arquivos de Volume Compartilhado Clusterizado (CsvFS) Sim
ReFS (Sistema de Arquivos Resiliente) Sim

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Cabeçalho winioctl.h (inclua Windows.h)

Confira também