Condividi tramite


Macro ExAcquirePushLockExclusive (wdm.h)

Acquisisce il blocco push specificato per l'accesso esclusivo tramite il thread chiamante.

Sintassi

void ExAcquirePushLockExclusive(
   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 o condiviso, il thread si blocca. Quando al chiamante viene concesso l'accesso esclusivo al blocco push specificato, dipende dagli elementi seguenti:

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

  • Se il blocco push è già stato acquisito per l'accesso esclusivo o condiviso da un altro thread, 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 rilasciare il blocco push dopo l'acquisizione, chiamare ExReleasePushLockExclusive. Ogni chiamata a ExAcquirePushLockExclusive deve essere confrontata con una chiamata successiva a ExReleasePushLockExclusive.

Per acquisire un blocco push per l'accesso condiviso, chiamare ExAcquirePushLockShared.

Fabbisogno

Requisito Valore
client minimo supportato Windows 10, versione 1809
intestazione wdm.h

Vedere anche

ExInitializePushLock

KeEnterCriticalRegion

exReleasePushLockExclusive

exAcquirePushLockShared