Condividi tramite


Funzione ExInitializePushLock (wdm.h)

Inizializza una variabile di blocco push.

Sintassi

void ExInitializePushLock(
  [Out] PEX_PUSH_LOCK PushLock
);

Parametri

[Out] PushLock

Puntatore alla risorsa di archiviazione fornita dal chiamante, che deve essere almeno il valore sizeof(EX_PUSH_LOCK), affinché la variabile di blocco push venga inizializzata. Lo spazio di archiviazione deve essere allineato a 4 byte su piattaforme a 32 bit e allineato a 8 byte su piattaforme a 64 bit.

Valore restituito

nessuno

Osservazioni

I blocchi push sono simili alle strutture ERESOURCE (dette anche "risorse") nei modi seguenti:

  • I blocchi push possono essere usati per la sincronizzazione da un set di thread.
  • I blocchi push possono essere acquisiti per l'accesso condiviso o esclusivo.
  • Anche se il chiamante fornisce l'archiviazione per la variabile di blocco push, la struttura EX_PUSH_LOCK è opaca, ovvero i relativi membri sono riservati per l'uso del sistema.

I blocchi push offrono i vantaggi seguenti rispetto alle strutture ERESOURCE:

  • Quando i blocchi push vengono acquisiti principalmente per l'accesso condiviso, sono più efficienti delle strutture ERESOURCE.
  • Lo spazio di archiviazione per i blocchi push può essere allocato da un pool di paging o non di paging. Le strutture ERESOURCE devono essere allocate solo da pool non di paging.
  • EX_PUSH_LOCK strutture sono molto più piccole delle strutture ERESOURCE.

I blocchi push presentano gli svantaggi seguenti rispetto alle strutture ERESOURCE:

  • L'algoritmo per concedere l'accesso esclusivo non è equo a tutti i thread. Se esiste un elevato livello di contesa di blocco esclusivo, non esiste alcuna garanzia sull'ordine in cui ai thread verrà concesso l'accesso esclusivo.
  • Non esistono routine di supporto per determinare il proprietario corrente di un blocco push. Gli utenti delle strutture ERESOURCE possono chiamare routine come ExIsResourceAcquiredExclusiveLite per determinare se il thread corrente ha accesso esclusivo alla risorsa.
  • I blocchi push non possono essere acquisiti in modo ricorsivo.

Per acquisire o rilasciare un blocco push per l'accesso esclusivo, chiamare rispettivamente ExAcquirePushLockExclusive o ExReleasePushLockExclusive.

Per acquisire o rilasciare un blocco push per l'accesso condiviso, chiamare rispettivamente ExAcquirePushLockShared o ExReleasePushLockShared.

Requisiti

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