Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
2.1 KiB

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