O

object

A single, runtime instance of a system-defined object type. Objects visible in user mode include process, thread, section, file, event, semaphore, key, timer, port, object directory, symbolic link, I/O completion port, and token objects. See also object type and opaque.

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.

object directory object

A type defined by the NT Object Manager and used to implement hierarchical object names.

Note that file system directories are implemented as file objects, not as object directory objects.

object type

An opaque data structure that defines a protected entity implemented and manipulated by the operating system. For example, the system service that reads a file operates on an open file object. See also opaque.

Every user-visible object has:

·A type (whose name must be unique).

·Two parts:

A header operated on by the NT Object Manager

A body operated on by type-specific system services

·A set of standardized rules for object creation, deletion, protection, access, management, and naming

User-visible objects can 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 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.

opaque

Pertains to any data structure, including NT objects, defined with a deliberately hidden internal structure that is known only to the executive component that defined the type. However, the defining component supplies system services and, usually, kernel-mode support routines to manipulate opaque objects. User-mode data types also can be opaque.