Compartir a través de


Función KeSrcuReadLock (wdm.h)

La rutina KeSrcuReadLock entra en la sección crítica de RCU del lado de lectura de una partición de lecturaCopy-Update (SRCU) especificada.

Syntax

VOID KeSrcuReadLock(
  [in]  PKE_SRCU      Rcu,
  [out] PKE_SRCU_LOCK Lock
);

Parámetros

[in] Rcu

Puntero a la instancia de SRCU asignada anteriormente por KeSrcuAllocate.

[out] Lock

Puntero a una estructura KE_SRCU_LOCK que recibe el contexto de bloqueo. Este contexto debe pasarse a KeSrcuReadUnlock al salir de la sección crítica.

Valor devuelto

Ninguno

Observaciones

KeSrcuReadLock entra en una sección crítica del lado de lectura, lo que permite al autor de la llamada acceder de forma segura a los datos protegidos por la partición SRCU. Varios lectores pueden contener bloqueos de lectura simultáneamente, pero las actualizaciones deben esperar a que todos los lectores salgan.

A diferencia de la RCU normal, los lectores pueden dormir mientras mantiene presionado el bloqueo de lectura. Los bloqueos de lectura se pueden anidar dentro del mismo subproceso. El subproceso puede migrar a diferentes procesadores mientras mantiene presionado el bloqueo.

Empareje siempre con KeSrcuReadUnlock en el mismo subproceso. El parámetro Lock recibe el contexto necesario para desbloquear. Varios lectores pueden acceder a los datos protegidos simultáneamente. Los escritores deben usar KeSrcuSynchronize para esperar a que finalice el lector.

Si el subproceso se migra a un procesador diferente entre bloqueo y desbloqueo, la operación de desbloqueo usará una interrupción entre procesadores (IPI) para completar el desbloqueo en el procesador original.

Requisitos

Requirement Importancia
de la plataforma de destino de Universal
Header wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
DLL de NtosKrnl.exe
irQL Cualquier nivel

Consulte también

KE_SRCU_LOCK

KeSrcuAllocate

KeSrcuFree

KeSrcuReadUnlock

KeSrcuSynchronize