Função ExAcquireSharedStarveExclusive (wdm.h)
A rotina ExAcquireSharedStarveExclusive adquire um determinado recurso para acesso compartilhado sem aguardar nenhuma tentativa pendente de adquirir acesso exclusivo ao mesmo recurso.
Sintaxe
BOOLEAN ExAcquireSharedStarveExclusive(
[in, out] PERESOURCE Resource,
[in] BOOLEAN Wait
);
Parâmetros
[in, out] Resource
Um ponteiro para o recurso a ser adquirido para acesso compartilhado.
[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
ExAcquireSharedStarveExclusive retornará verdadeiro se o acesso solicitado for concedido. Essa rotina retornará FALSE se a de espera de de entrada for FALSE e o acesso compartilhado não puder ser concedido imediatamente.
Observações
Se ou quando o chamador recebe acesso compartilhado ao recurso especificado depende do seguinte:
- Se o recurso não for sem proprietário no momento, o acesso compartilhado será concedido imediatamente ao thread atual.
- Se o chamador já tiver adquirido o recurso (para acesso compartilhado ou exclusivo), o thread atual receberá o mesmo tipo de acesso recursivamente. Observe que fazer essa chamada não converte o acesso exclusivo de um chamador de um determinado recurso para acesso compartilhado.
- Se o recurso for atualmente de propriedade como compartilhado por outro thread, o acesso compartilhado será concedido ao chamador imediatamente, mesmo que outro thread esteja aguardando acesso exclusivo a esse recurso.
- Se o recurso for atualmente de propriedade exclusiva por outro thread, o chamador será colocado em um estado de espera (Wait definido como TRUE) ou ExAcquireSharedStarveExclusive retornará FALSE.
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.
O chamador pode liberar o recurso chamando ExReleaseResourceLite ou ExReleaseResourceForThreadLite.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Disponível a partir do Windows 2000. |
da Plataforma de Destino | Universal |
cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
biblioteca | NtosKrnl.lib |
de DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |
regras de conformidade de DDI | HwStorPortProhibitedDIs(storport), IrqlExApcLte3(wdm), WithinCriticalRegion(storport), WithinCriticalRegion(storport), WithinCriticalRegion(wdm) |
Consulte também
ExAcquireSharedWaitForExclusive
ExConvertExclusiveToSharedLite