Función FltAcquirePushLockExclusive (fltkernel.h)

La macro FltAcquirePushLockExclusive adquiere el bloqueo de inserción especificado para el acceso exclusivo mediante el subproceso que realiza la llamada.

Sintaxis

VOID FLTAPI FltAcquirePushLockExclusive(
  [in, out] PEX_PUSH_LOCK PushLock
);

Parámetros

[in, out] PushLock

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

Valor devuelto

Ninguno.

Comentarios

FltAcquirePushLockExclusive adquiere el bloqueo de inserción especificado para el acceso exclusivo 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 o compartido, el subproceso se bloqueará.

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

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

  • Si otro subproceso ya ha adquirido el bloqueo de inserción para el acceso exclusivo o compartido, el subproceso actual se coloca en un estado de espera hasta que se pueda adquirir el bloqueo de inserción.

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

Para liberar el bloqueo de inserción después de adquirirlo, llame a FltReleasePushLock. Cada llamada a FltAcquirePushLockExclusive debe coincidir con una llamada posterior a FltReleasePushLock.

Para adquirir un bloqueo de inserción para el acceso compartido, llame a FltAcquirePushLockShared.

Para inicializar un bloqueo de inserción, llame a FltInitializePushLock.

Para eliminar un bloqueo de inserción, llame a FltDeletePushLock.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado fltkernel.h (incluya Fltkernel.h)
Library FltMgr.lib
IRQL <= APC_LEVEL

Consulte también

FltAcquirePushLockExclusiveEx

FltAcquirePushLockShared

FltDeletePushLock

FltInitializePushLock

FltReleasePushLock

FsRtlEnterFileSystem

KeEnterCriticalRegion