|
|
1.1 ! root 1: /*++ BUILD Version: 0001 // Increment this if a change has global effects ! 2: ! 3: Copyright (c) 1989 Microsoft Corporation ! 4: ! 5: Module Name: ! 6: ! 7: exlevels.h ! 8: ! 9: Abstract: ! 10: ! 11: This file contains all of the MUTEX level numbers used by the NT ! 12: executive. A thread is only allowed to acquire mutexes with levels ! 13: numerically higher than the highest mutex level already owned. ! 14: ! 15: Author: ! 16: ! 17: Steve Wood (stevewo) 08-May-1989 ! 18: ! 19: Revision History: ! 20: ! 21: --*/ ! 22: ! 23: // ! 24: // Kernel Mutex Level Numbers (must be globallly assigned within executive) ! 25: // The third token in the name is the sub-component name that defines and ! 26: // uses the level number. ! 27: // ! 28: ! 29: // ! 30: // Used by Vdm for protecting io simulation structures ! 31: // ! 32: ! 33: #define MUTEX_LEVEL_VDM_IO (ULONG)0x00000001 ! 34: ! 35: // ! 36: // CM mutex levels, one for each level of hive allowed, fixed at two ! 37: // for current system. ! 38: // ! 39: ! 40: #define MUTEX_LEVEL_CM_COMMUNICATION (ULONG)0x00000009 ! 41: #define MUTEX_LEVEL_CM_REGISTRY_OPERATION (ULONG)0x00000010 ! 42: ! 43: #define MUTEX_LEVEL_PS_MODULE (ULONG)0x00000020 ! 44: ! 45: #define MUTEX_LEVEL_EX_PROFILE (ULONG)0x00000040 ! 46: ! 47: #define MUTEX_LEVEL_MM_PAGEFILE (ULONG)0x00000050 ! 48: #define MUTEX_LEVEL_MM_ADDRESS_CREATION (ULONG)0x00000100 ! 49: ! 50: #define MUTEX_LEVEL_SE_TOKEN (ULONG)0x00000800 ! 51: ! 52: #define MUTEX_LEVEL_PS_CID_TABLE (ULONG)0x00000F00 ! 53: ! 54: #define MUTEX_LEVEL_OB_TABLE (ULONG)0x00001000 ! 55: #define MUTEX_LEVEL_OB_DIRECTORY (ULONG)0x00002000 ! 56: #define MUTEX_LEVEL_OB_TYPE (ULONG)0x00003000 ! 57: ! 58: #define MUTEX_LEVEL_PS_ACTIVE_PROCESS (ULONG)0x00004000 ! 59: #define MUTEX_LEVEL_PS_THREAD_TOKEN (ULONG)0x0000E000 ! 60: #define MUTEX_LEVEL_PS_PROCESS_TOKEN (ULONG)0x0000F000 ! 61: ! 62: #define MUTEX_LEVEL_PS_REAPER_LOCK (ULONG)0x00010000 ! 63: ! 64: #define MUTEX_LEVEL_SE_LSA_QUEUE (ULONG)0x00020000 ! 65: ! 66: ! 67: #define MUTEX_LEVEL_MM_SECTION_BASED (ULONG)0x10001000 ! 68: #define MUTEX_LEVEL_MM_SECTION_COMMIT (ULONG)0x10001001 ! 69: ! 70: ! 71: #define MUTEX_LEVEL_EX_LUID (ULONG)0x10001FFF ! 72: ! 73: // ! 74: // The LANMAN Redirector uses the file system major function, but defines ! 75: // it's own mutex levels. We can do this safely because we know that the ! 76: // local filesystem will never call the remote filesystem and vice versa. ! 77: // ! 78: ! 79: #define MUTEX_LEVEL_RDR_FILESYS_DATABASE (ULONG)0x10100000 ! 80: #define MUTEX_LEVEL_RDR_FILESYS_SECURITY (ULONG)0x10100001 ! 81: ! 82: // ! 83: // The LANMAN Browser also uses the file system major functions to protect ! 84: // the browser database. ! 85: // ! 86: ! 87: #define MUTEX_LEVEL_BOWSER_TRANSPORT_LOCK (ULONG)0x10200000 ! 88: #define MUTEX_LEVEL_BOWSER_ANNOUNCE (ULONG)0x10200001 ! 89: ! 90: // ! 91: // File System levels. ! 92: // ! 93: ! 94: #define MUTEX_LEVEL_FILESYSTEM_WORKQUE (ULONG)0x11000000 ! 95: #define MUTEX_LEVEL_FILESYSTEM_VMCB (ULONG)0x11000001 ! 96: #define MUTEX_LEVEL_FILESYSTEM_FCBM (ULONG)0x11000002 ! 97: #define MUTEX_LEVEL_FILESYSTEM_MCB (ULONG)0x11000003 ! 98: #define MUTEX_LEVEL_FILESYSTEM_CD_STREAM (ULONG)0x11000004 ! 99: #define MUTEX_LEVEL_FILESYSTEM_NOTIFY (ULONG)0x11000005 ! 100: #define MUTEX_LEVEL_FILESYSTEM_RAW_VCB (ULONG)0x11000006 ! 101: ! 102: // ! 103: // In the NT STREAMS environment, a mutex is used to serialize open, close ! 104: // and Scheduler threads executing in a subsystem-parallelized stack. ! 105: // ! 106: ! 107: #define MUTEX_LEVEL_STREAMS_DEVTAB (ULONG)0x11001000 ! 108: #define MUTEX_LEVEL_STREAMS_SUBSYS (ULONG)0x11001001 ! 109: ! 110: // ! 111: // The FsRtl mutex levels used to protect queues used to store IRPs from ! 112: // being cancelled ! 113: // ! 114: ! 115: #define MUTEX_LEVEL_FSRTL_FILELOCK_QUEUE (ULONG)0x12000000 ! 116: #define MUTEX_LEVEL_FSRTL_OPLOCK (ULONG)0x12000001 ! 117: ! 118: // ! 119: // Mutex level used by LDT support on x86 ! 120: // ! 121: ! 122: #define MUTEX_LEVEL_PS_LDT (ULONG)0x1F000000 ! 123: ! 124: // ! 125: // No Paged Pool Allocation or Deallocation is allowed if a numerically ! 126: // higher-level mutex (defined lower on the page) is already owned. ! 127: // ! 128: ! 129: #define MUTEX_LEVEL_EX_PAGED_POOL (ULONG)0x20000000 ! 130: ! 131: // ! 132: // Paging File Mcb levels. Known not to allocate paged pool. ! 133: // ! 134: ! 135: #define MUTEX_LEVEL_FILESYSTEM_NONPAGEDMCB (ULONG)0x21000000 ! 136: ! 137: ! 138: // ! 139: // No Page Faults are allowed if a numerically higher-level mutex (defined ! 140: // lower on this page) is already owned. ! 141: // ! 142: ! 143: #define MUTEX_LEVEL_MM_WORKING_SET (ULONG)0x40000000
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.