Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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:
- Quite la estructura de datos de la visibilidad global.
- Llame a KeSrcuSynchronize para esperar a los lectores existentes.
- 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 |