Complete reference for all LCSself-configuration parameters. Every
parameter lives under Machine\System\Registry\ and follows the
self-configuration mechanism described in §8.2: compiled-in
defaults at boot, hot-swapped via self-watch
when registryvalues are available, validated against defined
ranges, invalid values rejected with audit event.
All parameters are REG_DWORD (uint32). All have compiled-in
defaults that produce correct behaviour without any registry
configuration.
Per-request timeout for RSIoperations, measured from first attempt to reserve an in-flight slot through response receipt. When exceeded, the calling thread receives ETIMEDOUT. The source stays alive.
ETIMEDOUT
Machine\System\Registry\TransactionTimeoutMs
30000
1000
600000
milliseconds
Maximum lifetime of an open transaction from reg_begin_transaction to auto-abort. Prevents stalled or malicious processes from holding the source's write lock indefinitely.
Transaction auto-aborted; caller's next operation returns EINVAL.
Maximum number of concurrently active read-only snapshot transactions per source, used by REG_IOC_BACKUP. Prevents backup snapshot DoS without treating backups as write-lock-holding transactions.
Maximum number of concurrently registered sources.
ENOSPC on REG_SRC_REGISTER
Machine\System\Registry\MaxHivesPerSource
64
1
1024
hives
Maximum number of hives a single source can register.
ENOSPC on REG_SRC_REGISTER
Machine\System\Registry\MaxConcurrentRSIRequests
256
8
4096
requests
Maximum simultaneously dispatched RSI requests awaiting response per source. When reached, new operations wait for a slot under the same RequestTimeoutMs deadline.
Caller waits; ETIMEDOUT if no slot becomes available before the deadline.
Maximum queued events per armed watch before overflow. When exceeded, oldest events are dropped and OVERFLOW is inserted.
OVERFLOW event delivered to watcher.
Machine\System\Registry\MaxSubtreeWatchDepth
0
0
4096
levels
Maximum depth from the watched key to descendant keys for subtree watchevent delivery. 0 means unlimited (all descendants). Events for changes deeper than this limit are silently dropped.
Events silently not delivered for changes beyond the depth limit.
Maximum watch events generated per-watcher from a single transaction commit. When exceeded, LCS stops generating individual events and inserts a single OVERFLOW instead.
OVERFLOW event delivered to watcher.
§11.4.8 Private hive and layer credential limits #
Full path
Default
Min
Max
Unit
Description
Errno on violation
Machine\System\Registry\MaxScopeGUIDsPerToken
8
1
256
GUIDs
Maximum private hive scope GUIDs a thread's credentials can carry. Bounds per-syscall routing iteration cost.
Error at credential attachment time (KACS concern).
Machine\System\Registry\MaxPrivateLayersPerToken
16
1
256
layers
Maximum private layer names a thread's credentials can carry. Bounds per-resolution is_active() iteration cost.
Error at credential attachment time (KACS concern).
All parameters are read from Machine\System\Registry\ via the
self-watch mechanism. Changes take effect for new operations
after the self-watch callback completes. In-flight operations
use the value active when they started.
Invalid values (out of range, wrong type) are silently ignored.
LCS retains the previous known-good value and emits an audit
event.
Values are never clamped. The registry shows what was written;
the audit log shows what LCS is actually using.
The SD on Machine\System\Registry\ controls who can modify
these parameters. By default: SYSTEM and Administrators have
KEY_ALL_ACCESS, Authenticated Users have KEY_READ. Domain
policy via Group Policy at higher precedencelayers provides
additional protection.