Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The KeRcuReadUnlock function exits a RCU (Read-Copy-Update) read-side critical section in the default RCU ___domain that was previously entered with KeRcuReadLock.
Syntax
VOID KeRcuReadUnlock();
Return value
None
Remarks
This function unpins the calling thread from its processor, restores the original IRQL if needed, and performs any necessary grace period reporting to advance RCU synchronization.
KeRcuReadUnlock must be called to exit every RCU read-side critical section that was entered with KeRcuReadLock. Calls must be properly nested (LIFO order) when using nested RCU read-side critical sections.
After calling KeRcuReadUnlock:
- The calling thread is no longer protected from RCU grace periods.
- RCU-protected data structures accessed during the critical section may become eligible for reclamation.
- The thread should not continue to access RCU-protected data using pointers obtained during the critical section.
- The thread is no longer pinned to its processor and may be scheduled on different processors.
This function can be called from any IRQL. The function automatically handles IRQL restoration; that is, if the original IRQL before the corresponding KeRcuReadLock was below DISPATCH_LEVEL, it will be restored to that level.
This function uses the default RCU ___domain, making it suitable for simple RCU use cases. For more complex scenarios requiring custom synchronization domains, use KeSrcuReadUnlock with an explicit SRCU partition.
Requirements
| Requirement | Value |
|---|---|
| Minimum supported client | Windows 11, version 24H2 |
| Minimum supported server | Windows Server 2025 |
| Target Platform | Universal |
| Header | wdm.h (include Wdm.h) |
| Library | NtosKrnl.lib |
| IRQL | <= DISPATCH_LEVEL |