Funzione FltAcquireResourceShared (fltkernel.h)
La routine FltAcquireResourceShared acquisisce la risorsa specificata per l'accesso condiviso dal thread chiamante.
Sintassi
VOID FLTAPI FltAcquireResourceShared(
[in/out] PERESOURCE Resource
);
Parametri
[in/out] Resource
Puntatore a una struttura ERESOURCE opaca. Questa struttura deve essere allocata dal chiamante dal pool non di paging e inizializzata chiamando ExInitializeResourceLite o ExReinitializeResourceLite.
Valore restituito
No.
Osservazioni
La routine FltAcquireResourceShared acquisisce la risorsa specificata per l'accesso condiviso dal thread chiamante.
Il fatto che il chiamante abbia accesso condiviso alla risorsa specificata dipende dal seguente:
Se la risorsa non è attualmente attivata, l'accesso condiviso viene concesso immediatamente al thread corrente.
Se il chiamante ha già acquisito la risorsa (per l'accesso condiviso o esclusivo), al thread corrente viene concesso lo stesso tipo di accesso in modo ricorsivo. Si noti che l'esecuzione di questa chiamata non converte la proprietà esclusiva di una determinata risorsa in condivisa.
Se la risorsa è attualmente di proprietà come condivisa da un altro thread e nessun thread è in attesa dell'accesso esclusivo alla risorsa, l'accesso condiviso viene concesso immediatamente al chiamante. Il chiamante viene inserito in uno stato di attesa se è presente un waiter esclusivo.
Se la risorsa è attualmente di proprietà esclusiva da un altro thread o se è presente un altro thread in attesa di accesso esclusivo e il chiamante non dispone già dell'accesso condiviso alla risorsa, il thread corrente viene inserito in uno stato di attesa fino a quando la risorsa non può essere acquisita.
FltAcquireResourceShared è un wrapper per ExAcquireResourceSharedLite che disabilita il normale recapito APC del kernel.
Poiché FltAcquireResourceShared disabilita il normale recapito APC del kernel, non è necessario chiamare KeEnterCriticalRegion o FsRtlEnterFileSystem prima di chiamare FltAcquireResourceShared.
Per rilasciare la risorsa dopo l'acquisizione, chiamare FltReleaseResource. Ogni chiamata riuscita a FltAcquireResourceShared deve corrispondere a una chiamata successiva a FltReleaseResource.
Per acquisire una risorsa per l'accesso esclusivo, chiamare FltAcquireResourceExclusive.
Per eliminare una risorsa dall'elenco di risorse del sistema, chiamare ExDeleteResourceLite.
Per inizializzare una risorsa per il riutilizzo, chiamare ExReinitializeResourceLite.
Per altre informazioni sulle strutture ERESOURCE, vedere Introduzione alle routine ERESOURCE.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP SP2 |
Server minimo supportato | Windows Server 2003 SP1 |
Intestazione | fltkernel.h |
Libreria | FltMgr.lib |
IRQL | IRQL <= APC_LEVEL |