FSCTL_OPLOCK_BREAK_ACK_NO_2 IOCTL (winioctl.h)
Responde à notificação de que um bloqueio oportunista em um arquivo está prestes a ser desfeito. Use essa operação para desbloquear todos os bloqueios oportunistas no arquivo, mas mantenha o arquivo aberto.
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_ACK_NO_2, // 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 .
Quando você receber uma notificação de que um bloqueio oportunista em um arquivo está prestes a ser quebrado, use o código de controle FSCTL_OPLOCK_BREAK_ACK_NO_2 para indicar ao servidor que você deseja renunciar a quaisquer bloqueios oportunistas, mas planeje manter o arquivo aberto. Se a operação retornar o código de erro ERROR_IO_PENDING, o servidor concedeu um bloqueio de nível 2 no arquivo.
Uma alternativa ao uso de FSCTL_OPLOCK_BREAK_ACK_NO_2 é 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, usada se o bloqueio que está sendo quebrado for um bloqueio oportunista exclusivo, é indicar que o arquivo deve receber um bloqueio oportunista de nível 2. Use o código de controle FSCTL_OPLOCK_BREAK_ACKNOWLEDGE para essa resposta.
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) |