Condividi tramite


Funzione ExAcquireResourceSharedLite (wdm.h)

La routine ExAcquireResourceSharedLite acquisisce la risorsa specificata per l'accesso condiviso dal thread chiamante.

Sintassi

BOOLEAN ExAcquireResourceSharedLite(
  [in, out] PERESOURCE Resource,
  [in]      BOOLEAN    Wait
);

Parametri

[in, out] Resource

Puntatore alla risorsa da acquisire.

[in] Wait

Specifica il comportamento della routine ogni volta che la risorsa non può essere acquisita immediatamente. Se TRUE, il chiamante viene inserito in uno stato di attesa fino a quando la risorsa non può essere acquisita. Se FALSE, la routine restituisce immediatamente, indipendentemente dal fatto che la risorsa possa essere acquisita.

Valore restituito

Il chiamante può rilasciare la risorsa chiamando ExReleaseResourceLite o ExReleaseResourceForThreadLite.

exAcquireResourceSharedLite restituisce true se (o quando) viene acquisita la risorsa. Questa routine restituisce FALSE se l'di input wait è false e l'accesso condiviso non può essere concesso immediatamente.

Osservazioni

Il fatto che o quando il chiamante abbia accesso condiviso alla risorsa specificata dipende dagli elementi seguenti:

  • Se la risorsa non è attualmente creata, 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 l'accesso esclusivo di una determinata risorsa all'accesso condiviso di un chiamante.

  • Se la risorsa è attualmente di proprietà di 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 cameriere esclusivo.

  • Se la risorsa è attualmente di proprietà di un altro thread o se è presente un altro thread in attesa dell'accesso esclusivo e il chiamante non dispone già dell'accesso condiviso alla risorsa, il thread corrente viene inserito in uno stato di attesa (Wait impostato su TRUE) o ExAcquireResourceSharedLite restituisce FALSE.

Il normale recapito APC del kernel deve essere disabilitato prima di chiamare questa routine. Disabilitare il normale recapito APC del kernel chiamando KeEnterCriticalRegion. Il recapito deve rimanere disabilitato finché la risorsa non viene rilasciata, a quel punto può essere riattivata chiamando KeLeaveCriticalRegion. Per altre informazioni, vedere La disabilitazione delle API.

Fabbisogno

Requisito Valore
client minimo supportato Disponibile a partire da Windows 2000.
piattaforma di destinazione Universale
intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
libreria NtosKrnl.lib
dll NtosKrnl.exe
IRQL <= APC_LEVEL
regole di conformità DDI HwStorPortProhibitedDDDIs(storport), IrqlExApcLte3(wdm), WithinCriticalRegion(storport), WithinCriticalRegion(storport), WithinCriticalRegion(wdm)

Vedere anche

ExAcquireResourceExclusiveLite

exAcquireSharedStarveExclusive

exAcquireSharedWaitForExclusive

exConvertExclusiveToSharedLite

exGetExclusiveWaiterCount

exGetSharedWaiterCount

ExInitializeResourceLite

ExIsResourceAcquiredSharedLite

ExReinitializeResourceLite

exReleaseResourceForThreadLite