Función FltAcquirePushLockSharedEx (fltkernel.h)

La rutina FltAcquirePushLockSharedEx adquiere el bloqueo de inserción especificado para el acceso compartido mediante el subproceso que realiza la llamada.

Sintaxis

VOID FLTAPI FltAcquirePushLockSharedEx(
  PEX_PUSH_LOCK PushLock,
  ULONG         Flags
);

Parámetros

PushLock

Puntero de bloqueo de inserción opaco. Este puntero debe haberse inicializado mediante una llamada anterior a FltInitializePushLock.

Flags

Máscara de bits de marcas que controlan los atributos del bloqueo.

Valor devuelto

Ninguno.

Comentarios

La rutina FltAcquirePushLockSharedEx adquiere el bloqueo de inserción especificado para el acceso compartido mediante el subproceso que realiza la llamada.

Los bloqueos de inserción son similares a las estructuras ERESOURCE (también denominadas recursos) en que se pueden adquirir para el acceso compartido o exclusivo. Para obtener más información sobre los bloqueos de inserción, consulte la entrada de referencia para FltInitializePushLock.

A diferencia de las estructuras ERESOURCE, los bloqueos de inserción no se pueden adquirir de forma recursiva. Si el autor de la llamada ya ha adquirido el bloqueo de inserción para el acceso exclusivo, el sistema se bloqueará. Si el autor de la llamada ya ha adquirido el bloqueo de inserción para el acceso compartido, puede volver a recibir acceso compartido. Sin embargo, cada llamada a FltAcquirePushLockShared debe coincidir con una llamada posterior a FltReleasePushLock.

Cuando el autor de la llamada tenga acceso compartido al bloqueo de inserción especificado depende de lo siguiente:

  • Si el bloqueo de inserción no está propietario actualmente, se concede acceso compartido inmediatamente al subproceso actual.

  • Si otro subproceso ya ha adquirido el bloqueo de inserción para el acceso compartido y no hay ningún subproceso esperando acceso exclusivo al bloqueo de inserción, 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 otro subproceso ya ha adquirido el bloqueo de inserción para el acceso exclusivo o si hay otro subproceso esperando acceso exclusivo, el subproceso actual se coloca en un estado de espera hasta que se pueda adquirir el bloqueo de inserción.

Requisitos

Requisito Valor
Header fltkernel.h
Library FltMgr.lib

Consulte también

FltInitializePushLock