Função ZwLockFile (ntifs.h)

A rotina ZwLockFile solicita um bloqueio de intervalo de bytes para o arquivo especificado.

Sintaxe

NTSYSAPI NTSTATUS ZwLockFile(
  [in]           HANDLE           FileHandle,
  [in, optional] HANDLE           Event,
  [in, optional] PIO_APC_ROUTINE  ApcRoutine,
  [in, optional] PVOID            ApcContext,
  [out]          PIO_STATUS_BLOCK IoStatusBlock,
  [in]           PLARGE_INTEGER   ByteOffset,
  [in]           PLARGE_INTEGER   Length,
  [in]           ULONG            Key,
  [in]           BOOLEAN          FailImmediately,
  [in]           BOOLEAN          ExclusiveLock
);

Parâmetros

[in] FileHandle

Um identificador para o arquivo no qual um bloqueio de intervalo de bytes é solicitado.

[in, optional] Event

Um identificador para um evento criado pelo chamador. Se não for NULL, o chamador será colocado em um estado de espera até que a operação seja bem-sucedida, momento em que o evento é definido no estado Sinalizado.

[in, optional] ApcRoutine

Um ponteiro para uma rotina de APC fornecida pelo chamador que é executada após a conclusão da operação. Pode ser NULL.

[in, optional] ApcContext

Um ponteiro para um contexto especificado pelo chamador para a rotina APC. Esse valor é passado para a rotina APC quando ele é executado. Pode ser NULL.

[out] IoStatusBlock

Um ponteiro para uma estrutura IO_STATUS_BLOCK que contém o status final.

[in] ByteOffset

Um ponteiro para uma variável que especifica o deslocamento de bytes inicial do intervalo a ser bloqueado.

[in] Length

Um ponteiro para uma variável que especifica o comprimento em bytes do intervalo a ser bloqueado.

[in] Key

Um valor atribuído pelo chamador usado para descrever grupos de bloqueios relacionados. Esse valor deve ser definido como zero.

[in] FailImmediately

Se TRUE, retornará imediatamente se o arquivo não puder ser bloqueado. Se FALSE, aguarde até que a solicitação de bloqueio seja concedida.

[in] ExclusiveLock

Se TRUE, o bloqueio de intervalo de bytes será exclusivo; caso contrário, bloqueio compartilhado.

Retornar valor

A rotina ZwLockFile retorna STATUS_SUCCESS ou um valor NTSTATUS de erro apropriado, como um dos seguintes.

Código do erro Descrição
STATUS_INSUFFICIENT_RESOURCES Existem recursos insuficientes para conceder o bloqueio de intervalo de bytes para o arquivo especificado.
STATUS_LOCK_NOT_GRANTED O bloqueio de intervalo de bytes não foi concedido para o arquivo especificado.

Comentários

Os chamadores de ZwLockFile devem estar em execução em IRQL = PASSIVE_LEVEL e com APCs de kernel especiais habilitadas.

Observação

Se a chamada para a função ZwLockFile ocorrer no modo de usuário, você deverá usar o nome "NtLockFile" em vez de "ZwLockFile".

Para chamadas de drivers de modo kernel, as versões NtXxx e ZwXxx de uma rotina do Windows Native System Services podem se comportar de forma diferente na maneira como lidam e interpretam parâmetros de entrada. Para obter mais informações sobre a relação entre as versões NtXxx e ZwXxx de uma rotina, consulte Using Nt and Zw Versions of the Native System Services Routines.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 7
Plataforma de Destino Universal
Cabeçalho ntifs.h (include Ntifs.h, FltKernel.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL (consulte a seção Comentários)
Regras de conformidade da DDI HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

Confira também

Usando versões Nt e Zw das rotinas de serviços do sistema nativo

ZwUnlockFile