3.1.1 Abstract Data Model

This section describes a conceptual model of possible data organization that an implementation maintains to participate in this protocol. The described organization is provided to facilitate the explanation of how the protocol behaves. This document does not mandate that implementations adhere to this model as long as their external behavior is consistent with that described in this document.

Redirection surface handle: In a composed desktop, each top-level window has its own dedicated surface. All windows rooted at a particular top-level window draw to that top-level window's surface. These surfaces are called redirection surfaces. Each redirection surface is identified by a unique 64-bit value on the server, which is the redirection surface handle.

Logical surface handle: The composition engine on the server maintains a hierarchical structure of logical surfaces that it uses to obtain the content of the associated redirection surface. Each logical surface is identified by a unique 64-bit value, called the logical surface handle.

Each logical surface can be associated with only one redirection surface at any given time.

Cache ID: A 32-bit unsigned integer that is unique within a connection. The server generates this to identify a redirection surface. Only 31 of the 32 bits are used as an identifier. The highest bit of the cacheId field is used to indicate a redirection surface creation when set to 0 and a redirection surface destroy when set to 1.

The compose desktop mediator, driven by the graphics subsystem on the server, sends the surface creation, association, and deletion messages (see section 2.2.2) to the surface manager proxy on the client, which MAY create corresponding data structures for the surfaces on the client.

Each redirection surface MAY be targeted by a set of immediate-mode drawing primitives such as those specified in Remote Desktop Protocol: Graphics Device Interface (GDI) Acceleration Extensions [MS-RDPEGDI]. These updates will result in updates to the data structure created on the client. A composition engine on the client, such as that specified in [MS-RDPCR2], MAY access the content of the surfaces and receive update notifications through the logical surface handle values (see [MS-RDPCR2] section 3.1.1.8).