Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La routine ExAcquireSharedStarveExclusive acquisisce una determinata risorsa per l'accesso condiviso senza attendere alcun tentativo in sospeso di acquisire l'accesso esclusivo alla stessa risorsa.
Sintassi
BOOLEAN ExAcquireSharedStarveExclusive(
[in, out] PERESOURCE Resource,
[in] BOOLEAN Wait
);
Parametri
[in, out] Resource
Puntatore alla risorsa da acquisire per l'accesso condiviso.
[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
exAcquireSharedStarveExclusive restituisce true se viene concesso l'accesso richiesto. 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, l'accesso condiviso viene concesso immediatamente al chiamante, anche se un altro thread è in attesa dell'accesso esclusivo a tale risorsa.
- Se la risorsa è attualmente di proprietà di un altro thread, il chiamante viene inserito in uno stato di attesa (Wait impostato su TRUE) o ExAcquireSharedStarveExclusive 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.
Il chiamante può rilasciare la risorsa chiamando ExReleaseResourceLite o ExReleaseResourceForThreadLite.
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
exAcquireSharedWaitForExclusive
exConvertExclusiveToSharedLite