Função FltAcquirePushLockExclusive (fltkernel.h)

A macro FltAcquirePushLockExclusive adquire o bloqueio de push fornecido para acesso exclusivo pelo thread de chamada.

Sintaxe

VOID FLTAPI FltAcquirePushLockExclusive(
  [in, out] PEX_PUSH_LOCK PushLock
);

Parâmetros

[in, out] PushLock

Ponteiro de bloqueio de push opaco do tipo PEX_PUSH_LOCK. Esse ponteiro deve ter sido inicializado por uma chamada anterior para FltInitializePushLock.

Valor retornado

Nenhum.

Comentários

FltAcquirePushLockExclusive adquire o bloqueio de push fornecido para acesso exclusivo pelo thread de chamada.

Os bloqueios por push são semelhantes às estruturas ERESOURCE (também chamadas de recursos), pois podem ser adquiridos para acesso compartilhado ou exclusivo. Para obter mais informações sobre bloqueios de push, consulte a entrada de referência para FltInitializePushLock.

Ao contrário das estruturas ERESOURCE, os bloqueios de push não podem ser adquiridos recursivamente. Se o chamador já tiver adquirido o bloqueio de push para acesso exclusivo ou compartilhado, o thread será travado.

Quando o chamador receberá acesso exclusivo ao bloqueio de push especificado, depende do seguinte:

  • Se o bloqueio de push estiver sem proprietário no momento, o acesso exclusivo será concedido imediatamente ao thread atual.

  • Se o bloqueio de push já tiver sido adquirido para acesso exclusivo ou compartilhado por outro thread, o thread atual será colocado em um estado de espera até que o bloqueio de push possa ser adquirido.

Como FltAcquirePushLockExclusive desabilita a entrega normal de APC do kernel, não é necessário chamar KeEnterCriticalRegion ou FsRtlEnterFileSystem antes de chamar FltAcquirePushLockExclusive.

Para liberar o bloqueio de push depois que ele for adquirido, chame FltReleasePushLock. Cada chamada para FltAcquirePushLockExclusive deve ser correspondida por uma chamada subsequente para FltReleasePushLock.

Para adquirir um bloqueio de push para acesso compartilhado, chame FltAcquirePushLockShared.

Para inicializar um bloqueio de push, chame FltInitializePushLock.

Para excluir um bloqueio de push, chame FltDeletePushLock.

Requisitos

Requisito Valor
Plataforma de Destino Universal
Cabeçalho fltkernel.h (inclua Fltkernel.h)
Biblioteca FltMgr.lib
IRQL <= APC_LEVEL

Confira também

FltAcquirePushLockExclusiveEx

FltAcquirePushLockShared

FltDeletePushLock

FltInitializePushLock

FltReleasePushLock

FsRtlEnterFileSystem

KeEnterCriticalRegion