Macro ExAcquirePushLockExclusive (wdm.h)

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

Sintaxe

void ExAcquirePushLockExclusive(
   Lock
);

Parâmetros

Lock

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

Retornar valor

Nenhum

Comentários

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 ExInitializePushLock.

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 travará. Quando o chamador recebe acesso exclusivo ao bloqueio de push determinado, 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.

Antes de chamar essa rotina, o driver deve desabilitar a entrega normal de APC do kernel chamando KeEnterCriticalRegion. Reabilite a entrega depois que o bloqueio de push for liberado chamando KeLeaveCriticalRegion. Para obter mais informações, consulte Desabilitando APCs.

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

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

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10, versão 1809
Cabeçalho wdm.h

Confira também

ExInitializePushLock

KeEnterCriticalRegion

ExReleasePushLockExclusive

ExAcquirePushLockShared