Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die KeSrcuReadLock-Routine wechselt in den schreibseitigen RCU-kritischen Abschnitt einer angegebenen Sleepable Read-Copy-Update (SRCU)-Partition.
Syntax
VOID KeSrcuReadLock(
[in] PKE_SRCU Rcu,
[out] PKE_SRCU_LOCK Lock
);
Die Parameter
[in] Rcu
Ein Zeiger auf die SRCU-Instanz, die zuvor von KeSrcuAllocate zugewiesen wurde.
[out] Lock
Ein Zeiger auf eine KE_SRCU_LOCK Struktur, die den Sperrkontext empfängt. Dieser Kontext muss beim Beenden des kritischen Abschnitts an KeSrcuReadUnlock übergeben werden.
Rückgabewert
Nichts
Bemerkungen
KeSrcuReadLock wechselt in einen schreibseitigen kritischen Abschnitt, sodass der Aufrufer sicher auf Daten zugreifen kann, die durch die SRCU-Partition geschützt sind. Mehrere Leser können Lesesperren gleichzeitig halten, aber Updates müssen warten, bis alle Leser beendet werden.
Im Gegensatz zu regulären RCU können Leser beim Halten der Lesesperre schlafen. Lesesperren können innerhalb desselben Threads geschachtelt werden. Der Thread kann zu verschiedenen Prozessoren migriert werden, während er die Sperre hält.
Koppeln Sie immer mit KeSrcuReadUnlock im selben Thread. Der Lock-Parameter empfängt den Kontext, der für die Entsperrung erforderlich ist. Mehrere Leser können gleichzeitig auf die geschützten Daten zugreifen. Autoren müssen KeSrcuSynchronize verwenden, um auf den Abschluss des Lesers zu warten.
Wenn der Thread zu einem anderen Prozessor zwischen Sperr und Entsperrung migriert wird, verwendet der Entsperrvorgang einen Interprozessor-Interrupt (IPI), um die Entsperrung auf dem ursprünglichen Prozessor abzuschließen.
Anforderungen
| Anforderung | Wert |
|---|---|
| Zielplattform | Universal |
| Header | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
| Library | NtosKrnl.lib |
| DLL | NtosKrnl.exe |
| IRQL | Beliebige Ebene |