Many user-mode objects are implemented through the use of a corresponding kernel-mode object, including processes, threads, events, semaphores, and timers.
Kernel-mode-only objects include APC, DPC, device queue, interrupt, mutex, driver, device, adapter, controller, and stream file objects.
See also object type and opaque.
Note that file system directories are implemented as file objects, not as object directory objects.
Every user-visible object has:
A header that is operated on by the Object Manager
A body that is operated on by type-specific system services
User-visible objects can be implemented using kernel-mode objects.
Kernel-mode objects are visible to (and, except for certain fields in driver and device objects, directly accessible only by) the executive component that defined a given object type. They are indirectly accessible to other kernel-mode code through the type-specific support routines exported by the defining component. For example, KeInitializeDeviceQueue operates on device queue objects.
See also opaque.
See also IDCT