Operating system functions are defined as objects that are collections of
data and methods. The objects represent operating system resources. The
resource objects can be instantiated and used across process and machine
boundaries. Each object has an associated handle that is stored in its
private state. When an application requests a resource, it is given a
second handle or pseudo handle that corresponds with the handle in the
object's private state. The second handle is valid across process and
machine boundaries and all access to the object takes place through the
second handle. This greatly facilitates remote computing. In preferred
embodiments, the objects are COM objects and remote computing is
facilitated through the use of Distributed COM (DCOM) techniques. Other
embodiments of the invention provide legacy and versioning support by
identifying each resource, rather than the overall operating system, with
a unique identifier that can specified by an application. Different
versions of the same resource have different identifiers. This ensures
that applications that need a specific version of a resource can receive
that version. This also ensures that an application can specifically
request a particular version of a resource by using its unique
identifier, and be assured of receiving that resource. Other embodiments
of the invention provide legacy support by intercepting calls for
operating system functions and transforming those calls into object calls
that can be understood by the resource objects. This is accomplished in
preferred embodiments by injecting a level of indirection between an
application and an operating system.