Funzione FltAcquirePushLockExclusive (fltkernel.h)
La macro FltAcquirePushLockExclusive acquisisce il blocco push specificato per l'accesso esclusivo dal thread chiamante.
Sintassi
VOID FLTAPI FltAcquirePushLockExclusive(
[in, out] PEX_PUSH_LOCK PushLock
);
Parametri
[in, out] PushLock
Puntatore di blocco push opaco di tipo PEX_PUSH_LOCK. Questo puntatore deve essere stato inizializzato da una chiamata precedente a FltInitializePushLock.
Valore restituito
No.
Osservazioni
FltAcquirePushLockExclusive acquisisce il blocco push specificato per l'accesso esclusivo dal thread chiamante.
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 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 o condiviso, il thread verrà bloccato.
Quando il chiamante riceverà l'accesso esclusivo al blocco push specificato dipende dagli elementi seguenti:
Se il blocco push non viene 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.
Poiché FltAcquirePushLockExclusive disabilita il normale recapito APC del kernel, non è necessario chiamare KeEnterCriticalRegion o FsRtlEnterFileSystem prima di chiamare FltAcquirePushLockExclusive.
Per rilasciare il blocco push dopo l'acquisizione, chiama FltReleasePushLock. Ogni chiamata a FltAcquirePushLockExclusive deve corrispondere a una chiamata successiva a FltReleasePushLock.
Per acquisire un blocco push per l'accesso condiviso, chiamare FltAcquirePushLockShared.
Per inizializzare un blocco push, chiamare FltInitializePushLock.
Per eliminare un blocco push, chiamare FltDeletePushLock.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Intestazione | fltkernel.h (include Fltkernel.h) |
Libreria | FltMgr.lib |
IRQL | <= APC_LEVEL |