mirror of
https://github.com/reactos/reactos.git
synced 2024-07-17 18:06:11 +00:00
![]() 2. RtlGetVersion needs to be implemented differently in ntoskrnl and ntdll, ntoskrnl's version must not access the PEB (which might not be present) while ntdlls gets most information from the PEB structure 3. can't use spinlocks to serialize access to the security descriptor cache since it calls sd rtl functions which require to run < apc level svn path=/trunk/; revision=13712 |
||
---|---|---|
.. | ||
i386 | ||
acl.c | ||
bit.c | ||
bitmap.c | ||
bootdata.c | ||
compress.c | ||
dos8dot3.c | ||
encode.c | ||
env.c | ||
error.c | ||
exception.c | ||
generictable.c | ||
heap.c | ||
image.c | ||
largeint.c | ||
luid.c | ||
makefile | ||
mem.c | ||
network.c | ||
nls.c | ||
random.c | ||
readme.txt | ||
registry.c | ||
sd.c | ||
security.c | ||
sid.c | ||
splaytree.c | ||
time.c | ||
timezone.c | ||
unicode.c | ||
unicodeprefix.c | ||
version.c |
RTL restrictions: ExAllocatePool (and friends) must be used exclusively. RtlAllocateHeap (and friends) must NOT be used! ExAllocatePool (and friends) translate to RtlAllocateHeap (and friends) in ntdll\rtl\libsupp.c. RtlEnterCriticalSection (and friends) must be used exclusively. ExAcquireFastMutex (and friends) must NOT be used! RtlEnterCriticalSection (and friends) translate to ExAcquireFastMutex (and friends) in ntoskrnl\rtl\libsupp.c. This means that RtlEnterCriticalSection (and friends) can NOT be used recursively in RTL. The reason for choosing RtlEnterCriticalSection (and friends) over ExAcquireFastMutex (and friends) is that the FAST_MUTEX struct is smaller than the RTL_CRITICAL_SECTION struct.