Função ExAcquireResourceExclusiveLite (wdm.h)
A rotina ExAcquireResourceExclusiveLite adquire o recurso determinado para acesso exclusivo pelo thread de chamada.
Sintaxe
BOOLEAN ExAcquireResourceExclusiveLite(
[in, out] PERESOURCE Resource,
[in] BOOLEAN Wait
);
Parâmetros
[in, out] Resource
Um ponteiro para o recurso a ser adquirido.
[in] Wait
Especifica o comportamento da rotina sempre que o recurso não pode ser adquirido imediatamente. Se VERDADEIRO, o chamador será colocado em um estado de espera até que o recurso possa ser adquirido. Se FALSE, a rotina retornará imediatamente, independentemente de o recurso poder ser adquirido.
Valor de retorno
ExAcquireResourceExclusiveLite retornará VERDADEIRO se o recurso for adquirido. Essa rotina retornará FALSE se o de espera de de entrada for FALSE e o acesso exclusivo não puder ser concedido imediatamente.
Observações
A lista a seguir descreve se e quando um chamador recebe acesso exclusivo a um determinado recurso:
Se o recurso não for de propriedade no momento, o acesso exclusivo será concedido imediatamente ao thread atual.
Se o chamador já tiver adquirido o recurso para acesso exclusivo, o thread atual receberá o mesmo tipo de acesso recursivamente.-
Se o chamador tiver acesso compartilhado ao recurso, o chamador deverá liberar o bloqueio antes de tentar reacquirá-lo exclusivamente.
Se o recurso pertencer atualmente como exclusivo por outro thread ou se o chamador tiver acesso compartilhado apenas ao recurso, o thread atual será colocado em um estado de espera até que o recurso possa ser adquirido.
Se dois threads mantiverem um bloqueio compartilhado no mesmo recurso e ambos tentarem adquirir o bloqueio exclusivamente sem liberar o bloqueio compartilhado, eles ficarão em deadlock. Isso significa que cada thread aguardará que o outro libere sua retenção compartilhada no bloqueio e nenhum deles liberará sua retenção compartilhada até que o outro o faça.
O chamador pode liberar o recurso chamando ExReleaseResourceLite ou ExReleaseResourceForThreadLite.
A entrega normal de APC do kernel deve ser desabilitada antes de chamar essa rotina. Desabilite a entrega normal do APC do kernel chamando KeEnterCriticalRegion. A entrega deve permanecer desabilitada até que o recurso seja liberado, momento em que ele pode ser reenabled chamando KeLeaveCriticalRegion. Para obter mais informações, consulte Desabilitando APCs.
Requisitos
Requisito | Valor |
---|---|
da Plataforma de Destino | Universal |
cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
biblioteca | NtosKrnl.lib |
de DLL | NtosKrnl.exe |
IRQL | IRQL <= APC_LEVEL |
regras de conformidade de DDI | ExclusiveResourceAccess(wdm), HwStorPortProhibitedDIs(storport), IrqlExApcLte3(wdm), WithinCriticalRegion(storport), WithinCriticalRegion(storport), WithinCriticalRegion(wdm) |
Consulte também
ExIsResourceAcquiredExclusiveLite