Partilhar via


Função LockFile (fileapi.h)

Bloqueia o arquivo especificado para acesso exclusivo pelo processo de chamada.

Para especificar opções adicionais, por exemplo, criando um bloqueio compartilhado ou para a operação de bloqueio por falha, use a função LockFileEx.

Sintaxe

BOOL LockFile(
  [in] HANDLE hFile,
  [in] DWORD  dwFileOffsetLow,
  [in] DWORD  dwFileOffsetHigh,
  [in] DWORD  nNumberOfBytesToLockLow,
  [in] DWORD  nNumberOfBytesToLockHigh
);

Parâmetros

[in] hFile

Um identificador para o arquivo. O identificador de arquivo deve ter sido criado com o GENERIC_READ ou GENERIC_WRITE direito de acesso. Para obter mais informações, consulte de Segurança de Arquivos e Direitos de Acesso.

[in] dwFileOffsetLow

Os 32 bits de ordem baixa do deslocamento de bytes inicial no arquivo em que o bloqueio deve começar.

[in] dwFileOffsetHigh

Os 32 bits de alta ordem do deslocamento de bytes inicial no arquivo em que o bloqueio deve começar.

[in] nNumberOfBytesToLockLow

Os 32 bits de ordem baixa do comprimento do intervalo de bytes a serem bloqueados.

[in] nNumberOfBytesToLockHigh

Os 32 bits de ordem alta do comprimento do intervalo de bytes a serem bloqueados.

Valor de retorno

Se a função for bem-sucedida, o valor retornado não será zero (TRUE).

Se a função falhar, o valor retornado será zero (false). Para obter informações de erro estendidas, chame GetLastError.

Observações

Se a chamada para LockFile for concluída de forma síncrona, uma entrada de conclusão poderá não ser enfileirada quando uma porta de conclusão estiver associada ao identificador de arquivo.

A função UnlockFile desbloqueia uma região de arquivo bloqueada por LockFile.

Bloquear uma região de um arquivo fornece aos threads do processo de bloqueio acesso exclusivo à região especificada usando esse identificador de arquivo. Se o identificador de arquivo for herdado por um processo criado pelo processo de bloqueio, o processo filho não receberá acesso à região bloqueada. Se o processo de bloqueio abrir o arquivo uma segunda vez, ele não poderá acessar a região especificada por meio desse segundo identificador até desbloquear a região.

Bloquear uma região de um arquivo não impede a leitura ou gravação de uma exibição de arquivo mapeada.

Você pode bloquear bytes que estão além do final do arquivo atual. Isso é útil para coordenar a adição de registros ao final de um arquivo.

Bloqueios exclusivos não podem sobrepor uma região bloqueada existente de um arquivo. Para obter mais informações, consulte LockFileEx.

Se LockFile não puder bloquear uma região de um arquivo, ele retornará zero imediatamente. Ele não bloqueia. Para emitir uma solicitação de bloqueio de arquivo que será bloqueada até que o bloqueio seja adquirido, use LockFileEx sem o sinalizador LOCKFILE_FAIL_IMMEDIATELY.

Se um processo terminar com uma parte de um arquivo bloqueado ou fechar um arquivo com bloqueios pendentes, os bloqueios serão desbloqueados pelo sistema operacional. No entanto, o tempo necessário para o sistema operacional desbloquear esses bloqueios depende dos recursos do sistema disponíveis. Portanto, é recomendável que o processo desbloqueie explicitamente todos os arquivos bloqueados quando ele for encerrado. Se isso não for feito, o acesso a esses arquivos poderá ser negado se o sistema operacional ainda não os tiver desbloqueado.

No Windows 8 e no Windows Server 2012, essa função é compatível com as tecnologias a seguir.

Tecnologia Suportado
Protocolo SMB (Bloco de Mensagens do Servidor) 3.0 Sim
TFO (Failover Transparente) do SMB 3.0 Sim
SMB 3.0 com Compartilhamentos de Arquivos de Expansão (SO) Sim
Sistema de Arquivos de Volume Compartilhado de Cluster (CsvFS) Sim
ReFS (Sistema de Arquivos Resiliente) Sim
 

Exemplos

Para obter um exemplo, consulte anexando um arquivo a outrode arquivo.

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows XP [aplicativos da área de trabalho | Aplicativos UWP]
servidor com suporte mínimo Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP]
da Plataforma de Destino Windows
cabeçalho fileapi.h (inclua Windows.h)
biblioteca Kernel32.lib
de DLL Kernel32.dll

Consulte também

bloqueio e desbloqueio de intervalos de bytes em arquivos

CreateFile

Funções de gerenciamento de arquivos

LockFileEx

UnlockFile