Función FltAcquireResourceShared (fltkernel.h)

La rutina FltAcquireResourceShared adquiere el recurso especificado para el acceso compartido mediante el subproceso que realiza la llamada.

Sintaxis

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

Parámetros

[in/out] Resource

Puntero a una estructura ERESOURCE opaca. El autor de la llamada debe asignar esta estructura desde un grupo no paginado e inicializarla llamando a ExInitializeResourceLite o ExReinitializeResourceLite.

Valor devuelto

Ninguno.

Comentarios

La rutina FltAcquireResourceShared adquiere el recurso especificado para el acceso compartido mediante el subproceso que realiza la llamada.

Si al autor de la llamada se le concede acceso compartido al recurso determinado o cuando se le da acceso compartido, depende de lo siguiente:

  • Si el recurso no está registrado actualmente, se concede acceso compartido inmediatamente al subproceso actual.

  • Si el autor de la llamada ya ha adquirido el recurso (para el acceso compartido o exclusivo), al subproceso actual se le concede el mismo tipo de acceso de forma recursiva. Tenga en cuenta que hacer esta llamada no convierte la propiedad exclusiva de un llamador de un recurso determinado en compartido.

  • Si el recurso es propiedad actualmente como compartido por otro subproceso y ningún subproceso está esperando acceso exclusivo al recurso, el acceso compartido se concede al autor de la llamada inmediatamente. El autor de la llamada se coloca en un estado de espera si hay un camarero exclusivo.

  • Si el recurso es propiedad actualmente como exclusivo por otro subproceso o si hay otro subproceso esperando acceso exclusivo y el autor de la llamada aún no tiene acceso compartido al recurso, el subproceso actual se coloca en un estado de espera hasta que se pueda adquirir el recurso.

FltAcquireResourceShared es un contenedor para ExAcquireResourceSharedLite que deshabilita la entrega normal de APC del kernel.

Dado que FltAcquireResourceShared deshabilita la entrega normal del kernel APC, no es necesario llamar a KeEnterCriticalRegion o FsRtlEnterFileSystem antes de llamar a FltAcquireResourceShared.

Para liberar el recurso una vez adquirido, llame a FltReleaseResource. Cada llamada correcta a FltAcquireResourceShared debe coincidir con una llamada posterior a FltReleaseResource.

Para adquirir un recurso para el acceso exclusivo, llame a FltAcquireResourceExclusive.

Para eliminar un recurso de la lista de recursos del sistema, llame a ExDeleteResourceLite.

Para inicializar un recurso para reutilizarlo, llame a ExReinitializeResourceLite.

Para obtener más información sobre las estructuras ERESOURCE, vea Introducción a las rutinas ERESOURCE.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP SP2
Servidor mínimo compatible Windows Server 2003 SP1
Encabezado fltkernel.h
Library FltMgr.lib
IRQL IRQL <= APC_LEVEL