Funzione FltAcquirePushLockSharedEx (fltkernel.h)

La routine FltAcquirePushLockSharedEx acquisisce il blocco push specificato per l'accesso condiviso dal thread chiamante.

Sintassi

VOID FLTAPI FltAcquirePushLockSharedEx(
  PEX_PUSH_LOCK PushLock,
  ULONG         Flags
);

Parametri

PushLock

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

Flags

Maschera di flag che controllano gli attributi del blocco.

Valore restituito

No.

Osservazioni

La routine FltAcquirePushLockSharedEx acquisisce il blocco push specificato per l'accesso condiviso dal thread chiamante.

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

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. Tuttavia, ogni chiamata a FltAcquirePushLockShared deve essere corrispondente a una chiamata successiva a FltReleasePushLock.

Quando il chiamante riceverà l'accesso condiviso al blocco push specificato dipende dal seguente:

  • Se il blocco push è attualmente non 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 è possibile acquisire il blocco push.

Requisiti

Requisito Valore
Intestazione fltkernel.h
Libreria FltMgr.lib

Vedi anche

FltInitializePushLock