Annotation of ntddk/inc/exlevels.h, revision 1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.