Função FltAcquireResourceExclusive (fltkernel.h)
A rotina FltAcquireResourceExclusive adquire o recurso determinado para acesso exclusivo pelo thread de chamada.
Sintaxe
VOID FLTAPI FltAcquireResourceExclusive(
[in/out] PERESOURCE Resource
);
Parâmetros
[in/out] Resource
Um ponteiro para uma estrutura deERESOURCEopaca. Essa estrutura deve ser alocada pelo chamador do pool nãopagado e inicializada chamando ExInitializeResourceLite ou ExReinitializeResourceLite.
Valor de retorno
Nenhum
Observações
FltAcquireResourceExclusive adquire o recurso determinado para acesso exclusivo pelo thread de chamada.
As seguintes circunstâncias determinam se ou quando o chamador recebe acesso exclusivo ao recurso especificado:
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.
Os chamadores que têm acesso compartilhado ao recurso devem liberar o bloqueio e, em seguida, requisê-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.
FltAcquireResourceExclusive é um wrapper para ExAcquireResourceExclusiveLite que desabilita a entrega normal do kernel APC.
Como FltAcquireResourceExclusive desabilita a entrega normal do kernel APC, não é necessário chamar KeEnterCriticalRegion ou FsRtlEnterFileSystem antes de chamar FltAcquireResourceExclusive.
Para liberar o recurso depois de adquirido, chame FltReleaseResource. Cada chamada bem-sucedida para FltAcquireResourceExclusive deve ser correspondida por uma chamada subsequente para FltReleaseResource.
Para adquirir um recurso para acesso compartilhado, chame FltAcquireResourceShared.
Para excluir um recurso da lista de recursos do sistema, chame ExDeleteResourceLite.
Para inicializar um recurso para reutilização, chame ExReinitializeResourceLite.
Para obter mais informações sobre estruturas ERESOURCE, consulte Introdução às rotinas ERESOURCE.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows XP SP2 |
servidor com suporte mínimo | Windows Server 2003 SP1 |
cabeçalho | fltkernel.h |
biblioteca | FltMgr.lib |
IRQL | IRQL <= APC_LEVEL |