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 nuovamente 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 dagli elementi 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 cameriere 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. Riabilitare il recapito dopo il rilascio del blocco push chiamando KeLeaveCriticalRegion. Per altre informazioni, vedere La disabilitazione delle API.
Per acquisire un blocco push per l'accesso esclusivo, chiamare ExAcquirePushLockExclusive.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 10, versione 1809 |
intestazione | wdm.h |