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