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