Compartir a través de


Función KeSrcuSynchronize (wdm.h)

La rutina KeSrcuSynchronize espera hasta que todas las secciones críticas del lado de lectura activas actualmente para una partición read-Copy-Update (SRCU) en suspensión se hayan cerrado.

Syntax

VOID KeSrcuSynchronize(
  [in] PKE_SRCU Rcu
);

Parámetros

[in] Rcu

Puntero a la instancia de SRCU asignada anteriormente por KeSrcuAllocate.

Valor devuelto

Ninguno

Observaciones

KeSrcuSynchronize implementa la operación "sincronizar" para SRCU, que inicia un período de gracia y espera a que todos los lectores activos salgan de sus secciones críticas. Esta función es esencial para las actualizaciones seguras de la estructura de datos y la recuperación de memoria.

La semántica del período de gracia es la siguiente:

  • La función solo espera a los lectores que estaban activos cuando se realizó la llamada.
  • Los nuevos lectores que escriben después de comenzar la llamada no se incluyen en la espera.
  • La función puede bloquearse hasta que todos los lectores de destino llamen a KeSrcuReadUnlock.
  • Varias operaciones de sincronización pueden estar en curso simultáneamente.

Llame a esta función solo en irQL < DISPATCH_LEVEL, ya que puede bloquearse. Esta función puede suspenderse, lo que hace que sea adecuado para el código paginable. No llame a esta función desde una sección crítica del lado de lectura de SRCU.

El patrón de escritura típico es el siguiente:

  1. Quite la estructura de datos de la visibilidad global.
  2. Llame a KeSrcuSynchronize para esperar a los lectores existentes.
  3. Desasigna o modifica de forma segura la estructura de datos.

La función garantiza que ningún lector acceda a los datos cuando vuelva, lo que hace que sea seguro realizar actualizaciones o recuperación de memoria.

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 <DISPATCH_LEVEL

Consulte también

KeSrcuAllocate

KeSrcuFree

KeSrcuReadLock

KeSrcuReadUnlock