Handles Overview

This document provides an overview of handles.

Purpose

Allows a thread or process to identify an object which is owned or managed by another thread or process. Handles allow a client to access, or refer to, Kernel objects.

Architectural relationships

All handles are instances of classes derived from RHandleBase. Interactions between the holder of a handle and the object which the handle represents are mediated through the Kernel. Handles are also used in client-server relations; the client side refers to a server side session through a handle, anRSessionBase object.

Description

The handle class, RHandleBase, encapsulates the basic behavior common to all handles; for example, Close() to close a handle. In particular, the class hides the handle-number which identifies the object which the handle represents.

The class is abstract in the sense that a RHandleBase object is never explicitly instantiated. It is always a base class to a concrete handle class; for example, RSemaphore, RMutex, RThread etc.