Condividi tramite


Macro ExAcquirePushLockShared (wdm.h)

Acquisisce il blocco push specificato per l'accesso condiviso dal thread chiamante.

Sintassi

void ExAcquirePushLockShared(
   Lock
);

Parametri

Lock

Puntatore di blocco opaco. Questo puntatore deve essere stato inizializzato da una chiamata precedente a ExInitializePushLock.

Valore restituito

nessuno

Osservazioni

I blocchi push sono simili alle strutture ERESOURCE (dette anche risorse) in quanto possono essere acquisiti per l'accesso condiviso o esclusivo. Per altre informazioni sui blocchi push, vedere la voce di riferimento per ExInitializePushLock.

A differenza delle strutture ERESOURCE, i blocchi push non possono essere acquisiti in modo ricorsivo. Se il chiamante ha già acquisito il blocco push per l'accesso esclusivo, il sistema si blocca. Se il chiamante ha già acquisito il blocco push per l'accesso condiviso, può ricevere di nuovo l'accesso condiviso.

Per rilasciare il blocco push dopo l'acquisizione, chiamare ExReleasePushLockShared. Ogni chiamata a ExAcquirePushLockShared deve corrispondere a una chiamata successiva a ExReleasePushLockShared.

Quando il chiamante riceverà l'accesso condiviso al blocco push specificato dipende dalle condizioni seguenti:

  • Se il blocco push non viene attualmente generato, l'accesso condiviso viene concesso immediatamente al thread corrente.

  • Se il blocco push è già stato acquisito per l'accesso condiviso da un altro thread e nessun thread è in attesa dell'accesso esclusivo al blocco push, l'accesso condiviso viene concesso immediatamente al chiamante. Il chiamante viene inserito in uno stato di attesa se è presente un waiter esclusivo.

  • Se il blocco push è già stato acquisito per l'accesso esclusivo da un altro thread o se è presente un altro thread in attesa dell'accesso esclusivo, il thread corrente viene inserito in uno stato di attesa fino a quando non sarà possibile acquisire il blocco push.

Prima di chiamare questa routine, il driver deve disabilitare il normale recapito APC del kernel chiamando KeEnterCriticalRegion. Recapito ripristinabile dopo il rilascio del blocco push chiamando KeLeaveCriticalRegion. Per altre informazioni, vedere Disabilitazione delle SCHEDE APN.

Per acquisire un blocco push per l'accesso esclusivo, chiamare ExAcquirePushLockExclusive.

Requisiti

Requisito Valore
Client minimo supportato Windows 10, versione 1809
Intestazione wdm.h

Vedi anche

ExInitializePushLock

KeEnterCriticalRegion

ExReleasePushLockShared

ExAcquirePushLockExclusive