Função FltAcquirePushLockSharedEx (fltkernel.h)

A rotina FltAcquirePushLockSharedEx adquire o bloqueio de push fornecido para acesso compartilhado pelo thread de chamada.

Sintaxe

VOID FLTAPI FltAcquirePushLockSharedEx(
  PEX_PUSH_LOCK PushLock,
  ULONG         Flags
);

Parâmetros

PushLock

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

Flags

Uma máscara de bits de sinalizadores que controlam os atributos do bloqueio.

Valor retornado

Nenhum.

Comentários

A rotina FltAcquirePushLockSharedEx adquire o bloqueio de push fornecido para acesso compartilhado 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, o sistema será travado. Se o chamador já tiver adquirido o bloqueio de push para acesso compartilhado, ele poderá receber acesso compartilhado novamente. No entanto, cada chamada para FltAcquirePushLockShared deve ser correspondida por uma chamada subsequente para FltReleasePushLock.

Quando o chamador recebe acesso compartilhado ao bloqueio de push determinado depende do seguinte:

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

  • Se o bloqueio de push já tiver sido adquirido para acesso compartilhado por outro thread e nenhum thread estiver aguardando acesso exclusivo ao bloqueio de push, o acesso compartilhado será concedido ao chamador imediatamente. O chamador é colocado em um estado de espera se houver um garçom exclusivo.

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

Requisitos

Requisito Valor
Cabeçalho fltkernel.h
Biblioteca FltMgr.lib

Confira também

FltInitializePushLock