Função LockFile (fileapi.h)

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

Para especificar opções adicionais, por exemplo, criar um bloqueio compartilhado ou para a operação de bloqueio em caso de 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 manipulador para o arquivo. O identificador de arquivo deve ter sido criado com o direito de acesso GENERIC_READ ou GENERIC_WRITE . Para obter mais informações, consulte Segurança de arquivo e direitos de acesso.

[in] dwFileOffsetLow

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

[in] dwFileOffsetHigh

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

[in] nNumberOfBytesToLockLow

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

[in] nNumberOfBytesToLockHigh

A ordem alta de 32 bits do comprimento do intervalo de bytes a ser bloqueado.

Valor retornado

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

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

Comentários

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 pelo 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 que ele bloqueou quando terminar. 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 Windows Server 2012, essa função é compatível com as tecnologias a seguir.

Tecnologia Com suporte
Protocolo SMB (SMB) 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 Clusterizado (CsvFS) Sim
ReFS (Sistema de Arquivos Resiliente) Sim
 

Exemplos

Para obter um exemplo, consulte Anexando um arquivo a outro arquivo.

Requisitos

   
Cliente mínimo com suporte Windows XP [aplicativos da área de trabalho | aplicativos UWP]
Servidor mínimo com suporte Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho fileapi.h (inclua Windows.h)
Biblioteca Kernel32.lib
DLL Kernel32.dll

Confira também

Como bloquear e desbloquear intervalos de bytes em arquivos

CreateFile

Funções de gerenciamento de arquivos

LockFileEx

UnlockFile