Compartilhar via


Função FltAcquireResourceShared (fltkernel.h)

A rotina FltAcquireResourceShared adquire o recurso fornecido para acesso compartilhado pelo thread de chamada.

Sintaxe

VOID FLTAPI FltAcquireResourceShared(
  [in/out] PERESOURCE Resource
);

Parâmetros

[in/out] Resource

Ponteiro para uma estrutura ERESOURCE opaca. Essa estrutura deve ser alocada pelo chamador do pool nãopagado e inicializada chamando ExInitializeResourceLite ou ExReinitializeResourceLite.

Valor retornado

Nenhum.

Comentários

A rotina FltAcquireResourceShared adquire o recurso fornecido para acesso compartilhado pelo thread de chamada.

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 a propriedade exclusiva de um chamador de um determinado recurso em compartilhado.

  • Se o recurso pertencer atualmente como compartilhado por outro thread e nenhum thread estiver aguardando acesso exclusivo ao recurso, o acesso compartilhado será concedido ao chamador imediatamente. O chamador é colocado em um estado de espera se houver um garçom exclusivo.

  • Se o recurso pertencer atualmente como exclusivo por outro thread ou se houver outro thread aguardando acesso exclusivo e o chamador ainda não tiver acesso compartilhado ao recurso, o thread atual será colocado em um estado de espera até que o recurso possa ser adquirido.

FltAcquireResourceShared é um wrapper para ExAcquireResourceSharedLite que desabilita a entrega normal de APC do kernel.

Como FltAcquireResourceShared desabilita a entrega normal de APC do kernel, não é necessário chamar KeEnterCriticalRegion ou FsRtlEnterFileSystem antes de chamar FltAcquireResourceShared.

Para liberar o recurso depois que ele for adquirido, chame FltReleaseResource. Cada chamada bem-sucedida para FltAcquireResourceShared deve ser correspondida por uma chamada subsequente para FltReleaseResource.

Para adquirir um recurso para acesso exclusivo, chame FltAcquireResourceExclusive.

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
Cliente mínimo com suporte Windows XP SP2
Servidor mínimo com suporte Windows Server 2003 SP1
Cabeçalho fltkernel.h
Biblioteca FltMgr.lib
IRQL IRQL <= APC_LEVEL