Macro ExAcquirePushLockShared (wdm.h)
Adquiere el bloqueo de inserción especificado para el acceso compartido mediante el subproceso que realiza la llamada.
Sintaxis
void ExAcquirePushLockShared(
Lock
);
Parámetros
Lock
Puntero de bloqueo de inserción opaco. Este puntero debe haberse inicializado mediante una llamada anterior a ExInitializePushLock.
Valor devuelto
Ninguno
Observaciones
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, vea la entrada de referencia para ExInitializePushLock.
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.
Para liberar el bloqueo de inserción después de adquirirlo, llame a ExReleasePushLockShared. Cada llamada a ExAcquirePushLockShared debe coincidir con una llamada posterior a ExReleasePushLockShared .
Cuando el autor de la llamada tenga acceso compartido al bloqueo de inserción determinado depende de lo siguiente:
Si el bloqueo de inserción no está actualmente propietario, el acceso compartido se concede 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, se concede acceso compartido al autor de la llamada inmediatamente. El autor de la llamada se pone en un estado de espera si hay un waiter 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.
Antes de llamar a esta rutina, el controlador debe deshabilitar la entrega normal de APC del kernel llamando a KeEnterCriticalRegion. Reenable delivery after the push lock is released by calling KeLeaveCriticalRegion. Para obtener más información, consulte Deshabilitación de las API.
Para adquirir un bloqueo de inserción para el acceso exclusivo, llame a ExAcquirePushLockExclusive.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Windows 10, versión 1809 |
encabezado de | wdm.h |