home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / WIN_NT / KMGLOS.ZIP / GLOS.TTY < prev    next >
Encoding:
Text File  |  1993-01-29  |  117.4 KB  |  3,499 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.              Glossary of Terms and Acronyms
  12.              Glossary of Terms and Acronyms
  13.  
  14.              access violation
  15.              access violation
  16.                 An attempt to carry out a memory operation that is not
  17.                 allowed by the underlying page protection. See also probe
  18.                 and SEH.
  19.                    There are four basic kinds of actions that can cause
  20.                    access violations:
  21.                    1   Attempting an invalid operation, such as writing to a
  22.                        read-only buffer.
  23.                    2   Attempting to access memory beyond the limit of the
  24.                        current program's address space (a.k.a. "length
  25.                        violation").
  26.                    3   Attempting to access a page to which the system
  27.                        forbids access. For example, code is not allowed to
  28.                        run in the low-order 64K of the NT user-mode address
  29.                        space in order to simplify the detection of NULL
  30.                        pointer references.
  31.                    4   Attempting to access a page that is currently
  32.                        resident but dedicated to the use of an executive
  33.                        component. For example, user-mode code is not allowed
  34.                        access a page that the Kernel is using.
  35.                    Note that this term pertains to memory operations. It has
  36.                    nothing to do with the Security Manager's checking of
  37.                    user-mode access rights to objects. See security
  38.                    violation, ACE, and ACL.
  39.  
  40.              ACE
  41.              ACE
  42.                 (1) Access control entry
  43.                    An ACE is an individual entry in an ACL. An ACE contains
  44.                    an SID and describes the access rights that a particular
  45.                    user or group of users has to a system resource. The set
  46.                    of all ACEs on the object are used to determine whether
  47.                    an access request to the object is granted. See also
  48.                    security descriptor.
  49.                 (2) Advanced computing environment
  50.                    A consortium of hardware and software companies formed to
  51.                    promote an open computing environment. NT is one of the
  52.                    original ACE operating systems.
  53.  
  54.              access right
  55.              access right
  56.                 A permission granted to a process to manipulate a particular
  57.                 object in a particular way (by calling a service). Different
  58.                 NT object types support different access rights, which are
  59.                 stored in an object's ACL.
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.  
  75.  
  76.         G-2      Kernel-mode Driver Design Guide
  77.         G-2      Kernel-mode Driver Design Guide
  78.  
  79.  
  80.         ACL
  81.         ACL
  82.            Access control list
  83.               An ordered list of ACEs.
  84.  
  85.         adapter object
  86.         adapter object
  87.            A kernel-mode-only object type, defined by the I/O Manager
  88.            and supported by the HAL component. An adapter object
  89.            represents a hardware bus adapter or DMA controller channel.
  90.            Adapter objects "connect" different kinds of devices on the
  91.            bus or DMA controller, each device (or kind of device) with
  92.            its own driver.
  93.  
  94.         affinity
  95.         affinity
  96.            A programmer-defined attribute of a process and/or thread on
  97.            a multiprocessor platform:
  98.            n  For a process, its affinity is the programmer-determined
  99.            n
  100.               set of processors on which its threads are permitted to
  101.               run.
  102.            n  For a thread, its default affinity is identical to that
  103.            n
  104.               of the process to which it belongs; otherwise, its
  105.               affinity must be a proper subset of the process's.
  106.  
  107.         alert
  108.         alert
  109.            A Boolean that provides a way to break into a thread's
  110.            execution at a point where either of the following
  111.            conditions is met:
  112.            n  The thread is in an alertable wait state (as specified
  113.            n
  114.               when the wait service was called).
  115.            n  The thread polls the alerted flag.
  116.            n
  117.  
  118.         APC
  119.         APC
  120.            Asynchronous procedure call
  121.               An APC is a Kernel-defined control object representing a
  122.               procedure that is called asynchronously. APCs are thread-
  123.               context dependent; that is, they are queued to a
  124.               particular thread for execution.
  125.               There are three different kinds of APCs in NT:
  126.               1   User APCs - These APCs are used by certain
  127.                   _________
  128.                   asynchronous NT system services to allow users to
  129.                   synchronize the execution of a thread with the
  130.                   completion of an operation or the occurrence of an
  131.                   event such as a timer's expiration. User APCs are, by
  132.                   default, disabled. That is, they are queued to the
  133.                   user's thread, but they are not executed except at
  134.                   well-defined points in the user's program.
  135.                   Specifically, they can only be executed when the user
  136.                   has called a wait service and has enabled alerts to
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.                             Glossary of Terms and Acronyms      G-3     
  154.                             Glossary of Terms and Acronyms      G-3     
  155.  
  156.  
  157.                        occur, or if the user has called the test-alert
  158.                        service.
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  
  203.  
  204.  
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.  
  213.  
  214.  
  215.  
  216.  
  217.  
  218.  
  219.  
  220.         G-4      Kernel-mode Driver Design Guide
  221.         G-4      Kernel-mode Driver Design Guide
  222.  
  223.  
  224.               2   Kernel APCs - These APCs are normal kernel-mode APCs.
  225.                   ___________
  226.                   They are much like a normal user APC except that they
  227.                   are executable by default. That is, they are enabled
  228.                   except when the thread is already executing a Kernel
  229.                   APC.  (Note that a special Kernel APC always preempts
  230.                   these.)
  231.               3   Special Kernel APCs - These APCs cannot be blocked
  232.                   ___________________
  233.                   except by running at a raised IRQL. They are executed
  234.                   at APC_LEVEL IRQL (see IDT), in kernel mode. These
  235.                   types of APCs are used by the system to force a
  236.                   thread to execute a procedure in the thread's
  237.                   context. An example of this is I/O completion:  the
  238.                   I/O Manager needs to get back into the context of the
  239.                   original requestor of the I/O operation so that it
  240.                   can copy buffers, etc. In order to do this, the I/O
  241.                   Manager must be able to access the virtual address
  242.                   space of the thread/process, and the most efficient
  243.                   way to complete the operation is to be in the calling
  244.                   thread's context.
  245.  
  246.         ARC
  247.         ARC
  248.            (1) The NT executive runs on top of ARC-compliant machines,
  249.            including both RISC- and CISC-based platforms that supply
  250.            the following components to the OS loader:
  251.            n  In MIPS-based platforms, a set of machine firmware that
  252.            n
  253.               supports bootstrap loading and execution as an
  254.               "abstracted" set of ARC routines and ARC devices.
  255.            n  In x86-based platforms, a hardware recognizer (Ntdetect)
  256.            n
  257.               that finds devices necessary to bootstrap the system by
  258.               querying the ROM BIOS and builds a hardware database that
  259.               emulates the RISC-based ARC firmware.
  260.            n  In both kinds of platforms, a HAL that interfaces between
  261.            n
  262.               the hardware and NT.
  263.            Later in the load process, the driver of the disk, CD-ROM,
  264.            or floppy device from which the system booted creates an
  265.            alias between the name of its device object and the
  266.            corresponding ARC device name by calling IoAssignArcName.
  267.                                                     IoAssignArcName
  268.            (2) Advanced RISC computing
  269.               Refers to a RISC-based computer architecture standard,
  270.               associated with the ACE consortium.
  271.  
  272.         associated IRP
  273.         associated IRP
  274.            One of a set of IRPs, created by the highest-level driver in
  275.            a chain of layered drivers, that specifies some part of an
  276.            I/O request to be sent on to a lower-level driver. When all
  277.            associated IRPs in the set have been processed, the highest-
  278.            level driver completes the original request. See also IRP.
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.                             Glossary of Terms and Acronyms      G-5     
  296.                             Glossary of Terms and Acronyms      G-5     
  297.  
  298.  
  299.              asynchronous I/O
  300.              asynchronous I/O
  301.                 A model for I/O in which the operations carried out to
  302.                 satisfy I/O requests do not necessarily occur in sequence.
  303.                 The application that originally made the request can
  304.                 continue executing (rather than waiting for its I/O to
  305.                 complete), the I/O Manager or a high-level driver can
  306.                 reorder I/O requests as they are received, and a low-level
  307.                 driver can start an I/O operation on a device before it has
  308.                 completed the preceding request, particularly in a
  309.                 multiprocessor machine.
  310.  
  311.              backing store
  312.              backing store
  313.                 A mass storage medium, such as a disk, that serves as backup
  314.                 "memory" for paging when physical memory becomes full. See
  315.                 also paging file.
  316.  
  317.              balance set
  318.              balance set
  319.                 The set of processes currently in the system, in particular,
  320.                 processes whose threads are eligible for execution. See also
  321.                 dispatch state and working set.
  322.                    At any given moment, the balance set depends on the
  323.                    availability of physical memory (pages) to back the
  324.                    virtual address space associated with each active
  325.                    process. If a physical memory shortage occurs, the NT
  326.                    Memory Manager first trims the working set of each active
  327.                    process to its minimum, then (if necessary) removes
  328.                    processes from the balance set.
  329.  
  330.              based section
  331.              based section
  332.                 A section allocated at the same virtual address for each
  333.                 process that has a view of the section. See also section and
  334.                 view.
  335.  
  336.              BCB
  337.              BCB
  338.                 Buffer control block
  339.                    An opaque Cache Manager structure, used to maintain state
  340.                    as a file system pins and releases data (for example, its
  341.                    volume structure) in the cache.
  342.  
  343.              big-endian
  344.              big-endian
  345.                 Refers to a memory architecture in which the byte layout is
  346.                 as follows:
  347.                 n  Byte N is the most significant (and, in conventional
  348.                 n
  349.                    layout diagrams, the "leftmost") byte of:
  350.                    n   A word composed of bytes N and (N + 1).
  351.                    n
  352.                    n   A double word composed of bytes N, (N + 1), (N + 2),
  353.                    n
  354.                        and (N + 3).
  355.  
  356.  
  357.  
  358.  
  359.  
  360.  
  361.  
  362.  
  363.  
  364.  
  365.  
  366.  
  367.  
  368.  
  369.  
  370.  
  371.         G-6      Kernel-mode Driver Design Guide
  372.         G-6      Kernel-mode Driver Design Guide
  373.  
  374.  
  375.               n   A K-byte memory entity composed of bytes N, (N +
  376.               n
  377.                   1),...,(N + K - 1).
  378.            n  The address of the preceding word, double word, or K-byte
  379.            n
  380.               entity is its most significant byte, N.
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420.  
  421.  
  422.  
  423.  
  424.  
  425.  
  426.  
  427.  
  428.  
  429.  
  430.  
  431.  
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.                             Glossary of Terms and Acronyms      G-7     
  441.                             Glossary of Terms and Acronyms      G-7     
  442.  
  443.  
  444.                 A MIPS machine can be configured for either big-endian or
  445.                 little-endian byte addressing. For a big-endian
  446.                 configuration, the most significant bit of a 16-bit short
  447.                                                                     short
  448.                 value is the "leftmost" bit at byte N, while the least
  449.                 significant bit is the "rightmost" bit of byte (N + 1). See
  450.                 also little-endian.
  451.                    The terms "big-endian" and "little-endian" are derived
  452.                    from Jonathan Swift's Gulliver's Travels.
  453.                                          __________________
  454.  
  455.              Cache Manager
  456.              Cache Manager
  457.                 An executive component that provides file caching support
  458.                 for NT file system drivers.
  459.  
  460.              CCB
  461.              CCB
  462.                 Context control block
  463.                    An internal NT-defined file system structure, in which a
  464.                    file system maintains per file object state for an open
  465.                    instance of a file. See also FCB and DCB.
  466.  
  467.              CDB
  468.              CDB
  469.                 Command descriptor block
  470.                    A structure, defined by the SCSI-II standard, used to
  471.                    communicate requests to a target device on the SCSI bus.
  472.  
  473.              CDFS
  474.              CDFS
  475.                 CD-ROM file system
  476.  
  477.              CD-ROM
  478.              CD-ROM
  479.                 Compact disk, read-only memory
  480.  
  481.              chase
  482.              chase
  483.                 To follow a linked list, queue, or other software-defined
  484.                 path. For example, when a file system encounters a symbolic
  485.                 link file within a path specification, it "chases the
  486.                 symbolic link" to redirect operations to the target file.
  487.                 See also symbolic link.
  488.  
  489.  
  490.  
  491.  
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.  
  501.  
  502.  
  503.  
  504.  
  505.  
  506.  
  507.  
  508.  
  509.  
  510.  
  511.  
  512.  
  513.  
  514.  
  515.         G-8      Kernel-mode Driver Design Guide
  516.         G-8      Kernel-mode Driver Design Guide
  517.  
  518.  
  519.         child process
  520.         child process
  521.            When a new NT-native process is created by calling a system
  522.            service, the caller must specify a "parent" process from
  523.            which the new process inherits its token, quota, and base
  524.            priority. The new process can optionally inherit any or all
  525.            of the following from the specified parent process:
  526.            n  A copy of the parent's virtual address space.
  527.            n
  528.            n  All object handles that were opened with the inheritance
  529.            n
  530.               attribute.
  531.            n  Debugging and exception handling ports.
  532.            n
  533.            However, an NT user-mode process becomes a wholly
  534.            independent peer to its so-called parent process as soon as
  535.            it has been created. After process creation, any process-to-
  536.            process dependencies become the responsibility of a
  537.            protected subsystem (such as the Win32TM or POSIX
  538.            subsystem).
  539.            A kernel-mode-only (a.k.a. "system") process has no "parent"
  540.            when it is created.
  541.  
  542.         CID
  543.         CID
  544.            Client identifier
  545.               A unique value that identifies a thread.
  546.  
  547.         class driver
  548.         class driver
  549.            a.k.a. "type driver"
  550.               (1) An intermediate driver for a physical device, which
  551.               is connected to a so-called "intelligent controller" such
  552.               as a SCSI HBA, or to an adapter bus. Such a class driver
  553.               communicates with the corresponding port driver according
  554.               to an established protocol, such NT-defined SRBs. The
  555.               system-supplied SCSI disk, CD-ROM, and tape class drivers
  556.               are examples of this type of class driver.
  557.               (2) An intermediate driver that provides system-required
  558.               but hardware-independent support for a given class of
  559.               physical devices. Such a class driver communicates with a
  560.               corresponding hardware-dependent port driver, using a set
  561.               of system-defined device I/O control requests, possibly
  562.               with additional driver defined internal device I/O
  563.               control requests. The system-supplied keyboard and mouse
  564.               class drivers are examples of this type of class driver.
  565.  
  566.         client/server model
  567.         client/server model
  568.            A model for structuring applications or operating systems
  569.            such that the system is divided into processes (servers),
  570.            each of which provides a set of specialized services to
  571.            other processes (clients).
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.                             Glossary of Terms and Acronyms      G-9     
  590.                             Glossary of Terms and Acronyms      G-9     
  591.  
  592.  
  593.              collided page fault
  594.              collided page fault
  595.                 A page fault caused by one thread while an in-page I/O
  596.                 operation for another thread is being done on the same page.
  597.  
  598.              commitment
  599.              commitment
  600.                 The NT Memory Manager's current value for paging file usage.
  601.  
  602.              context
  603.              context
  604.                 The execution state of a thread at any given moment:
  605.                 n  For a user-mode thread, the platform-dependent register
  606.                 n
  607.                    state, kernel stack, TEB, and user stack in the address
  608.                    space of the process to which the thread belongs.
  609.                 n  For a kernel-mode thread, the platform-dependent register
  610.                 n
  611.                    state and kernel stack.
  612.                    Kernel-mode threads have neither a TEB nor a user-mode
  613.                    context, but they must have an associated process. See
  614.                    also process object.
  615.                    Most NT device drivers do not have a context in this
  616.                    sense. Unless a driver (such as an FSD) creates its own
  617.                    process and/or thread(s), it does not have its own stack
  618.                    space or register state. For each driver, the set of
  619.                    objects it owns and the IRPs that it can access via a
  620.                    device queue object associated with its device object can
  621.                    be considered all or part of its context.
  622.  
  623.              context record
  624.              context record
  625.                 A system-defined structure, containing the current register
  626.                 state for an exception handler. See also SEH.
  627.  
  628.              control objects
  629.              control objects
  630.                 A class of Kernel-defined object types, used to manage all
  631.                 kernel-mode operations except dispatching and
  632.                 synchronization. See also dispatcher objects.
  633.                    Control objects include: APC, DPC, device queue,
  634.                    interrupt and process objects. Note that all control
  635.                    object types except processes are kernel-mode-only
  636.                    objects, invisible to user-mode code. User-mode APC
  637.                    objects are also "invisible" in the sense that they look
  638.                    more like user-supplied routines to be called on return
  639.                    from certain system services (such as a request to read a
  640.                    file) than like objects.
  641.  
  642.              controller object
  643.              controller object
  644.                 A kernel-mode-only object type, defined by the I/O Manager.
  645.                 A controller object represents a hardware controller or
  646.                 channel. The driver calls IoAllocateController to carry out
  647.                                           IoAllocateController
  648.                 synchronized I/O on attached devices. Controller objects
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.         G-10     Kernel-mode Driver Design Guide
  666.         G-10     Kernel-mode Driver Design Guide
  667.  
  668.  
  669.            "connect" a set of similar devices attached to a controller
  670.            with a single driver.
  671.  
  672.         critical section
  673.         critical section
  674.            A piece of code that accesses a nonsharable resource, such
  675.            as device-state data stored in a device extension to which
  676.            access must be synchronized among some number of driver
  677.            routines.
  678.  
  679.         DACL
  680.         DACL
  681.            Discretionary access control list
  682.               A discretionary ACL is part of the security descriptor
  683.               for an object. It can be applied to a newly created
  684.               object in order to constrain access to the object. See
  685.               also ACE, access right, ACL and security descriptor.
  686.  
  687.         DCB
  688.         DCB
  689.            Directory control block
  690.               An internal FS structure in which a file system maintains
  691.               state for an open instance of a directory file.
  692.  
  693.         deadlock
  694.         deadlock
  695.            A runtime error condition that occurs when two threads of
  696.            execution are blocked, each waiting to acquire a resource
  697.            that the other holds, and both unable to continue running.
  698.  
  699.         device extension
  700.         device extension
  701.            A part of a device object whose size is determined when a
  702.            driver creates the device object and whose internal
  703.            structure is driver-defined. For many NT drivers, a device
  704.            extension is the driver's major (and only) data storage
  705.            area, used to maintain device state and to contain any
  706.            system-defined objects and other data that the driver writer
  707.            decides to use.
  708.  
  709.         device object
  710.         device object
  711.            A kernel-mode-only, I/O Manager-defined object type, used to
  712.            represent a physical, logical, or virtual device whose
  713.            driver has been loaded into the system. Each driver calls
  714.            IoCreateDevice to initialize a device object for each device
  715.            IoCreateDevice
  716.            that driver services. See also driver object.
  717.            Devices are "visible" to end users as named file objects,
  718.            stored in a directory protected against careless or
  719.            malicious user-mode access. User-mode code (protected
  720.            subsystems) must access any device through the opaque handle
  721.            returned by the system service that opens the file object
  722.            that represents the device to user-mode code.
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  
  731.  
  732.  
  733.  
  734.  
  735.  
  736.  
  737.  
  738.  
  739.                             Glossary of Terms and Acronyms     G-11     
  740.                             Glossary of Terms and Acronyms     G-11     
  741.  
  742.  
  743.              device queue object
  744.              device queue object
  745.                 A kernel-mode-only, Kernel-defined control object type, used
  746.                 to record the Boolean state (Busy or Not_Busy) of a device
  747.                 and to queue I/O requests for subsequent processing. A
  748.                 device queue object has an associated executive spin lock.
  749.                    An I/O request, called a "queue entry," is not actually
  750.                    placed in the device queue unless the state is already
  751.                    Busy:
  752.                    n   On the transition from Not_Busy to Busy, the driver
  753.                    n
  754.                        is expected to service the queue entry immediately.
  755.                    n   Subsequent requests while the state is Busy are
  756.                    n
  757.                        queued in FIFO or key-sorted order.
  758.                    n   An attempt to remove a queue entry from an empty
  759.                    n
  760.                        queue causes the transition from Busy to Not_Busy.
  761.                    n   An attempt to remove a queue entry from an empty
  762.                    n
  763.                        queue when the device is Not_Busy causes the system
  764.                        to "bugcheck" (i.e., crash).
  765.  
  766.              directory file
  767.              directory file
  768.                 A file that points to or lists a set of named file objects.
  769.                    Note that on-disk directory files are represented in NT
  770.                    as file objects, not as object directory objects.
  771.  
  772.              directory object
  773.              directory object
  774.                 See object directory object.
  775.  
  776.              DIRQL
  777.              DIRQL
  778.                 Device interrupt request level
  779.                    See also IRQL and IDT - This particular IRQL refers to
  780.                    the IRQL at which a given device interrupts.
  781.  
  782.              dispatch state
  783.              dispatch state
  784.                 For a thread at any given moment, one of the following:
  785.                 n  Initialized.
  786.                 n
  787.                    ____________
  788.                 n  Ready - queued and eligible for dispatch to a processor.
  789.                 n
  790.                    _____
  791.                 n  Standby - ready and selected to execute, but a context
  792.                 n
  793.                    _______
  794.                    switch to the thread has not yet occurred.
  795.                 n  Running.
  796.                 n
  797.                    _______
  798.                 n  Waiting - suspended until a particular dispatcher object
  799.                 n
  800.                    _______
  801.                    is set to the Signaled state.
  802.                 n  Terminated.
  803.                 n
  804.                    __________
  805.  
  806.              dispatcher objects
  807.              dispatcher objects
  808.                 A class of Kernel-defined object types, used to manage
  809.                 dispatching and synchronization. See also control objects.
  810.                    Dispatcher objects have a Boolean state (Signaled or Not-
  811.                    Signaled), and are arguments to the wait services or
  812.  
  813.  
  814.  
  815.  
  816.  
  817.  
  818.  
  819.  
  820.  
  821.  
  822.  
  823.  
  824.  
  825.  
  826.  
  827.  
  828.         G-12     Kernel-mode Driver Design Guide
  829.         G-12     Kernel-mode Driver Design Guide
  830.  
  831.  
  832.               Kernel wait routines. Dispatcher objects include:
  833.               events, (kernel-mode-only) mutexes, semaphores, threads,
  834.               and timers.
  835.               Kernel-mode threads synchronize their operations by
  836.               waiting on one or more dispatcher objects, or by waiting
  837.               on other objects, such as user-mode file objects,
  838.               that contain "hidden" kernel-mode dispatcher objects.
  839.               Note that it is a fatal error to wait on a dispatcher
  840.               object at IRQL > APC_LEVEL.
  841.  
  842.         DMA
  843.         DMA
  844.            Direct memory access
  845.               (No different from any other OS.)
  846.  
  847.         DPC
  848.         DPC
  849.            Deferred procedure call
  850.               A DPC is a Kernel-defined control object type,
  851.               representing a procedure that is to be called later. DPCs
  852.               are executed in kernel mode at IRQL DISPATCH_LEVEL (see
  853.               IDT and IRQL).
  854.               A DPC is primarily used when an interrupt service routine
  855.               (e.g., device driver or clock interrupt service routine)
  856.               needs to perform more work but should do so at a lower
  857.               IRQL than the one at which an ISR executes. (Note that
  858.               getting the IRQL lowered back down quickly is important
  859.               for overall system response time.) The ISR, then, can
  860.               request that a procedure be executed at a lower IRQL at a
  861.               later time.
  862.  
  863.         driver object
  864.         driver object
  865.            A kernel-mode-only object representing an NT driver's load
  866.            image, used by the I/O Manager to locate the driver's entry
  867.            points.
  868.  
  869.         EA
  870.         EA
  871.            Extended attribute
  872.               Files have basically four different parts:
  873.               1   Data
  874.               2   File system attributes (such as creation time, other
  875.                   times, FAT attributes, etc.)
  876.               3   Security descriptor
  877.               4   EAs
  878.               EAs are the set of extended information about a file. An
  879.               EA is viewed as an untyped name-value pair that is
  880.               defined by the user. Typical system uses are to store the
  881.               icon for an image, to indicate that the file is a
  882.               symbolic link, etc.
  883.  
  884.  
  885.  
  886.  
  887.  
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.                             Glossary of Terms and Acronyms     G-13     
  900.                             Glossary of Terms and Acronyms     G-13     
  901.  
  902.  
  903.              EFU
  904.              EFU
  905.                 Error format utility
  906.                    A utility, supplied by the system, that reads error
  907.                    entries out of an error log file and displays them.
  908.                    Drivers call IoAllocateErrorLogEntry and
  909.                                 IoAllocateErrorLogEntry
  910.                    IoWriteErrorLogEntry to transfer errors to an error log
  911.                    IoWriteErrorLogEntry
  912.                    file; they can supply error buffer translation routines
  913.                    to format entries for display by the EFU.
  914.  
  915.              EISA
  916.              EISA
  917.                 Extended industry standard architecture
  918.                    Also, a standard that defines the architecture of (and
  919.                    interface to) the extended PC bus. See also ISA.
  920.  
  921.              event object
  922.              event object
  923.                 A user-mode object upon which one or more threads can wait
  924.                 until the event is set to the Signaled state. Every user-
  925.                 mode event object is implemented through the use of a
  926.                 kernel-mode event object.
  927.                 A kernel-mode event object is an instance of a Kernel-
  928.                 defined dispatcher object type. Each kernel-mode event can
  929.                 be classified as either of the following:
  930.                 1  When a synchronization event (a.k.a. "autoclearing
  931.                           _____________________
  932.                    event") is set to the Signaled state, a single thread
  933.                    that was waiting on the event is released (its dispatch
  934.                    state transitions from waiting to ready, standby, or
  935.                    running), and an autoreset to Not-Signaled occurs.
  936.                 2  When a notification event is set to the Signaled state,
  937.                           __________________
  938.                    all threads that were waiting on the event are released,
  939.                    and the event remains in the Signaled state until an
  940.                    explicit reset to Not-Signaled occurs.
  941.  
  942.              exception
  943.              exception
  944.                 A synchronous error condition, resulting from the execution
  945.                 of a particular machine instruction. See also SEH.
  946.  
  947.  
  948.  
  949.  
  950.  
  951.  
  952.  
  953.  
  954.  
  955.  
  956.  
  957.  
  958.  
  959.  
  960.  
  961.  
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.  
  970.  
  971.  
  972.  
  973.  
  974.         G-14     Kernel-mode Driver Design Guide
  975.         G-14     Kernel-mode Driver Design Guide
  976.  
  977.  
  978.         executive
  979.         executive
  980.            The collection of components that form the base NT operating
  981.            system. Executive components include the Executive Support,
  982.            Kernel, Memory Manager, Cache Manager, Process Structure,
  983.            Interprocess Communication (LPC and RPC), Object Manager,
  984.            I/O Manager, Configuration Manager, Hardware Abstraction
  985.            Layer, and Security Reference Monitor.  Each executive
  986.            component except the Executive Support, Cache Manager, and
  987.            Hardware Abstraction Layer supplies a specialized set of
  988.            native user-mode system services, and every executive
  989.            component exports a set of kernel-mode functions for use by
  990.            other executive components.
  991.               NT drivers also call kernel-mode functions supplied by
  992.               executive components, including (but not limited to)
  993.               functions beginning with the prefix "Ex" for Ex(ecutive)
  994.                                                            Ex
  995.               Support. Other kernel-mode functions of interest to
  996.               drivers begin with the prefixes: Hal, Ke(rnel), Ps (for
  997.                                                Hal  Ke        Ps
  998.               Process Structure), Ob(ject), Io, Mm (for Memory
  999.                                   Ob        Io  Mm
  1000.               _       _                                 _
  1001.               Manager), Cc (for Cache Manager), Se(curity) and FsRtl
  1002.                         Cc                      Se             FsRtl
  1003.               _                 _ _
  1004.               (for File System Run-time Library). See also Zw routines.
  1005.                    _    _      _   _   __
  1006.            Note that NT drivers, including kernel-mode device,
  1007.            intermediate, and file system drivers, are considered part
  1008.            of the NT executive after they are loaded. The "operating
  1009.            system" visible to end users is actually a protected
  1010.            subsystem that runs in user mode on top of the NT executive;
  1011.            the executive is hidden from end users by a subsystem-
  1012.            supplied interface that emulates Windows, POSIX, or some
  1013.            other operating system.
  1014.  
  1015.         FAT
  1016.         FAT
  1017.            File allocation table
  1018.               (adjective: an NT-installable file system that was native
  1019.               to DOS; also, a type of disk partition)
  1020.  
  1021.         fault tolerance
  1022.         fault tolerance
  1023.            An optional feature of the Windows NT operating system
  1024.            environment, which includes the end-user-visible Windows
  1025.            DiskMan utility supported by an NT-supplied intermediate
  1026.            driver that handles disk partition mirroring, striping, and
  1027.            volume set management.
  1028.  
  1029.         FCB
  1030.         FCB
  1031.            File control block
  1032.               An internal FS structure in which a file system maintains
  1033.               state for an open file.
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.                             Glossary of Terms and Acronyms     G-15     
  1053.                             Glossary of Terms and Acronyms     G-15     
  1054.  
  1055.  
  1056.              file object
  1057.              file object
  1058.                 A user-mode object that represents an open instance of a
  1059.                 file, device, directory, or volume that is accessed through
  1060.                 the file handle returned by a protected subsystem's function
  1061.                 that calls down to a system service that opens (or creates)
  1062.                 a file object . Every file handle contains a "hidden"
  1063.                 kernel-mode event object, so that callers of the I/O system
  1064.                 services can wait on a file handle.
  1065.                 At any given moment, several file objects can be associated
  1066.                 with a single, shared data file, but each such file object
  1067.                 has a unique handle and maintains an object-specific value
  1068.                 for the current file pointer.
  1069.                    A file object is sometimes called a "persistent object"
  1070.                    because the (file, device, directory, or volume) entity
  1071.                    that backs any run-time set of file objects is retained
  1072.                    across system boots.
  1073.  
  1074.              FS
  1075.              FS
  1076.                 File system
  1077.                    An FS is a file system driver that registers itself with
  1078.                    the NT I/O Manager as an active file system. Unlike many
  1079.                    other operating systems, NT does not have a particular
  1080.                    must-be-resident file system, and several NT file systems
  1081.                    can be active at the same time. NT file systems are
  1082.                    dynamically located when a volume is mounted or when a
  1083.                    remote name is being resolved: the I/O Manager calls the
  1084.                    registered FSs in turn until one file system "recognizes"
  1085.                    the volume structure or remote name.
  1086.                    Examples of NT-supplied file systems are FAT, HPFS, NTFS,
  1087.                    CDFS, the LAN Manager redirector, NPFS (named pipe file
  1088.                    system), and RAW.
  1089.  
  1090.              FSD
  1091.              FSD
  1092.                 File system driver
  1093.                    The FSD refers to the portion of a driver that executes
  1094.                    in the context of the caller, to which an I/O request is
  1095.                    dispatched when the request is originally made. The FSD
  1096.                    has no process virtual address space and no particular
  1097.                    thread context because it operates in the context of
  1098.                    whoever happens to call it.
  1099.                    An FSD also executes in the context of the lower-level
  1100.                    (intermediate or mass storage device) driver's DPC
  1101.                    routine when the I/O operation is being completed if the
  1102.                    FSD indicated that it should be called upon completion of
  1103.                    the IRP.
  1104.                    The term FSD normally refers to the DD (device driver)
  1105.                    part of a file system driver only when the driver also
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.         G-16     Kernel-mode Driver Design Guide
  1123.         G-16     Kernel-mode Driver Design Guide
  1124.  
  1125.  
  1126.               has an FSP associated with it; otherwise, it's called
  1127.               simply a device driver.
  1128.  
  1129.  
  1130.  
  1131.  
  1132.  
  1133.  
  1134.  
  1135.  
  1136.  
  1137.  
  1138.  
  1139.  
  1140.  
  1141.  
  1142.  
  1143.  
  1144.  
  1145.  
  1146.  
  1147.  
  1148.  
  1149.  
  1150.  
  1151.  
  1152.  
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164.  
  1165.  
  1166.  
  1167.  
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189.                             Glossary of Terms and Acronyms     G-17     
  1190.                             Glossary of Terms and Acronyms     G-17     
  1191.  
  1192.  
  1193.              FSP
  1194.              FSP
  1195.                 File system process
  1196.                    The FSP usually refers to a set of device-dedicated or
  1197.                    system worker threads that aid a file system driver (FSD)
  1198.                    in getting work done, but can also refer to a kernel-mode
  1199.                    process set up by an FSD. FSP threads are generally used
  1200.                    when a file system driver needs a thread context in which
  1201.                    to work. An example is when the driver needs to be able
  1202.                    to wait without tying up the calling thread. An FSP
  1203.                    kernel-mode process is used only when an FSD must have a
  1204.                    driver-specific process address space in which its
  1205.                    device-dedicated threads execute. (Most NT file system
  1206.                    drivers conserve system memory by not creating their own
  1207.                                                      ___
  1208.                    kernel-mode processes.)
  1209.                    Communication between the FSD and the FSP threads is
  1210.                    performed through the use of a communication region. This
  1211.                    region is generally allocated in a device object's device
  1212.                    extension and consists of an interlocked queue and a
  1213.                    synchronization event. See also device object, device
  1214.                    extension, and event object.
  1215.                    Note that any NT driver (not just file systems) can
  1216.                    create one or more device-dedicated threads or use system
  1217.                    worker threads. In particular, an NT driver should create
  1218.                    a thread for I/O operations that use synchronization
  1219.                    mechanisms (such as events, timers, semaphores, mutexes,
  1220.                    etc.) other than spin locks. Such a driver's thread can
  1221.                    wait for an indefinite, nonzero interval on a Kernel-
  1222.                    defined dispatcher object, but context switches to the
  1223.                    thread slow down the driver's I/O operations.
  1224.  
  1225.              GUID
  1226.              GUID
  1227.                 Globally unique identifier
  1228.                    See SID.
  1229.  
  1230.              HAL
  1231.              HAL
  1232.                 Hardware abstraction layer
  1233.                    An NT executive component that provides platform-specific
  1234.                    support for the NT Kernel, I/O Manager, kernel-mode
  1235.                    debuggers, and lowest-level device drivers. The HAL
  1236.                    exports routines that abstract platform-specific hardware
  1237.                    details about caches, I/O buses, interrupts, etc. and
  1238.                    provides an interface between the platform's hardware and
  1239.                    the system software. For example, the HAL implements a
  1240.                    routine to map each device driver's bus-relative device
  1241.                    interrupt vector to a system-assigned vector with a
  1242.                    corresponding platform-specific hardware priority
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.  
  1259.  
  1260.         G-18     Kernel-mode Driver Design Guide
  1261.         G-18     Kernel-mode Driver Design Guide
  1262.  
  1263.  
  1264.               (DIRQL), as well as several routines that provide DMA-
  1265.               transfer support.
  1266.  
  1267.         hardware exception
  1268.         hardware exception
  1269.            See SEH.
  1270.  
  1271.  
  1272.  
  1273.  
  1274.  
  1275.  
  1276.  
  1277.  
  1278.  
  1279.  
  1280.  
  1281.  
  1282.  
  1283.  
  1284.  
  1285.  
  1286.  
  1287.  
  1288.  
  1289.  
  1290.  
  1291.  
  1292.  
  1293.  
  1294.  
  1295.  
  1296.  
  1297.  
  1298.  
  1299.  
  1300.  
  1301.  
  1302.  
  1303.  
  1304.  
  1305.  
  1306.  
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.  
  1326.  
  1327.  
  1328.                             Glossary of Terms and Acronyms     G-19     
  1329.                             Glossary of Terms and Acronyms     G-19     
  1330.  
  1331.  
  1332.              HBA
  1333.              HBA
  1334.                 Host bus adapter
  1335.                    A hardware device that "connects" NT and a SCSI bus. A
  1336.                    SCSI HBA driver usually manages the lower layers of the
  1337.                    SCSI-II protocol. See miniport driver; see also port
  1338.                    driver, class driver, and SCSI.
  1339.  
  1340.              HPFS
  1341.              HPFS
  1342.                 High performance file system
  1343.                    An NT-supplied installable file system
  1344.  
  1345.              hyperspace
  1346.              hyperspace
  1347.                 A block of virtual memory somewhere in kernel space,
  1348.                 dedicated to the use of the NT Memory Manager. Every
  1349.                 instance of a user-mode virtual address space has an
  1350.                 associated hyperspace area where the Memory Manager
  1351.                 maintains internal data (such as page table pages and WSLs)
  1352.                 for the current process. See also kernel space and user
  1353.                 space.
  1354.  
  1355.              IDB
  1356.              IDB
  1357.                 Interrupt dispatch block
  1358.                    An internal structure used by the NT Kernel.
  1359.  
  1360.  
  1361.  
  1362.  
  1363.  
  1364.  
  1365.  
  1366.  
  1367.  
  1368.  
  1369.  
  1370.  
  1371.  
  1372.  
  1373.  
  1374.  
  1375.  
  1376.  
  1377.  
  1378.  
  1379.  
  1380.  
  1381.  
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.  
  1392.  
  1393.  
  1394.  
  1395.  
  1396.  
  1397.  
  1398.  
  1399.         G-20     Kernel-mode Driver Design Guide
  1400.         G-20     Kernel-mode Driver Design Guide
  1401.  
  1402.  
  1403.         IDT
  1404.         IDT
  1405.            Interrupt dispatch table
  1406.               A Kernel-defined call table with a platform-dependent
  1407.               number of first-level entries (some for DIRQL ISRs) and
  1408.               second-level entries for interrupt transfer routines
  1409.               (dependent on a first-level ISR). For symmetric
  1410.               multiprocessor platforms, the Kernel sets up an IDT for
  1411.               each processor. See also multiprocessor machine.
  1412.               The NT Kernel reserves eight first-level entries per IDT
  1413.               for its own use; the remaining first-level entries can be
  1414.               connected to a platform-specific bus interrupt by the HAL
  1415.               or to a device interrupt. The Kernel's reserved entries
  1416.               (in low-to-high IRQL priority) are defined by the
  1417.               following constants:
  1418.               n   PASSIVE_LEVEL - execute thread.
  1419.               n
  1420.               n   APC_LEVEL - execute special Kernel APC.
  1421.               n
  1422.               n   DISPATCH_LEVEL - dispatch (execute DPC).
  1423.               n
  1424.               n   WAKE_LEVEL - debugger execution.
  1425.               n
  1426.               n   CLOCK2_LEVEL - interval-timer execution.
  1427.               n
  1428.               n   REQUEST_LEVEL - interprocessor request.
  1429.               n
  1430.               n   POWER_LEVEL - power failure notification.
  1431.               n
  1432.               n   HIGH_LEVEL - machine checks or bus errors.
  1433.               n
  1434.               The set of software and hardware interrupt vectors mapped
  1435.               to these constants is platform-dependent, but none can be
  1436.               connected to a driver's interrupt object. Note that the
  1437.               constants PASSIVE_LEVEL through DISPATCH_LEVEL and
  1438.               WAKE_LEVEL correspond to software interrupt vectors.
  1439.               DIRQLs for device drivers usually have IRQL priority
  1440.               higher than DISPATCH_LEVEL but lower than CLOCK2_LEVEL.
  1441.  
  1442.         IFS
  1443.         IFS
  1444.            Installable file system
  1445.               See FS.
  1446.  
  1447.         integral subsystem
  1448.         integral subsystem
  1449.            A protected subsystem (server) that performs an essential
  1450.            operating system task. For NT, this group includes the Local
  1451.            Security Authority, the Security Accounts Manager, the
  1452.            Session Manager, and the network server. See also protected
  1453.            subsystem.
  1454.  
  1455.  
  1456.  
  1457.  
  1458.  
  1459.  
  1460.  
  1461.  
  1462.  
  1463.  
  1464.  
  1465.  
  1466.  
  1467.  
  1468.  
  1469.  
  1470.  
  1471.  
  1472.  
  1473.  
  1474.  
  1475.  
  1476.  
  1477.                             Glossary of Terms and Acronyms     G-21     
  1478.                             Glossary of Terms and Acronyms     G-21     
  1479.  
  1480.  
  1481.              intermediate driver
  1482.              intermediate driver
  1483.                 An intermediate driver processes I/O requests "between" the
  1484.                 highest-level driver (frequently an FS) and the lowest-level
  1485.                 driver that controls the hardware device for which the
  1486.                 request is bound. See also layered driver.
  1487.                    Examples of intermediate drivers include the NT ftdisk
  1488.                    driver, which supports fault tolerance, and many class
  1489.                    drivers.
  1490.  
  1491.              interrupt
  1492.              interrupt
  1493.                 An asynchronous hardware signal, usually indicating that a
  1494.                 peripheral device needs service, that is detected by the
  1495.                 processor. An interrupt causes the processor to save state,
  1496.                 to branch to a fixed location, and to resume execution at
  1497.                 that location. See also IDT.
  1498.  
  1499.              interrupt object
  1500.              interrupt object
  1501.                 A kernel-mode-only, Kernel-defined control object type, used
  1502.                 to connect a hardware interrupt source (see DIRQL) and an
  1503.                 ISR to an IDT entry, or to connect an ISR and an interrupt
  1504.                 transfer routine (dependent on the ISR at its IRQL) to a
  1505.                 second-level IDT entry.
  1506.                 Each interrupt object:
  1507.                 n  Can be associated with a single IDT entry (and,
  1508.                 n
  1509.                    therefore, with a single processor in a multiprocessor
  1510.                    machine).
  1511.                 n  Is either LevelSensitive or Latched, depending on the
  1512.                 n
  1513.                    platform or device.
  1514.                 n  Can be one of several interrupt objects associated with a
  1515.                 n
  1516.                    given IDT entry if and only if every interrupt object for
  1517.                    that entry is of a single type (LevelSensitive or
  1518.                    Latched).
  1519.                 For a second-level IDT entry, an ISR (e.g., for a bus
  1520.                 adapter) associated with a first-level IRQL routes the
  1521.                 interrupt to the (device-specific) interrupt transfer
  1522.                 routine for service via its entry in the IDT.
  1523.                 When more than one set of interrupt objects are connected to
  1524.                 the same first-level IDT entry, the corresponding ISRs are
  1525.                 called in the same order in which they were connected.
  1526.  
  1527.              invalid page
  1528.              invalid page
  1529.                 A page-sized range of virtual addresses for which a page
  1530.                 fault occurs when any address in the range is referenced.
  1531.                 For NT drivers, referencing an invalid page causes a fatal
  1532.                 page fault unless the driver is running at an IRQL <
  1533.                 DISPATCH_LEVEL when the reference occurs.
  1534.  
  1535.  
  1536.  
  1537.  
  1538.  
  1539.  
  1540.  
  1541.  
  1542.  
  1543.  
  1544.  
  1545.  
  1546.  
  1547.  
  1548.  
  1549.  
  1550.  
  1551.         G-22     Kernel-mode Driver Design Guide
  1552.         G-22     Kernel-mode Driver Design Guide
  1553.  
  1554.  
  1555.         I/O stack location
  1556.         I/O stack location
  1557.            a.k.a. "stack location"
  1558.               An I/O stack location refers to the part of an IRP that
  1559.               is allocated for each driver in a chain of layered
  1560.               drivers. Each driver owns one of the stack locations in
  1561.               the packet and obtains driver-specific information about
  1562.               what I/O operation to carry out on the target device,
  1563.               using the supplied arguments. It is also used to store
  1564.               context about the driver during I/O completion so that
  1565.               the driver's I/O completion routine can perform its
  1566.               cleanup operations.
  1567.  
  1568.         I/O status block
  1569.         I/O status block
  1570.            An I/O status block is a data structure that is part of each
  1571.            IRP. An I/O status block serves two purposes:
  1572.            1  For asynchronous system calls, it provides the user (or a
  1573.               higher-level driver's IoCompletion routine) a way of
  1574.               determining whether or not the service worked when the
  1575.               IRP is completed.
  1576.            2  It also provides more information about why the service
  1577.               either worked or did not work.
  1578.            The type definition of an I/O status block is as follows:
  1579.  
  1580.            typedef struct _IO_STATUS_BLOCK {
  1581.               NTSTATUS Status;
  1582.               ULONG Information;
  1583.            } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
  1584.  
  1585.            Upon completion of a system service, the Information member
  1586.            supplies the caller with more information about what
  1587.            actually occurred. For example, this member contains the
  1588.            number of bytes actually read from a file after a read
  1589.            operation.
  1590.  
  1591.  
  1592.  
  1593.  
  1594.  
  1595.  
  1596.  
  1597.  
  1598.  
  1599.  
  1600.  
  1601.  
  1602.  
  1603.  
  1604.  
  1605.  
  1606.  
  1607.  
  1608.  
  1609.  
  1610.  
  1611.  
  1612.  
  1613.  
  1614.  
  1615.  
  1616.  
  1617.  
  1618.  
  1619.  
  1620.                             Glossary of Terms and Acronyms     G-23     
  1621.                             Glossary of Terms and Acronyms     G-23     
  1622.  
  1623.  
  1624.              IPC
  1625.              IPC
  1626.                 Interprocess communication
  1627.                    In addition to synchronization primitives, the NT system
  1628.                    has two defined, message-passing mechanisms for IPC:
  1629.                    1   LPC, defining the port object type with a server
  1630.                        process that supplies system (port) services to local
  1631.                        (using the same physical memory on a single system)
  1632.                        client processes.
  1633.                    2   RPC, with an NT-supplied runtime library that
  1634.                        implements such RPC capabilities as binding a client
  1635.                        process in one address space with a server process in
  1636.                        another address space and sending necessary messages
  1637.                        to make a remote procedure call possible.
  1638.                    The system-supplied named pipe file system supports LPC.
  1639.                    The NT LAN Manager redirector also implements named pipes
  1640.                    as a transport layer to connect clients to application
  1641.                    servers (RPC).
  1642.  
  1643.              IRP
  1644.              IRP
  1645.                 I/O request packet
  1646.                    An IRP is the basic I/O Manager structure used to
  1647.                    communicate with drivers and to allow drivers to
  1648.                    communicate with each other. A packet consists of two
  1649.                    different parts:
  1650.                    1   Header, or fixed portion of the packet - This is used
  1651.                        ______     ___________________________
  1652.                        by the I/O Manager to store information about the
  1653.                        original request, such as the caller's parameters,
  1654.                        the address of the device object upon which the file
  1655.                        is open, etc. It is also used by drivers for storing
  1656.                        such information as the final status of the request.
  1657.                        See also I/O status block and device object.
  1658.                    2   I/O stack locations - Following the header is a set
  1659.                        ___________________
  1660.                        of I/O stack locations, one per driver in the chain
  1661.                        of layered drivers for which the request is bound.
  1662.                        Each stack location contains the parameters, function
  1663.                        codes, and context used by the corresponding driver
  1664.                        to determine what it is supposed to be doing.
  1665.  
  1666.              IRQ
  1667.              IRQ
  1668.                 A hardware line over which a peripheral device, bus
  1669.                 controller, other processor, or the Kernel signals a request
  1670.                 for service to the microprocessor. (IRQ is a common
  1671.                 abbreviation for "interrupt request lines.") See interrupt.
  1672.  
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678.  
  1679.  
  1680.  
  1681.  
  1682.  
  1683.  
  1684.  
  1685.  
  1686.  
  1687.  
  1688.  
  1689.  
  1690.  
  1691.  
  1692.         G-24     Kernel-mode Driver Design Guide
  1693.         G-24     Kernel-mode Driver Design Guide
  1694.  
  1695.  
  1696.         IRQL
  1697.         IRQL
  1698.            Interrupt request level
  1699.               The hardware priority level at which a given kernel-mode
  1700.               routine runs, thereby "masking off" interrupts with
  1701.               equivalent and lower IRQL on the processor. Note that
  1702.               such a routine can be preempted by any interrupt with a
  1703.               higher IRQL. Note also that running at IRQL
  1704.               DISPATCH_LEVEL or higher prevents threads (even those
  1705.               with the highest real-time priority level) from running
  1706.               on the same processor until the current kernel-mode
  1707.               routine lowers IRQL. However, running at raised IRQL on a
  1708.               given processor has no effect on the IRQL priority of any
  1709.               other processor in a symmetric multiprocessor machine.
  1710.               See also IDT, interrupt object, IRQ, ISR, multiprocessor
  1711.               machine, and priority.
  1712.  
  1713.         ISA
  1714.         ISA
  1715.            Industry standard architecture
  1716.               Also, a standard defining the architecture of the PC bus
  1717.               (a.k.a. "AT bus standard").
  1718.  
  1719.         ISR
  1720.         ISR
  1721.            Interrupt service routine
  1722.               A routine whose function is to service a device when it
  1723.               generates an interrupt.
  1724.               An NT driver's ISR executes at raised IRQL, usually at
  1725.               the DIRQL of the interrupt object(s) set up for its
  1726.               device (i.e., drivers connected to second-level IDT
  1727.               entries execute at the IRQL of the first-level entry they
  1728.               connect to). Every NT driver's ISR should execute as
  1729.               quickly as possible, doing only what is necessary to save
  1730.               sufficient state, to make the device stop generating
  1731.               interrupts, and to queue a DPC that completes interrupt
  1732.               processing at a lower IRQL.
  1733.  
  1734.         kernel mode
  1735.         kernel mode
  1736.            The privileged processor mode in which NT executive code
  1737.            runs. A driver or thread running in kernel mode has access
  1738.            to system memory and hardware. See also user mode.
  1739.  
  1740.         kernel space
  1741.         kernel space
  1742.            (a.k.a. "system space")
  1743.               A block of virtual memory, dedicated to the use of
  1744.               kernel-mode code. Generally, the NT kernel space is a
  1745.               range of high-order virtual addresses around one gigabyte
  1746.               in size. See also hyperspace, pool memory, and user
  1747.               space.
  1748.  
  1749.  
  1750.  
  1751.  
  1752.  
  1753.  
  1754.  
  1755.  
  1756.  
  1757.  
  1758.  
  1759.  
  1760.  
  1761.  
  1762.  
  1763.  
  1764.                             Glossary of Terms and Acronyms     G-25     
  1765.                             Glossary of Terms and Acronyms     G-25     
  1766.  
  1767.  
  1768.              key object
  1769.              key object
  1770.                 A NT object type defined by the Configuration Manager that
  1771.                 represents an entry in the configuration registry database.
  1772.                 See also Registry.
  1773.  
  1774.              latched interrupt
  1775.              latched interrupt
  1776.                 (a.k.a. "edge-triggered interrupt")
  1777.                    An interrupt that occurs at the transition from
  1778.                    deasserted to asserted on the IRQ line.
  1779.  
  1780.              layered driver
  1781.              layered driver
  1782.                 One of a collection of drivers that respond to the same
  1783.                 IRPs. See also I/O stack location.
  1784.                    The term "layered driver" describes the highest-level and
  1785.                    lowest-level drivers in a chain of layered drivers that
  1786.                    process the same IRPs, along with all intermediate
  1787.                    drivers in the chain.
  1788.  
  1789.              LBN
  1790.              LBN
  1791.                 Logical block number
  1792.                    A logical block number identifies a physical block on a
  1793.                    disk, using a logical address rather than physical disk
  1794.                    values (for cylinder, track, and sector). For a disk with
  1795.                    N blocks (a.k.a. "sectors"), the corresponding LBNs are 0
  1796.                    through (N - 1). See also MCB and VBN.
  1797.  
  1798.              level-sensitive interrupt
  1799.              level-sensitive interrupt
  1800.                 An interrupt that occurs when the signal is asserted on the
  1801.                 IRQ line.
  1802.  
  1803.              LPC
  1804.              LPC
  1805.                 Local procedure call
  1806.                    See also IPC and port object.
  1807.  
  1808.  
  1809.  
  1810.  
  1811.  
  1812.  
  1813.  
  1814.  
  1815.  
  1816.  
  1817.  
  1818.  
  1819.  
  1820.  
  1821.  
  1822.  
  1823.  
  1824.  
  1825.  
  1826.  
  1827.  
  1828.  
  1829.  
  1830.  
  1831.  
  1832.  
  1833.  
  1834.  
  1835.  
  1836.  
  1837.         G-26     Kernel-mode Driver Design Guide
  1838.         G-26     Kernel-mode Driver Design Guide
  1839.  
  1840.  
  1841.         little-endian
  1842.         little-endian
  1843.            Refers to a memory architecture in which the byte layout is
  1844.            as follows:
  1845.            n  Byte N is the least significant (and, in conventional
  1846.            n
  1847.               layout diagrams, the "rightmost") byte of:
  1848.               n   A word composed of bytes N and (N + 1).
  1849.               n
  1850.               n   A double word composed of bytes N, (N + 1), (N + 2),
  1851.               n
  1852.                   and (N + 3).
  1853.               n   A K-byte memory entity composed of bytes N, (N +
  1854.               n
  1855.                   1),...,(N + K - 1).
  1856.            n  The address of the preceding word, double word, or K-byte
  1857.            n
  1858.               entity is its least significant byte, N.
  1859.            Intel microprocessors always support little-endian
  1860.            addressing.  A MIPS-based machine can be configured for
  1861.            either big-endian or little-endian addressing. For a little-
  1862.            endian configuration, the least significant bit of a 16-bit
  1863.            short value is the "rightmost" bit at byte N, while the most
  1864.            short
  1865.            significant bit is the "leftmost" bit of byte (N + 1). See
  1866.            also big-endian.
  1867.  
  1868.         LSA
  1869.         LSA
  1870.            Local Security Authority
  1871.  
  1872.         LU
  1873.         LU
  1874.            Logical unit
  1875.               From a SCSI-II HBA driver's point of view, a physical or
  1876.               virtual peripheral device, addressable through a TID,
  1877.               attached to a SCSI bus.
  1878.  
  1879.         LUID
  1880.         LUID
  1881.            Locally unique identifier
  1882.               See SID.
  1883.  
  1884.         MACL
  1885.         MACL
  1886.            Mandatory access control list
  1887.               A part of the security descriptor for each object in a
  1888.               system with a B1 or higher security rating from the U.S.
  1889.               National Computer Security Center.
  1890.  
  1891.         map
  1892.         map
  1893.            (1) To translate a virtual or logical address into a
  1894.            physical address. See also MDL.
  1895.            (2) To alias a bus-relative interrupt vector to a system-
  1896.            assigned interrupt vector. See also HAL.
  1897.  
  1898.  
  1899.  
  1900.  
  1901.  
  1902.  
  1903.  
  1904.  
  1905.  
  1906.  
  1907.  
  1908.  
  1909.  
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915.  
  1916.                             Glossary of Terms and Acronyms     G-27     
  1917.                             Glossary of Terms and Acronyms     G-27     
  1918.  
  1919.  
  1920.              MCB
  1921.              MCB
  1922.                 Map control block
  1923.                    An MCB is a structure provided by the FsRtl (File System
  1924.                                                          FsRtl
  1925.                                                                 _    _
  1926.                    Run-time Library) package to aid NT file systems in
  1927.                    _   _    _
  1928.                    mapping the VBNs for a file to the corresponding LBNs on
  1929.                    the disk.
  1930.  
  1931.              MDL
  1932.              MDL
  1933.                 Memory descriptor list
  1934.                    A memory descriptor list uses an array of physical page
  1935.                    frame numbers (PFNs) to describe the pages that back a
  1936.                    virtual memory range.
  1937.  
  1938.              method
  1939.              method
  1940.                 A routine supplied with an NT object type that handles
  1941.                 standard operations (such as open, close, delete, parse,
  1942.                 dump, and read or reset security attributes) on every
  1943.                 instance of the object type.
  1944.  
  1945.              MIDI
  1946.              MIDI
  1947.                 Musical instrument digital interface
  1948.  
  1949.              miniport driver
  1950.              miniport driver
  1951.                 (1) An HBA-specific driver, linked against the NT-supplied
  1952.                 SCSI port driver, that drives a SCSI bus.
  1953.                 (2) A video-adapter-specific driver, linked against the NT-
  1954.                 supplied video port driver.
  1955.  
  1956.              mirror driver
  1957.              mirror driver
  1958.                 a.k.a. "shadow driver"
  1959.                    An intermediate (layered somewhere between an FSD and a
  1960.                    disk DD) device driver whose responsibility is to keep a
  1961.                    duplicate of a disk partition.
  1962.  
  1963.              mount
  1964.              mount
  1965.                 Operation that requests a file system to make a volume
  1966.                 useable by the I/O Manager. This is done by filling in the
  1967.                 information in a VPB which indicates the serial number and
  1968.                 label of the volume, as well as by filling in the pointer to
  1969.                 the file system's device object that represents the "volume"
  1970.                 mounted on the real device.
  1971.  
  1972.  
  1973.  
  1974.  
  1975.  
  1976.  
  1977.  
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.  
  1985.  
  1986.  
  1987.  
  1988.  
  1989.  
  1990.  
  1991.  
  1992.  
  1993.         G-28     Kernel-mode Driver Design Guide
  1994.         G-28     Kernel-mode Driver Design Guide
  1995.  
  1996.  
  1997.         multiprocessor machine
  1998.         multiprocessor machine
  1999.            A platform with more than one CPU. NT is designed to run on
  2000.            multiprocessor machines, usually configured to be:
  2001.            n  Homogenous - all CPUs are identical, and either all have
  2002.            n
  2003.               __________
  2004.               identical coprocessors or none has a coprocessor.
  2005.            n  Closely coupled - all CPUs share memory and have uniform
  2006.            n
  2007.               _______________
  2008.               access to memory.
  2009.            n  Symmetric - every CPU can access memory, handle any
  2010.            n
  2011.               _________
  2012.               interrupt, and access I/O control registers just like
  2013.               every other CPU in the system. Note that any version of
  2014.               NT that runs on a symmetric multiprocessor machine also
  2015.               runs unchanged on a uniprocessor machine based on the
  2016.                    _________
  2017.               same CPU.
  2018.               While NT can run on asymmetric platforms, configured with
  2019.                                   __________
  2020.               a master CPU that handles all IRQs and one or more slave
  2021.               CPUs as long as the platform is both homogenous and
  2022.               closely coupled, the system has been designed to run
  2023.               primarily on symmetric multiprocessor platforms because
  2024.               SMP machines have better performance characteristics,
  2025.               particularly for I/O.
  2026.  
  2027.         mutex object
  2028.         mutex object
  2029.            A kernel-mode-only, Kernel-defined dispatcher object type,
  2030.            used to provide mutually-exclusive, deadlock-free access to
  2031.            a resource.
  2032.               A mutex owner (thread) must run exclusively in kernel
  2033.               mode while it retains ownership; an attempt to switch to
  2034.               user mode while holding a mutex causes a system crash.
  2035.               Ownership of a mutex by a given thread has the following
  2036.               effects:
  2037.               n   Prevents the owning thread's process from leaving the
  2038.               n
  2039.                   balance set.
  2040.               n   Raises the owning thread's priority to the the lowest
  2041.               n
  2042.                   real-time priority value if the owning thread's
  2043.                   priority is not already higher.
  2044.               n   Prevents the delivery of normal kernel-mode APCs.
  2045.               n
  2046.               Each mutex object has an associated level value, and a
  2047.               given thread may acquire ownership of a mutex if and only
  2048.               if:
  2049.               n   The requested mutex is currently unowned.
  2050.               n
  2051.               n   The requesting thread does not already own a mutex of
  2052.               n
  2053.                                              ___
  2054.                   a (numerically) higher level.
  2055.               These requirements, and the requirement that a mutex
  2056.               owner run exclusively in kernel mode, prevent deadlocks.
  2057.               Note that recursive ownership of a mutex is possible.
  2058.               However, any thread that claims a mutex N times must
  2059.  
  2060.  
  2061.  
  2062.  
  2063.  
  2064.  
  2065.  
  2066.  
  2067.  
  2068.  
  2069.  
  2070.  
  2071.  
  2072.  
  2073.  
  2074.  
  2075.  
  2076.                             Glossary of Terms and Acronyms     G-29     
  2077.                             Glossary of Terms and Acronyms     G-29     
  2078.  
  2079.  
  2080.                    explicitly release that mutex N times in order to set the
  2081.                    mutex to the Signaled state.
  2082.  
  2083.  
  2084.  
  2085.  
  2086.  
  2087.  
  2088.  
  2089.  
  2090.  
  2091.  
  2092.  
  2093.  
  2094.  
  2095.  
  2096.  
  2097.  
  2098.  
  2099.  
  2100.  
  2101.  
  2102.  
  2103.  
  2104.  
  2105.  
  2106.  
  2107.  
  2108.  
  2109.  
  2110.  
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.  
  2117.  
  2118.  
  2119.  
  2120.  
  2121.  
  2122.  
  2123.  
  2124.  
  2125.  
  2126.  
  2127.  
  2128.  
  2129.  
  2130.  
  2131.  
  2132.  
  2133.  
  2134.  
  2135.  
  2136.  
  2137.  
  2138.  
  2139.  
  2140.  
  2141.  
  2142.  
  2143.         G-30     Kernel-mode Driver Design Guide
  2144.         G-30     Kernel-mode Driver Design Guide
  2145.  
  2146.  
  2147.         native services
  2148.         native services
  2149.            See system services.
  2150.  
  2151.         NLS
  2152.         NLS
  2153.            National language support
  2154.               A set of routines that give applications access to
  2155.               locale-specific information. See also Unicode.
  2156.  
  2157.         nonpaged pool
  2158.         nonpaged pool
  2159.            See pool memory.
  2160.  
  2161.         NTFS
  2162.         NTFS
  2163.            NT file system
  2164.               A file system, native to NT, that supports file system
  2165.               and file data recovery, extremely large storage media,
  2166.               and various other features.
  2167.  
  2168.         object
  2169.         object
  2170.            A single, run-time instance of a system-defined object type.
  2171.            Objects visible in user mode include process, thread,
  2172.            section, file, event, semaphore, key, timer, port, object
  2173.            directory, symbolic link, and token objects.
  2174.            Many user-mode objects are implemented through the use of a
  2175.            corresponding kernel-mode object, including processes,
  2176.            threads, events, semaphores, and timers. Other user-mode
  2177.            objects contain "hidden" kernel-mode objects, such as the
  2178.            event associated with each file object.
  2179.               Kernel-mode-only objects include APC, DPC, device queue,
  2180.               interrupt, mutex, driver, device, adapter, controller,
  2181.               and stream file objects.
  2182.  
  2183.         object directory object
  2184.         object directory object
  2185.            A type defined by the Object Manager and used to implement
  2186.            hierarchical object names.
  2187.               Note that file system directories are implemented as NT
  2188.               file objects, not as object directory objects.
  2189.  
  2190.  
  2191.  
  2192.  
  2193.  
  2194.  
  2195.  
  2196.  
  2197.  
  2198.  
  2199.  
  2200.  
  2201.  
  2202.  
  2203.  
  2204.  
  2205.  
  2206.  
  2207.  
  2208.  
  2209.  
  2210.  
  2211.  
  2212.  
  2213.  
  2214.  
  2215.  
  2216.                             Glossary of Terms and Acronyms     G-31     
  2217.                             Glossary of Terms and Acronyms     G-31     
  2218.  
  2219.  
  2220.              object type
  2221.              object type
  2222.                 An opaque data structure that defines a protected entity
  2223.                 implemented and manipulated by the operating system. See
  2224.                 also opaque.
  2225.                    Every user-visible object has:
  2226.                    n   A type (whose name must be unique).
  2227.                    n
  2228.                    n   Two parts:
  2229.                    n
  2230.                        1  A header operated on by the NT Object Manager.
  2231.                             ______
  2232.                        2  A body operated on by type-specific system
  2233.                             ____
  2234.                           services. For example, the system service that
  2235.                           reads a file operates on an open file object.
  2236.                    n   A set of standardized rules for object creation,
  2237.                    n
  2238.                        deletion, protection, access, management, and naming.
  2239.                    User-visible objects can contain "hidden" kernel-mode
  2240.                    objects. For example, a user-mode thread can wait on a
  2241.                    file handle because it contains a hidden, kernel-mode
  2242.                    event object.
  2243.                    Kernel-mode objects are visible to (and directly
  2244.                    accessible only by) the executive component that defined
  2245.                    a given object type. They are are indirectly accessible
  2246.                    to other kernel-mode code through the type-specific
  2247.                    functions exported by the defining component (e.g.,
  2248.                    KeInitializeDeviceQueue operates on device queue
  2249.                    KeInitializeDeviceQueue
  2250.                    objects).
  2251.  
  2252.              opaque
  2253.              opaque
  2254.                 Pertains to any data structure (including NT objects)
  2255.                 defined with a deliberately hidden internal structure that
  2256.                 is known only to the executive component that defined the
  2257.                 type. However, the defining component supplies system
  2258.                 services and, usually, kernel-mode functions to manipulate
  2259.                 opaque objects. User-mode data types can also be opaque.
  2260.  
  2261.              paging file
  2262.              paging file
  2263.                 A system file containing the contents of virtual pages that
  2264.                 have been paged out of memory. See also backing store.
  2265.  
  2266.              page frame
  2267.              page frame
  2268.                 A block of contiguous physical addresses used to store the
  2269.                 contents of a virtual page. Note that the virtual page size
  2270.                 and page frame size are usually identical, but that a page
  2271.                 frame size is actually microprocessor-dependent.
  2272.  
  2273.              paged pool
  2274.              paged pool
  2275.                 See pool memory.
  2276.  
  2277.  
  2278.  
  2279.  
  2280.  
  2281.  
  2282.  
  2283.  
  2284.  
  2285.  
  2286.  
  2287.  
  2288.  
  2289.  
  2290.  
  2291.  
  2292.  
  2293.  
  2294.         G-32     Kernel-mode Driver Design Guide
  2295.         G-32     Kernel-mode Driver Design Guide
  2296.  
  2297.  
  2298.         PCR
  2299.         PCR
  2300.            Processor control registers
  2301.               An internal data structure in which the Kernel stores
  2302.               per-processor information.
  2303.  
  2304.         PEB
  2305.         PEB
  2306.            Process environment block
  2307.  
  2308.         PFN
  2309.         PFN
  2310.            Page frame number
  2311.               Also, the database in which the NT Memory Manager
  2312.               maintains information about every physical page in the
  2313.               system. Each PFN is an index for a physical page in the
  2314.               array of records that makes up the PFN database. See also
  2315.               PTE.
  2316.  
  2317.         PIO
  2318.         PIO
  2319.            Programmed I/O
  2320.  
  2321.         polling
  2322.         polling
  2323.            A pernicious, but sometimes necessary, coding technique that
  2324.            wastes CPU cycles in a driver until the physical device
  2325.            updates its registers. NT device drivers should never
  2326.            implement polling loops and should minimize the interval
  2327.            they specify in calls to KeStallExecutionProcessor (no
  2328.                                     KeStallExecutionProcessor
  2329.            longer than 50 microseconds) if they must poll their
  2330.            devices.
  2331.  
  2332.  
  2333.  
  2334.  
  2335.  
  2336.  
  2337.  
  2338.  
  2339.  
  2340.  
  2341.  
  2342.  
  2343.  
  2344.  
  2345.  
  2346.  
  2347.  
  2348.  
  2349.  
  2350.  
  2351.  
  2352.  
  2353.  
  2354.  
  2355.  
  2356.  
  2357.  
  2358.  
  2359.  
  2360.  
  2361.  
  2362.  
  2363.  
  2364.  
  2365.  
  2366.  
  2367.                             Glossary of Terms and Acronyms     G-33     
  2368.                             Glossary of Terms and Acronyms     G-33     
  2369.  
  2370.  
  2371.              pool memory
  2372.              pool memory
  2373.                 Regions located in kernel space from which memory blocks can
  2374.                 be allocated and deallocated dynamically (some other systems
  2375.                 call this "heap memory"). The NT Memory Manager creates two
  2376.                 kinds of pools for system use and for use by drivers via
  2377.                 Ex(ecutive) Support function calls:
  2378.                 Ex
  2379.                 1  Paged pool is a based region that can be paged in and out
  2380.                    __________
  2381.                    of a process's working set. Each process has its own set
  2382.                    of PTEs that map paged pool into its address space.
  2383.                    Touching a page in this pool can cause a page fault at
  2384.                    any time, so drivers should allocate only those data
  2385.                    structures accessed exclusively at IRQL PASSIVE_LEVEL or
  2386.                    APC_LEVEL (see IDT) from paged pool.
  2387.                 2  Nonpaged pool is a based region for which all processes
  2388.                    _____________
  2389.                    share a set of PTEs. The NT Memory Manager guarantees
  2390.                    that nonpaged pool is resident in physical memory at all
  2391.                    times; therefore, this region can be accessed from any
  2392.                    process's address space without causing a page fault.
  2393.                    However, nonpaged pool is a limited system resource.
  2394.                 Drivers should allocate from paged pool for entities that
  2395.                 are accessed exclusively at or below IRQL APC_LEVEL. They
  2396.                 should minimize their usage of nonpaged pool by "saving" it
  2397.                 for data that must be accessed at or above IRQL
  2398.                 DISPATCH_LEVEL. Allocations of contiguous or noncached
  2399.                 memory come from nonpaged pool.
  2400.                 The Memory Manager allocates entities from both pools using
  2401.                 a buddy scheme. See also kernel space.
  2402.  
  2403.              port object
  2404.              port object
  2405.                 An instance of an object type representing a conduit for
  2406.                 messages between local (server/client) processes. It is used
  2407.                 in the LPC (Local Procedure Call) model of NT as an object
  2408.                             _     _         _
  2409.                 accessible to user-mode processes through system services.
  2410.                 The server (callee) process defines a named connection port
  2411.                 object and sets up two (unnamed) communication port objects
  2412.                 when a client (caller) process connects to the named port.
  2413.  
  2414.  
  2415.  
  2416.  
  2417.  
  2418.  
  2419.  
  2420.  
  2421.  
  2422.  
  2423.  
  2424.  
  2425.  
  2426.  
  2427.  
  2428.  
  2429.  
  2430.  
  2431.  
  2432.  
  2433.  
  2434.  
  2435.  
  2436.  
  2437.  
  2438.  
  2439.  
  2440.         G-34     Kernel-mode Driver Design Guide
  2441.         G-34     Kernel-mode Driver Design Guide
  2442.  
  2443.  
  2444.         port driver
  2445.         port driver
  2446.            (1) An NT-supplied SCSI driver that supports a set of class
  2447.            drivers above it and one or more HBA-specific miniport
  2448.            drivers, which link themselves to the NT-dependent port
  2449.            driver (implemented as a dynamic-link library) and call its
  2450.            ScsiPortXxx routines.
  2451.            ScsiPort
  2452.                    ___
  2453.            (2) An NT-supplied video adapter driver that supports a
  2454.            user-level display driver and one or more adapter-specific
  2455.            miniport drivers, which link themselves to the OS-dependent
  2456.            port driver (implemented as a dynamic-link library) and call
  2457.            its VideoPortXxx routines.
  2458.                VideoPort
  2459.                         ___
  2460.            (3) A lowest-level device driver whose device is a so-called
  2461.            "intelligent controller" or a bus adapter. A port driver
  2462.            communicates with one or more class drivers according to an
  2463.            established protocol and synchronizes access to the
  2464.            controller or bus.
  2465.            (4) A lowest-level physical device driver that responds to a
  2466.            set of system-defined device I/O control requests (and,
  2467.            possibly an additional set of driver-defined internal I/O
  2468.            control requests) sent down by a corresponding class driver.
  2469.            See also class driver and miniport driver.
  2470.  
  2471.         POSIX
  2472.         POSIX
  2473.            Portable operating system for (UN)IX
  2474.  
  2475.         PRCB
  2476.         PRCB
  2477.            Processor control block
  2478.            __        _       _
  2479.               An extension of the PCR.
  2480.  
  2481.         priority
  2482.         priority
  2483.            An attribute of a thread that determines when and how often
  2484.            it is scheduled to run. For a running thread, its priority
  2485.            falls into either of two classes, each class with 16 levels:
  2486.            1  Variable priority class has values in the range 0 to 15.
  2487.               ________ ______________
  2488.               This class is used by most threads.
  2489.               Threads with variable priority are always preemptible
  2490.               (scheduled to run round-robin with other threads at the
  2491.               same level). In general, the Kernel manages a variable-
  2492.               priority thread as follows: when the thread is
  2493.               interactive with a user, its priority is high (given a
  2494.               boost); otherwise, its priority decays (by one level per
  2495.               quantum the thread runs) until it reaches its original
  2496.               (programmer-defined) base level.
  2497.            2  Real-time priority class has values in the range 16 to
  2498.               ________________________
  2499.               31. This class is used by time-critical threads, making
  2500.               such a thread preemptible only by a thread with higher
  2501.               priority. Note that a thread running at the highest real-
  2502.  
  2503.  
  2504.  
  2505.  
  2506.  
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512.  
  2513.  
  2514.  
  2515.  
  2516.  
  2517.  
  2518.                             Glossary of Terms and Acronyms     G-35     
  2519.                             Glossary of Terms and Acronyms     G-35     
  2520.  
  2521.  
  2522.                    time priority level could be preempted by a special
  2523.                    Kernel APC if an APC_LEVEL interrupt occurs.
  2524.  
  2525.  
  2526.  
  2527.  
  2528.  
  2529.  
  2530.  
  2531.  
  2532.  
  2533.  
  2534.  
  2535.  
  2536.  
  2537.  
  2538.  
  2539.  
  2540.  
  2541.  
  2542.  
  2543.  
  2544.  
  2545.  
  2546.  
  2547.  
  2548.  
  2549.  
  2550.  
  2551.  
  2552.  
  2553.  
  2554.  
  2555.  
  2556.  
  2557.  
  2558.  
  2559.  
  2560.  
  2561.  
  2562.  
  2563.  
  2564.  
  2565.  
  2566.  
  2567.  
  2568.  
  2569.  
  2570.  
  2571.  
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.  
  2579.  
  2580.  
  2581.  
  2582.  
  2583.  
  2584.  
  2585.         G-36     Kernel-mode Driver Design Guide
  2586.         G-36     Kernel-mode Driver Design Guide
  2587.  
  2588.  
  2589.         priority boosts
  2590.         priority boosts
  2591.            A set of system-defined constant values, supplied when
  2592.            certain device drivers complete an IRP. In general, drivers
  2593.            for interactive devices call IoCompleteRequest with a
  2594.                                         IoCompleteRequest
  2595.            device-type-specific priority boost value. The boost is
  2596.            added to the priority of the user-mode thread that
  2597.            originally requested the I/O operation, in order to
  2598.            compensate for that thread's assumed wait on the I/O.
  2599.  
  2600.         probe
  2601.         probe
  2602.            To check whether a memory access of a particular kind (e.g.,
  2603.            read) to data (e.g., a handle for an object or a buffer) is
  2604.            allowed without causing an access violation. Note that user-
  2605.            supplied argument values are always probed and captured (on
  2606.            the system stack) before an NT system service gets control
  2607.            in kernel mode. The system service is responsible for
  2608.            probing whatever a captured pointer accesses.
  2609.  
  2610.         process object
  2611.         process object
  2612.            A Kernel-defined control object type, representing the
  2613.            virtual address space and control information necessary for
  2614.            the execution of a set of thread objects. A user-mode
  2615.            process object defines the base priority, default affinity,
  2616.            and directory table base value for its threads and for any
  2617.            child processes it creates. Every user-visible process
  2618.            object is implemented through the use of an embedded kernel-
  2619.            mode process object.
  2620.               A kernel-mode-only process object must be initialized
  2621.               before any thread objects that belong to the process.
  2622.               At any given moment, a process is either part of the
  2623.               balance set (Included) or not (Excluded). A kernel-mode
  2624.               process must remain in the balance set as long as any of
  2625.               its threads owns a mutex object. Each thread owning one
  2626.               or more mutexes continues to run until it releases its
  2627.               last mutex, when the thread is suspended. The process is
  2628.               not removed from the balance set until every thread has
  2629.               ___
  2630.               released all mutexes.
  2631.  
  2632.         protected subsystem
  2633.         protected subsystem
  2634.            A server that performs operating system functions or that
  2635.            emulates another operating system, such as WindowsTM or
  2636.            POSIX, on top of the NT executive. See also integral
  2637.            subsystem.
  2638.  
  2639.         PTE
  2640.         PTE
  2641.            Page table entry
  2642.  
  2643.  
  2644.  
  2645.  
  2646.  
  2647.  
  2648.  
  2649.  
  2650.  
  2651.  
  2652.  
  2653.  
  2654.  
  2655.  
  2656.  
  2657.  
  2658.  
  2659.                             Glossary of Terms and Acronyms     G-37     
  2660.                             Glossary of Terms and Acronyms     G-37     
  2661.  
  2662.  
  2663.                    The Memory Manager uses a PTE to represent the state of a
  2664.                    virtual page.
  2665.  
  2666.  
  2667.  
  2668.  
  2669.  
  2670.  
  2671.  
  2672.  
  2673.  
  2674.  
  2675.  
  2676.  
  2677.  
  2678.  
  2679.  
  2680.  
  2681.  
  2682.  
  2683.  
  2684.  
  2685.  
  2686.  
  2687.  
  2688.  
  2689.  
  2690.  
  2691.  
  2692.  
  2693.  
  2694.  
  2695.  
  2696.  
  2697.  
  2698.  
  2699.  
  2700.  
  2701.  
  2702.  
  2703.  
  2704.  
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710.  
  2711.  
  2712.  
  2713.  
  2714.  
  2715.  
  2716.  
  2717.  
  2718.  
  2719.  
  2720.  
  2721.  
  2722.  
  2723.  
  2724.  
  2725.  
  2726.         G-38     Kernel-mode Driver Design Guide
  2727.         G-38     Kernel-mode Driver Design Guide
  2728.  
  2729.  
  2730.         pulse
  2731.         pulse
  2732.            To set an event to the Signaled state, satisfy as many
  2733.            waiters on the event as possible, and to reset the event to
  2734.            the Not-Signaled state.
  2735.  
  2736.         quantum
  2737.         quantum
  2738.            a.k.a. "time slice"
  2739.               A brief period of time during which a given thread
  2740.               executes in a multitasking operating system.
  2741.  
  2742.         quota
  2743.         quota
  2744.            For each process, NT sets a limit on certain system
  2745.            resources the process's threads can use, including quotas
  2746.            for paging-file, paged-pool, and nonpaged-pool usage, as
  2747.            well as for CPU time. As the process's threads run, the
  2748.            Kernel subtracts the CPU time used from the quota. The
  2749.            Memory Manager "charges quota" against the process as its
  2750.            threads use page-file, paged-pool, or nonpaged-pool memory;
  2751.            it also updates these values when threads release memory.
  2752.  
  2753.         raise an exception
  2754.         raise an exception
  2755.            A deliberate transfer of control to an exception handler
  2756.            when an exception occurs. A kernel-mode component, including
  2757.            any NT driver, cannot raise an exeception while running at
  2758.            IRQL > APC_LEVEL without bringing down the system. See also
  2759.            SEH.
  2760.  
  2761.         range
  2762.         range
  2763.            A finite and discrete sequence of values. Note that a
  2764.            virtual address range can be backed by a set of
  2765.            discontiguous physical pages or by a file stored in
  2766.            discontiguous sectors on disk.
  2767.  
  2768.         RAW
  2769.         RAW
  2770.            An NT-supplied file system that is the "last resort" for all
  2771.            NT I/O requests requiring file system support. When the I/O
  2772.            Manager calls active NT file systems to mount a volume, RAW
  2773.            file system driver is always called last, because it
  2774.            recognizes all disk and tape media. However, RAW supplies
  2775.            very primitive file handling capabilities. For example, it
  2776.            treats the whole disk as a single file and supplies
  2777.            physical-disk-level VBN access to the disk.
  2778.               RAW is not an acronym.
  2779.  
  2780.         redirector
  2781.         redirector
  2782.            An NT (network) file system driver that provides access to
  2783.            files on remote machines.
  2784.  
  2785.  
  2786.  
  2787.  
  2788.  
  2789.  
  2790.  
  2791.  
  2792.  
  2793.  
  2794.  
  2795.  
  2796.  
  2797.  
  2798.  
  2799.  
  2800.                             Glossary of Terms and Acronyms     G-39     
  2801.                             Glossary of Terms and Acronyms     G-39     
  2802.  
  2803.  
  2804.              region
  2805.              region
  2806.                 A range of virtual addresses.
  2807.                    When a user-mode caller creates a section or maps a view,
  2808.                    it must specify a region. The NT Memory Manager rounds
  2809.                    the specified region's starting address down to the
  2810.                    nearest host-alignment boundary and rounds its size in
  2811.                    bytes up to the next host-page-size boundary.
  2812.  
  2813.              registry
  2814.              registry
  2815.                 a.k.a. "configuration registry"
  2816.                    A database containing configuration and control data for
  2817.                    the system, including which file systems and drivers to
  2818.                    load at system boot. The NT Configuration Manager exports
  2819.                    system services to manipulate registry key objects
  2820.                    contained in the database.
  2821.  
  2822.              resource
  2823.              resource
  2824.                 An entity (such as a device object, file object, section
  2825.                 object, variable, structure, or buffer) visible to one or
  2826.                 more processes.
  2827.                    In kernel mode, a shared resource is a multiprocessor-
  2828.                    safe synchronization mechanism, rather like a gating
  2829.                    semaphore with a dynamic limit value. Drivers can use
  2830.                    system-supplied Ex(ecutive) Support and/or Rtl (Runtime
  2831.                                    Ex                         Rtl
  2832.                                                                    _  _
  2833.                    Library) functions to control access to a memory entity,
  2834.                    _
  2835.                    such as a file or database, on a multiple-reader (shared
  2836.                    access), single-writer (exclusive access) basis.
  2837.  
  2838.              RPC
  2839.              RPC
  2840.                 Remote procedure call
  2841.                    A call from one process's thread (client) to another's
  2842.                    (server) that exists in a different address space,
  2843.                    usually on another (networked) machine. See also IPC.
  2844.  
  2845.              Rtl functions
  2846.              Rtl functions
  2847.                 There are two general sets of (C) Runtime Library functions
  2848.                                                   _  _    _
  2849.                 supplied with the NT system, one each for user mode and for
  2850.                 kernel mode. All NT drivers can call the kernel-mode Rtl
  2851.                                                                      Rtl
  2852.                 functions. An NT (highest-level) driver cannot call a user-
  2853.                 mode Rtl function unless it is executing in the context of
  2854.                      Rtl
  2855.                 the user-mode thread that requested the driver's current I/O
  2856.                 operation.
  2857.  
  2858.  
  2859.  
  2860.  
  2861.  
  2862.  
  2863.  
  2864.  
  2865.  
  2866.  
  2867.  
  2868.  
  2869.  
  2870.  
  2871.  
  2872.  
  2873.  
  2874.  
  2875.  
  2876.  
  2877.  
  2878.         G-40     Kernel-mode Driver Design Guide
  2879.         G-40     Kernel-mode Driver Design Guide
  2880.  
  2881.  
  2882.         run
  2883.         run
  2884.            verb: to execute on a processor.
  2885.            noun: (1) within an MCB, a contiguous range of VBNs mapped
  2886.            to a contiguous range of LBNs (a.k.a. "extent"); (2) slang
  2887.            for a quantum, as in "when the thread is given the run..."
  2888.  
  2889.         runtime priority inversion
  2890.         runtime priority inversion
  2891.            A condition that can occur when threads with mismatched
  2892.            priority attributes share resources or when a higher
  2893.            priority thread waits for a lower priority thread to
  2894.            complete some action. Such an inversion occurs whenever:
  2895.            n  A high priority thread is blocked, waiting for a lower
  2896.            n
  2897.               priority thread to release a shared resource or to
  2898.               complete an action (and probably to set a dispatcher
  2899.               object to the Signaled state).
  2900.            n  This lower priority thread is also blocked, because many
  2901.            n
  2902.               other higher priority threads are ready for execution, so
  2903.               they will be run first.
  2904.            Under these circumstances, the waiting high priority thread
  2905.            undergoes a runtime priority inversion, because one or more
  2906.            lower priority threads will run before it does. Note that
  2907.            two threads with mismatched priorities must be very careful
  2908.            to avoid deadlocks if they "share" a resource in a mutually
  2909.            exclusive manner (that is, only one thread at a given time
  2910.            can access the resource). Such a pair of threads should not
  2911.            attempt to use a spin lock. See also thread object,
  2912.            priority, resource, and deadlock.
  2913.  
  2914.         SACL
  2915.         SACL
  2916.            System access control list
  2917.               A part of the NT security descriptor for an object, used
  2918.               to maintain per object auditing information. See also
  2919.               security descriptor, ACE, and ACL.
  2920.  
  2921.         SAM
  2922.         SAM
  2923.            Security Account Manager
  2924.               An integral subsystem that maintains a database of
  2925.               information on user accounts, including passwords, any
  2926.               account groups a given user belongs to, the access rights
  2927.               each user is allowed, and any special privileges a given
  2928.               user has.
  2929.  
  2930.         SCSI
  2931.         SCSI
  2932.            Small computer standard interface (pronunciation: "scuzzy")
  2933.               NT SCSI drivers are assumed to comply with the ANSI SCSI-
  2934.               II standard. In addition, NT supplies an OS-dependent
  2935.               SCSI port driver, implemented as a dynamic-link library,
  2936.  
  2937.  
  2938.  
  2939.  
  2940.  
  2941.  
  2942.  
  2943.  
  2944.  
  2945.  
  2946.  
  2947.  
  2948.  
  2949.  
  2950.  
  2951.  
  2952.                             Glossary of Terms and Acronyms     G-41     
  2953.                             Glossary of Terms and Acronyms     G-41     
  2954.  
  2955.  
  2956.                    and several device-type-specific class drivers, together
  2957.                    with system-defined interfaces to HBA-specific SCSI
  2958.                    miniport drivers and additional class drivers.
  2959.  
  2960.              section object
  2961.              section object
  2962.                 A user-mode object type, representing a memory entity that
  2963.                 can be mapped onto a range of virtual addresses in a
  2964.                 process's address space. Note that creating or opening a
  2965.                 section object does not allocate physical memory. See also
  2966.                 view.
  2967.                 An opened section object can be either:
  2968.                 1  File-backed - The original entity resides as a file on a
  2969.                    ___________
  2970.                    disk.
  2971.                 2  Page-backed - The original entity resides either in a
  2972.                    ___________
  2973.                    paging file controlled by the Memory Manager or (wholly
  2974.                    or partially) in physical memory where storage is page-
  2975.                    granular and the page size is microprocessor-dependent.
  2976.                    Unnamed sections are not sharable, but a view into an
  2977.                    unnamed section can be mapped through the creating
  2978.                    process's handle. Named sections are shareable. All
  2979.                    sections are inheritable by child processes.
  2980.  
  2981.              security descriptor
  2982.              security descriptor
  2983.                 A data structure used to hold per-object security
  2984.                 information, including the object's owner, group, protection
  2985.                 attributes, and audit information. See also ACE, ACL, SACL
  2986.                 and SID.
  2987.  
  2988.              security violation
  2989.              security violation
  2990.                 A user-mode attempt to access an object (by passing its
  2991.                 handle to a system service) without having the correct,
  2992.                 granted access rights for the requested operation. See also
  2993.                 ACE and ACL.
  2994.                    Note that the Security component does not check the
  2995.                    access rights on object handles used by kernel-mode code.
  2996.                    However, the I/O Manager and network server driver can
  2997.                    force a security access check on object handles.
  2998.  
  2999.  
  3000.  
  3001.  
  3002.  
  3003.  
  3004.  
  3005.  
  3006.  
  3007.  
  3008.  
  3009.  
  3010.  
  3011.  
  3012.  
  3013.  
  3014.  
  3015.  
  3016.  
  3017.  
  3018.  
  3019.  
  3020.  
  3021.  
  3022.  
  3023.  
  3024.         G-42     Kernel-mode Driver Design Guide
  3025.         G-42     Kernel-mode Driver Design Guide
  3026.  
  3027.  
  3028.         SEH
  3029.         SEH
  3030.            Structured exception handling
  3031.               A feature of the NT system, which supports control
  3032.               transfers to exception handlers when certain runtime
  3033.               exceptions occur. The system traps the following general
  3034.               kinds of exceptions:
  3035.               1   Hardware-defined faults or traps, such as,
  3036.                   n  Access violations (see also access violation).
  3037.                   n
  3038.                   n  Data-type misalignments (such as a 16-bit entity
  3039.                   n
  3040.                      aligned on an odd-byte boundary).
  3041.                   n  Illegal and privileged instructions.
  3042.                   n
  3043.                   n  Invalid lock sequences (attempting to execute an
  3044.                   n
  3045.                      invalid sequence of instructions within an
  3046.                      interlocked section of code).
  3047.                   n  Integer divides by zero and overflows.
  3048.                   n
  3049.                   n  Floating-point divides by zero, overflows,
  3050.                   n
  3051.                      underflows, and reserved operands.
  3052.                   n  Breakpoints and single steps (to support
  3053.                   n
  3054.                      debuggers).
  3055.               2   System software-defined exceptions, such as,
  3056.                   n  Guard-page violations (attempting to load or store
  3057.                   n
  3058.                      data from or to a location within a guard page).
  3059.                   n  Page read errors (attempting to read a page into
  3060.                   n
  3061.                      memory and encountering a concurrent I/O error).
  3062.                   n  Paging file quota exceeded (attempting to commit
  3063.                   n
  3064.                      backing store for a page currently being removed
  3065.                      from a process's working set).
  3066.               NT supplies standard exception handlers for data-type
  3067.               alignment faults and for ANSI/IEEE Std 754-1985 floating-
  3068.               point faults.
  3069.               Both user-mode and kernel-mode code can set up custom
  3070.               exception handlers using the except, try, and finally
  3071.                                            except  try      finally
  3072.               constructs currently supplied by NT-compatible C
  3073.               compilers and supported by NT-supplied Rtl (Run-time
  3074.                                                      Rtl
  3075.                                                           _   _
  3076.               Library) functions. An exception handler can be
  3077.               _
  3078.               associated with each call frame in the function-call
  3079.               hierarchy of a program. A CONTEXT record contains the
  3080.               register state for each exception handler.
  3081.  
  3082.  
  3083.  
  3084.  
  3085.  
  3086.  
  3087.  
  3088.  
  3089.  
  3090.  
  3091.  
  3092.  
  3093.  
  3094.  
  3095.  
  3096.  
  3097.  
  3098.  
  3099.  
  3100.  
  3101.  
  3102.  
  3103.  
  3104.  
  3105.  
  3106.                             Glossary of Terms and Acronyms     G-43     
  3107.                             Glossary of Terms and Acronyms     G-43     
  3108.  
  3109.  
  3110.              semaphore object
  3111.              semaphore object
  3112.                 A user-mode semaphore gates access to resources, allowing
  3113.                 some maximum number of threads (as specified when the
  3114.                 semaphore object was created) to access the resources
  3115.                 protected by the semaphore.
  3116.                 Each user-mode semaphore also has an associated current
  3117.                 count, representing how many additional threads can acquire
  3118.                 the semaphore. When the current count is zero, a thread
  3119.                 attempting to acquire the semaphore waits (i.e., blocks)
  3120.                 until the count is incremented (another thread has released
  3121.                 that semaphore). Every user-mode semaphore object is
  3122.                 implemented through the use of a kernel-mode semaphore
  3123.                 object.
  3124.                 A kernel-mode semaphore is an instance of a Kernel-defined
  3125.                 dispatcher object type. It has either of two uses:
  3126.                 1  A counting semaphore gates access to a resource by
  3127.                      __________________
  3128.                    allowing some number of threads (up to a specified limit)
  3129.                    to access the resource while the semaphore is set to the
  3130.                    Signaled state (semaphore count is nonzero).
  3131.                 2  A binary semaphore gates access to a single resource, if
  3132.                      ________________
  3133.                    and only if the limit is set to 1 and it is not possible
  3134.                    for the semaphore to be over-Signaled (set to the
  3135.                    Signaled state when it is already in the Signaled state).
  3136.                    A binary semaphore gates exclusive access to a resource.
  3137.                    However, using a semaphore with a limit of 1 to gate
  3138.                    access is not the same thing as using a mutex:
  3139.                              ___
  3140.                    semaphores have no ownership, deadlocks are possible, and
  3141.                    the owner's priority is unaffected.
  3142.  
  3143.              server
  3144.              server
  3145.                 (1) A process with one or more threads that accept requests
  3146.                 from client processes. See also client/server.
  3147.                 (2) An NT-supplied file system driver that provides remote
  3148.                 access to files, named pipes, comm devices, and print
  3149.                 devices. It implements the LAN Manager 2.1 SMB (server
  3150.                 message block) protocol, along with NT-specific extensions.
  3151.  
  3152.              Session Manager
  3153.              Session Manager
  3154.                 An integral subsystem that starts and keeps track of NT
  3155.                 logon sessions and serves as an intermediary between the
  3156.                 Windows NT and other protected subsystems.
  3157.  
  3158.  
  3159.  
  3160.  
  3161.  
  3162.  
  3163.  
  3164.  
  3165.  
  3166.  
  3167.  
  3168.  
  3169.  
  3170.  
  3171.  
  3172.  
  3173.  
  3174.  
  3175.  
  3176.  
  3177.  
  3178.  
  3179.         G-44     Kernel-mode Driver Design Guide
  3180.         G-44     Kernel-mode Driver Design Guide
  3181.  
  3182.  
  3183.         SFD
  3184.         SFD
  3185.            SCSI filter driver
  3186.               An add-on driver for a SCSI class device that is layered
  3187.               between the system-supplied class driver and the NT SCSI
  3188.               port driver. An SFD intercepts requests for a particular
  3189.               SCSI peripheral device that has special features (not
  3190.               shared by other SCSI devices of its class), or that does
  3191.               not accept standard SCSI-II CDBs, in order to set up
  3192.               device-specific requests. For other devices of the same
  3193.               class on the same bus, an SFD simply passes requests sent
  3194.               down from the system-supplied class driver on to the NT
  3195.               SCSI port driver.
  3196.  
  3197.         SID
  3198.         SID
  3199.            Security identifier
  3200.               A value, unique across time and space, that identifies a
  3201.               process in the Security system. SIDs can either identify
  3202.               an individual process, usually containing a user's logon
  3203.               identifier, or a group of processes.
  3204.  
  3205.         Signaled
  3206.         Signaled
  3207.            An attribute of Kernel-defined dispatcher objects that
  3208.            support synchronization. When the Kernel sets such an object
  3209.            to the Signaled state, any threads waiting on the object are
  3210.            released from their wait and become elgible for execution.
  3211.  
  3212.         single-byte coding scheme
  3213.         single-byte coding scheme
  3214.            A character encoding scheme, such as ASCII, that uses a byte
  3215.            to represent each character. See also Unicode.
  3216.  
  3217.         SMP
  3218.         SMP
  3219.            Symmetric multiprocessor machine
  3220.               See multiprocessor machine.
  3221.  
  3222.         spin lock
  3223.         spin lock
  3224.            A spin lock is a low-level, synchronization mechanism
  3225.            defined by the NT Kernel. A driver or any other kernel-mode
  3226.            component can use a spin lock to synchronize access to a
  3227.            shared resource, particularly in a multiprocessor machine.
  3228.            When one routine holds a particular spin lock, a second
  3229.            routine running on another processor cannot access the
  3230.            resource protected by that spin lock until it acquires the
  3231.            lock. While a routine attempts to acquire a spin lock, it
  3232.            cannot carry out other operations (it spins) until the lock
  3233.                                                  _____
  3234.            has been acquired.
  3235.            Note that operations involving system-defined spin locks are
  3236.            IRQL-specific to help prevent deadlocks: an interrupt spin
  3237.                                                        ______________
  3238.  
  3239.  
  3240.  
  3241.  
  3242.  
  3243.  
  3244.  
  3245.  
  3246.  
  3247.  
  3248.  
  3249.  
  3250.  
  3251.  
  3252.  
  3253.  
  3254.                             Glossary of Terms and Acronyms     G-45     
  3255.                             Glossary of Terms and Acronyms     G-45     
  3256.  
  3257.  
  3258.                 lock can only be acquired while executing at a DIRQL of the
  3259.                 ____
  3260.                 associated interrupt object; an executive spin lock can only
  3261.                                                 ___________________
  3262.                 be acquired while executing at DISPATCH_LEVEL IRQL.
  3263.  
  3264.              SRB
  3265.              SRB
  3266.                 SCSI request block
  3267.                    An NT-defined structure, used to communicate I/O requests
  3268.                    from a SCSI class driver to the NT-dependent port driver,
  3269.                    which relays such request to appropriate HBA-specific
  3270.                    miniport drivers.
  3271.  
  3272.              stream file object
  3273.              stream file object
  3274.                    A virtual file representing on-disk data associated with
  3275.                    a file, some of which might not be part of the physical
  3276.                    file that backs a file object. For example, a stream file
  3277.                    object makes it possible to cache the EAs or ACL for a
  3278.                    file object together with the file's data. See also
  3279.                    volume file.
  3280.  
  3281.              stripe driver
  3282.              stripe driver
  3283.                    (a.k.a. "striper")
  3284.                    An intermediate driver whose job is to get better
  3285.                    performance for file accesses than the underlying disk
  3286.                    driver can. A stripe driver is layered between the FSD
  3287.                    and a disk device driver (or between a mirror driver and
  3288.                    the disk driver). It distributes pieces of each file over
  3289.                    a set of partitions concurrently, thereby cutting down on
  3290.                    synchronous read/write time for the file.
  3291.  
  3292.              subject
  3293.              subject
  3294.                 The combination of a (security) token and of an associated
  3295.                 program that may use system services. See also token.
  3296.  
  3297.              symbolic link
  3298.              symbolic link
  3299.                 (1) An instance of the symbolic link object type,
  3300.                 representing a "soft alias" that equates one name to another
  3301.                 within the NT Object Manager's name space.
  3302.                 (2) A file object with special properties. A symbolic link
  3303.                 file is recognized as having the following three attributes:
  3304.                 1  Its FILE_ATTRIBUTE_CONTROL bit is set.
  3305.                 2  It has an EA whose name is .FAMILY_IDs and whose 128-bit
  3306.                    binary value is 42 (decimal).
  3307.                 3  It has an EA whose name is .SYMBOLIC_LINK_VALUE and whose
  3308.                    value is the fully qualified pathname of the target file.
  3309.                 When a special file of this type is encountered as a
  3310.                 component of a pathname, rather than opening the file
  3311.                 itself, the file system is redirected to the target file.
  3312.  
  3313.  
  3314.  
  3315.  
  3316.  
  3317.  
  3318.  
  3319.  
  3320.  
  3321.  
  3322.  
  3323.  
  3324.  
  3325.  
  3326.  
  3327.  
  3328.         G-46     Kernel-mode Driver Design Guide
  3329.         G-46     Kernel-mode Driver Design Guide
  3330.  
  3331.  
  3332.               Note that the I/O Manager does not actually use a
  3333.               symbolic link object to implement symbolic link files; it
  3334.               uses a file object.
  3335.  
  3336.  
  3337.  
  3338.  
  3339.  
  3340.  
  3341.  
  3342.  
  3343.  
  3344.  
  3345.  
  3346.  
  3347.  
  3348.  
  3349.  
  3350.  
  3351.  
  3352.  
  3353.  
  3354.  
  3355.  
  3356.  
  3357.  
  3358.  
  3359.  
  3360.  
  3361.  
  3362.  
  3363.  
  3364.  
  3365.  
  3366.  
  3367.  
  3368.  
  3369.  
  3370.  
  3371.  
  3372.  
  3373.  
  3374.  
  3375.  
  3376.  
  3377.  
  3378.  
  3379.  
  3380.  
  3381.  
  3382.  
  3383.  
  3384.  
  3385.  
  3386.  
  3387.  
  3388.  
  3389.  
  3390.  
  3391.  
  3392.  
  3393.  
  3394.  
  3395.                             Glossary of Terms and Acronyms     G-47     
  3396.                             Glossary of Terms and Acronyms     G-47     
  3397.  
  3398.  
  3399.              symbolic link object
  3400.              symbolic link object
  3401.                 An instance of a type defined by the Object Manager, used to
  3402.                 translate a reference to one named object into a different
  3403.                 name.
  3404.  
  3405.              system services
  3406.              system services
  3407.                 The set of native, user-mode routines exported by the NT
  3408.                 executive. Each system service has a name of the form
  3409.                 TwoLettersXxxYyy where:
  3410.                 ________________
  3411.                 n  TwoLetters is the prefix for all system services.
  3412.                 n
  3413.                    __________
  3414.                 n  Xxx is usually a verb, describing the operation of a
  3415.                 n
  3416.                    ___
  3417.                    given service.
  3418.                 n  Yyy is generally the object type the service operates on.
  3419.                 n
  3420.                    ___
  3421.  
  3422.              system space
  3423.              system space
  3424.                 See kernel space.
  3425.  
  3426.              system worker threads
  3427.              system worker threads
  3428.                 A set of kernel-mode threads provided by the NT Executive
  3429.                 Support component that NT drivers, particularly FSDs, use to
  3430.                 get work done within a nonarbitrary thread context. Such a
  3431.                 driver sets up a work queue item with a driver-supplied
  3432.                 callback routine that is queued to be run when a system
  3433.                 worker thread is dispatched for execution by the Kernel. See
  3434.                 also FSP and thread object.
  3435.  
  3436.              TB
  3437.              TB
  3438.                 Translation buffer
  3439.                    See TLB.
  3440.  
  3441.              TEB
  3442.              TEB
  3443.                 Thread environment block
  3444.  
  3445.  
  3446.  
  3447.  
  3448.  
  3449.  
  3450.  
  3451.  
  3452.  
  3453.  
  3454.  
  3455.  
  3456.  
  3457.  
  3458.  
  3459.  
  3460.  
  3461.  
  3462.  
  3463.  
  3464.  
  3465.  
  3466.  
  3467.  
  3468.  
  3469.  
  3470.  
  3471.  
  3472.  
  3473.  
  3474.  
  3475.         G-48     Kernel-mode Driver Design Guide
  3476.         G-48     Kernel-mode Driver Design Guide
  3477.  
  3478.  
  3479.         thread object
  3480.         thread object
  3481.            A user-mode thread object represents a path of execution
  3482.            within the current process. Every user-mode thread object is
  3483.            implemented through the use of an embedded kernel-mode
  3484.            thread object.
  3485.            A kernel-mode thread is an instance of a Kernel-defined
  3486.            dispatcher object type. It is the basic schedulable entity
  3487.            in the NT system.
  3488.            A thread object:
  3489.            n  Is dispatched for execution by the Kernel.
  3490.            n
  3491.            n  Has the following properties at any given moment:
  3492.            n
  3493.               1   Dispatch state
  3494.               2   Priority
  3495.               3   Context
  3496.               4   Execution mode (kernel or user)
  3497.               5   Affinity
  3498.            n  Is "owned by" a process object but can attach itself to
  3499.            n
  3500.               another process's address space.
  3501.            Note that most NT drivers usually execute in the context of
  3502.            the currently running thread, that is, in an arbitrary
  3503.            thread context. While an NT file system driver can create an
  3504.            independent process for its own device-dedicated threads,
  3505.            FSDs usually avoid setting up a driver-created process in
  3506.            order to conserve system memory. FSDs (and other NT drivers)
  3507.            can set up device-dedicated (system-process) threads and/or
  3508.            FSDs can use system worker threads if they need a driver-
  3509.            specific thread context in which to execute. NT drivers use
  3510.            kernel-mode Ps (Process Structure) functions to create
  3511.                        Ps
  3512.                            _       _
  3513.            processes and/or device-dedicated threads, not the Ke(rnel)
  3514.                                                               Ke
  3515.                                                       ___
  3516.            thread functions. FSDs call routines supplied by the NT
  3517.            Executive Support component to use system worker threads.
  3518.            Ex
  3519.  
  3520.         TID
  3521.         TID
  3522.            Target identifier
  3523.               One of up to eight target controllers on a SCSI-II bus
  3524.               through which peripheral devices are addressable, either
  3525.               as numbered TIDs or as logical units (LUs) subordinate to
  3526.               a particular TID.
  3527.  
  3528.  
  3529.  
  3530.  
  3531.  
  3532.  
  3533.  
  3534.  
  3535.  
  3536.  
  3537.  
  3538.  
  3539.  
  3540.  
  3541.  
  3542.  
  3543.  
  3544.  
  3545.  
  3546.  
  3547.  
  3548.  
  3549.  
  3550.  
  3551.  
  3552.                             Glossary of Terms and Acronyms     G-49     
  3553.                             Glossary of Terms and Acronyms     G-49     
  3554.  
  3555.  
  3556.              timer object
  3557.              timer object
  3558.                 A timer object is an instance of a Kernel-defined dispatcher
  3559.                 object type. User-mode timer objects can be used to
  3560.                 synchronize the execution of specific actions, optionally an
  3561.                 APC, with time. Kernel-mode timer objects are used to
  3562.                 synchronize the execution of specific actions, in particular
  3563.                 a DPC, with time.
  3564.                    When set to a specified interval:
  3565.                    n   The timer's state is reset to Not-Signaled.
  3566.                    n
  3567.                    n   The timer is placed in a queue that is ordered
  3568.                    n
  3569.                        according to expiration time.
  3570.                    Any thread that waits on the timer is suspended until the
  3571.                    timer is set to the Signaled state when its interval
  3572.                    expires.
  3573.                    Expiration of the specified interval does not determine
  3574.                    the end of a wait; the Signaled state does. Then, the
  3575.                    Kernel attempts to satisfy as many waiters as possible.
  3576.                 The I/O Manager also supplies timer functions for drivers to
  3577.                 use.
  3578.  
  3579.              TLB
  3580.              TLB
  3581.                 Translation lookaside buffer
  3582.                    (Not directly accessible by system software for the i386;
  3583.                    otherwise, an on-chip virtual-to-page address translation
  3584.                    cache for the i486 and MIPS microprocessors.)
  3585.  
  3586.              toaster device
  3587.              toaster device
  3588.                 slang: A SCSI peripheral device of an unknown class.
  3589.  
  3590.              token object
  3591.              token object
  3592.                 A security object type, representing an authenticated user
  3593.                 process. Every process has an assigned token, which becomes
  3594.                 the default token for each of that process's threads.
  3595.                 However, an individual thread can be assigned a token that
  3596.                 overrides this default.
  3597.  
  3598.              trap handler
  3599.              trap handler
  3600.                 A body of code in the Kernel to which the processor
  3601.                 transfers control when an interrupt or exception occurs. The
  3602.                 trap handler determines the type of condition that caused
  3603.                 the interrupt or exception and transfers control to an ISR
  3604.                 or exception handler.
  3605.  
  3606.              Unicode
  3607.              Unicode
  3608.                 A fixed-width, 16-bit character encoding standard that NT
  3609.                 uses to provide NLS support for locale-specific natural
  3610.                 languages. See also NLS.
  3611.  
  3612.  
  3613.  
  3614.  
  3615.  
  3616.  
  3617.  
  3618.  
  3619.  
  3620.  
  3621.  
  3622.  
  3623.  
  3624.  
  3625.  
  3626.  
  3627.         G-50     Kernel-mode Driver Design Guide
  3628.         G-50     Kernel-mode Driver Design Guide
  3629.  
  3630.  
  3631.         user mode
  3632.         user mode
  3633.            The nonprivileged processor mode in which application code,
  3634.            including protected subsystem code, executes. User-mode
  3635.            threads can only gain access to system data by calling
  3636.            system services. See also kernel mode.
  3637.  
  3638.         valid page
  3639.         valid page
  3640.            A virtual page that is currently in physical memory. See
  3641.            also invalid page.
  3642.  
  3643.         user space
  3644.         user space
  3645.            A block of virtual memory, dedicated to the use of the
  3646.            current user-mode process. Generally, the NT user space is a
  3647.            range of low-order virtual addresses around two gigabytes in
  3648.            size. See also hyperspace, kernel space, section object, and
  3649.            view.
  3650.  
  3651.         VBN
  3652.         VBN
  3653.            Virtual block number
  3654.               A virtual block number identifies a block (a.k.a.
  3655.               "sector") relative to the start of a file. For a file
  3656.               with N blocks of data, the corresponding VBNs are 0
  3657.               through (N - 1).
  3658.  
  3659.         VCB
  3660.         VCB
  3661.            Volume control block
  3662.               An internal NT file system structure in which a file
  3663.               system maintains state about a mounted volume.
  3664.  
  3665.         VDM
  3666.         VDM
  3667.            Virtual DOS machines
  3668.               A protected subsystem that emulates DOS and Windows
  3669.               (earlier versions than Windows NT) on top of NT.
  3670.  
  3671.         view
  3672.         view
  3673.            A whole or partial mapping of a section object, always
  3674.            allocated on a 64K boundary, in the virtual address space of
  3675.            a process. Note that mapping a view of a section that is
  3676.            backed by an executable image file, in effect, "loads" the
  3677.            image. (Except during the system boot process, NT uses
  3678.            memory-mapped I/O, rather than a loader, to start program
  3679.            execution.)
  3680.  
  3681.  
  3682.  
  3683.  
  3684.  
  3685.  
  3686.  
  3687.  
  3688.  
  3689.  
  3690.  
  3691.  
  3692.  
  3693.  
  3694.  
  3695.  
  3696.  
  3697.  
  3698.  
  3699.  
  3700.  
  3701.                             Glossary of Terms and Acronyms     G-51     
  3702.                             Glossary of Terms and Acronyms     G-51     
  3703.  
  3704.  
  3705.              virtual memory
  3706.              virtual memory
  3707.                 A logical view of memory that does not necessarily
  3708.                 correspond to the underlying physical memory structure. For
  3709.                 example, a given range of virtual addresses might be mapped
  3710.                 to (and backed by) some number of discontiguous physical
  3711.                 pages, even though the corresponding virtual pages could be
  3712.                 accessed as a single, contiguous range.
  3713.  
  3714.              VMCB
  3715.              VMCB
  3716.                 Volume map control block
  3717.                    An opaque structure that stores VBN-to-LBN mappings for a
  3718.                    volume file. FSDs can use a set of FsRtl routines to
  3719.                                                       FsRtl
  3720.                    maintain a VMCB for each mounted volume.
  3721.  
  3722.              volume file
  3723.              volume file
  3724.                    A virtual file, maintained by certain NT file systems,
  3725.                    whose contents map ancillary structures of the on-disk
  3726.                    file system. A volume file is a type of stream file.
  3727.  
  3728.              VPB
  3729.              VPB
  3730.                 Volume parameter block
  3731.                    A VPB is a structure that connects a file system's device
  3732.                    object to the device upon which the volume is mounted.
  3733.                    The file system's device object is actually used to
  3734.                    represent the volume (VPB) mounted on the actual device
  3735.                    (physical device object). Device objects for physical
  3736.                    disks, tapes, CD ROMs, and RAM disks have associated
  3737.                    VPBs.
  3738.  
  3739.              VRP
  3740.              VRP
  3741.                 Video request packet
  3742.                    A structure used to communicate device I/O control
  3743.                    requests from a Windows NT display driver to its
  3744.                    corresponding adapter-specific miniport driver. The NT
  3745.                    I/O Manager sets up an IRP in response to a user-mode
  3746.                    display driver's I/O control request and calls the NT-
  3747.                    supplied video port driver with the IRP. The video port
  3748.                    driver uses the IRP to set up a VRP and calls the
  3749.                    miniport driver's StartIo entry point with the VRP.
  3750.  
  3751.              window turn
  3752.              window turn
  3753.                 Turning a window refers to the process of filling an MCB
  3754.                 with the appropriate retrieval pointers in order to map a
  3755.                 VBN for a file to an LBN for a disk.
  3756.  
  3757.  
  3758.  
  3759.  
  3760.  
  3761.  
  3762.  
  3763.  
  3764.  
  3765.  
  3766.  
  3767.  
  3768.  
  3769.  
  3770.  
  3771.  
  3772.  
  3773.  
  3774.  
  3775.         G-52     Kernel-mode Driver Design Guide
  3776.         G-52     Kernel-mode Driver Design Guide
  3777.  
  3778.  
  3779.         working set
  3780.         working set
  3781.            The set of physical pages that are resident for a given
  3782.            process while it has one or more running threads. See also
  3783.            balance set and quota.
  3784.               The size of each process's working set is bounded by a
  3785.               minimum number of pages (that the NT Memory Manager
  3786.               guarantees to be resident while the process has one
  3787.               running thread) and by a maximum. However,  NT does not
  3788.               necessarily constrain a process's working set to its
  3789.               maximum if many free pages are available.
  3790.  
  3791.         WORM
  3792.         WORM
  3793.            Write-once, read many
  3794.  
  3795.         WSL
  3796.         WSL
  3797.            Working set list
  3798.               The set of WSLEs for the current process.
  3799.  
  3800.         WSLE
  3801.         WSLE
  3802.            Working set list entry
  3803.  
  3804.         zone
  3805.         zone
  3806.            A block of dynamically allocatable and deallocatable storage
  3807.            of a specified and fixed size within a block of equivalent
  3808.            zones. Each zone within such a block is aligned on a
  3809.            platform-dependent boundary, determined by the processor's
  3810.            data cache line size. Callers of the Ex(ecutive) Support
  3811.                                                 Ex
  3812.            zone functions must synchronize their allocation and
  3813.            deallocation of zones within the block.
  3814.               For example, the I/O Manager uses zones to implement
  3815.               lookaside lists for fast allocation and deallocation of
  3816.               IRPs and MDLs.
  3817.  
  3818.         Zw routines
  3819.         Zw routines
  3820.            A set of entry points parallel to the NT executive's system
  3821.            services. A call to a ZwXxx entry point from kernel-mode
  3822.                                  Zw
  3823.                                    ___
  3824.            code (including calls from other system services or NT
  3825.            drivers) supplies the corresponding system service, except
  3826.            the caller's access rights and the arguments to the Zw
  3827.                                                                Zw
  3828.            "alias" are not checked for validity, and the call does not
  3829.            cause the previous mode to be set to user mode. It is the
  3830.            responsibility of a kernel-mode caller to check all user-
  3831.            supplied arguments for validity before such a caller passes
  3832.            them on to a ZwXxx entry point. See also system services,
  3833.                         Zw
  3834.                           ___
  3835.            probe, and SEH.
  3836.  
  3837.  
  3838.  
  3839.  
  3840.  
  3841.  
  3842.  
  3843.  
  3844.  
  3845.  
  3846.  
  3847.  
  3848.  
  3849.  
  3850.  
  3851.  
  3852.  
  3853.  
  3854.  
  3855.  
  3856.  
  3857.  
  3858.  
  3859.  
  3860.  
  3861.  
  3862.  
  3863.  
  3864.  
  3865.  
  3866.  
  3867.  
  3868.  
  3869.  
  3870.  
  3871.  
  3872.  
  3873.  
  3874.  
  3875.  
  3876.  
  3877.  
  3878.  
  3879.  
  3880.  
  3881.  
  3882.  
  3883.  
  3884.  
  3885.  
  3886.  
  3887.  
  3888.  
  3889.  
  3890.  
  3891.  
  3892.  
  3893.  
  3894.  
  3895.  
  3896.  
  3897.  
  3898.  
  3899.  
  3900.  
  3901.  
  3902.  
  3903.  
  3904.  
  3905.  
  3906.  
  3907.  
  3908.  
  3909.  
  3910.  
  3911.  
  3912.  
  3913.  
  3914.  
  3915.