Para cada classe de envelope, no exemplo, Line, vai existir um tipo que se designará por descritor de envelope (DE), que terá o nome LineDesc. A função deste descritor é identificar de forma abstracta o envelope e permitir em qualquer altura encontrar um envelope equivalente, seja procurando-o numa estrutura de dados ou criando-o.
Cada DE contém, à semelhança de uma CAGE, um duplo identificador de objecto e uma identificação do seu tipo. A diferença fundamental entre os dois está no facto de a CAGE conter uma referência directa para o objecto, enquanto que o DE apenas contém uma descrição. Um outra diferença, mais subtil, é a informação de tipos que um DE proporciona através da sua própria interface: um DE serve, através do seu tipo, como ``sugestão'' para alguns dos processadores de código, em particular o de CIDL, realizarem tarefas importantes, entre as quais se encontram a geração de código para efectuar conversões de tipos em tempo de execução a partir da identificação do objecto e a geração de código para a invocação de métodos e passagem de argumentos utilizando objectos manipulados dinamicamente.
struct LineDesc { DI_OD loc; DI_OD com; LL_TypeId typeid; };
O duplo identificador é utilizado como identificador dos objectos distribuídos apresentados no capítulo 5, em que a primeira parte designa o objecto real e a segunda uma forma de chegar ao objecto real, e.g. através de um par envelope/representante.