48 lines
2.1 KiB
Plaintext
48 lines
2.1 KiB
Plaintext
This is the SLM project for the IIS Rearchitecture Team
|
|
|
|
ulrtl - Shared kernel/user-mode library.
|
|
|
|
kernel ... Builds the kernel-mode library (ulrtlk.lib)
|
|
user ... Builds the user-mode library (ulrtlu.lib)
|
|
|
|
|
|
Rules for adding new routines to these libraries:
|
|
|
|
1. Do not depend on anything defined in WINDOWS.H or anything that includes
|
|
WINDOWS.H. Getting WINDOWS.H included in kernel-mode code is a complete
|
|
pain and will not be allowed. Use the types & constants defined in NT.H,
|
|
NTRTL.H, and NTURTL.H. If you need something that's not defined in these
|
|
header files, dont include it in ULRTL.
|
|
|
|
2. If you change anything related to ULRTL, remember to rebuild it for both
|
|
kernel- and user-mode.
|
|
|
|
3. If you change anything in ULRTL.H, remember to rebuild all kernel- and
|
|
user-mode code that reference it.
|
|
|
|
4. Kernel-mode routines can be tagged (through a pragma) as either paged or
|
|
nonpaged. If you are not 100% sure of how to tag a new routine you're
|
|
adding, leave it as nonpaged (the default) and add a CODEWORK comment
|
|
so we know to revisit the routine later. Routines that are unnecessarily
|
|
nonpaged lead to excessive nonpaged pool consumption, which is not good,
|
|
but routines that are paged but should not be lead to random & mysterious
|
|
blue-screens, which is worse.
|
|
|
|
5. The kernel-mode driver is written in C, so there's no point in adding C++
|
|
routines or classes to ULRTL.
|
|
|
|
6. The memory allocation functions differ greatly between kernel- and user-
|
|
mode, so do not directly reference these. For example, kernel-mode
|
|
concepts such as pool type, tagging, and priority have no counterpart
|
|
in user-mode.
|
|
|
|
7. Synchronization primitives differ greatly between kernel- and user-mode,
|
|
so do not directly reference these. For example, theres no such thing as
|
|
a CRITICAL_SECTION in kernel-mode.
|
|
|
|
8. There are a limited number of C Run Time functions available in kernel-
|
|
mode, so beware. If you want the actual list of supported CRT functions,
|
|
see \\kernel\razzle2\src\ntos\init\ntoskrnl.src and look for the section
|
|
labeled ntcrt.lib (at the end of the file).
|
|
|