Partilhar via


Biblioteca de Modelos C++ do Tempo de Execução do Windows (WRL)

O Biblioteca em Tempo de Execução C++ do Tempo de Execução do Windows (WRL) é uma biblioteca de modelo que fornece uma maneira de baixo nível de criar e usar componentes de Tempo de Execução do Windows.

Benefícios

O WRL permite que você implemente e utilize os componentes do Component Object Model (COM) de maneira mais fácil. Fornece técnicas domésticas, como contagem de referência para gerenciar o tempo de vida dos objetos e testar os valores de HRESULT para determinar se uma operação foi bem-sucedida ou mal-sucedida. Para usar com êxito WRL, você deve seguir cuidadosamente essas regras e técnicas.

O Extensões de componentes Visual C++ (C++/CX) é uma maneira de alto nível, com base na linguagem de usar componentes de Tempo de Execução do Windows. WRL e C++/CX simplificam a escrita de código para o Tempo de Execução do Windows executando automaticamente as tarefas domésticas em seu nome.

O WRL e C++/CX fornecem benefícios diferentes. Veja alguns motivos pelos quais você pode desejar usar WRL em vez de C++/CX:

  • WRL adiciona uma pequena abstração sobre a interface de binária de aplicativo (ABI) do Tempo de Execução do Windows, oferecendo a capacidade de controlar o código subjacente para criar ou consumir melhor as APIs do Tempo de Execução do Windows.

  • C++/CX representa os valores COM de HRESULT como exceções. Se você herdou uma base de código que usa COM, ou uma que não usa exceções, você pode achar que WRL é uma maneira mais natural de trabalhar com o Tempo de Execução do Windows porque você não precisa usar exceções.

    Dica

    O WRL usa valores HRESULT e não lança exceções.Além disso, o WRL usa ponteiros inteligentes e o padrão RAII para ajudar a garantir que os objetos sejam destruídos corretamente quando o código do aplicativo lançar uma exceção.Para obter mais informações sobre ponteiros inteligentes e RAII, consulte Ponteiros inteligentes (C++ moderno) e Recursos de objetos próprios (RAII).

  • A finalidade e o design de WRL são inspirados pela Biblioteca de modelo ativo (ATL), que é um conjunto de classes do C++ com base no modelo que simplificam a programação de objetos COM. Como o WRL usa o C++ padrão para envolver Tempo de Execução do Windows, você pode mover e interagir mais facilmente com vários componentes COM existentes escritos em ATL para o Tempo de Execução do Windows. Se você já conhecer o ATL, você poderá achar que a programação de WRL é mais fácil.

Guia de Introdução

Eis alguns recursos que podem ajudá-lo a trabalhar com WRL imediatamente.

WRL Comparado com ATL

WRL é semelhante à biblioteca de modelos ativos (ATL) porque você pode usá-lo para criar objetos COM pequenos e rápidos. WRL e ATL também compartilham conceitos, como a definição de objetos em módulos, registro explícito de interfaces, e a criação aberta de objetos usando fábricas. Você pode se sentir confortável com WRL se estiver familiarizado com o ATL.

WRL oferece suporte à funcionalidade COM que é necessária para aplicativos do Windows Store. Portanto, difere do ATL porque omite suporte direto para recursos COM como:

  • agregação

  • implementações fixas

  • interfaces duplas (IDispatch)

  • interfaces do enumerador padrão

  • pontos de conexão

  • Interfaces destacáveis

  • Inserção OLE

  • Controles ActiveX

  • COM+

Conceitos

WRL fornece tipos que representam alguns conceitos básicos. As seções a seguir descrevem esses tipos.

ComPtr

ComPtr é um tipo de ponteiro inteligente que representa a interface especificada pelo parâmetro de modelo. Use ComPtr para declarar uma variável que pode acessar os membros de um objeto que é derivado da interface. ComPtr automaticamente mantém uma contagem de referência para o ponteiro subjacente da interface e libera a interface quando a contagem de referência chega a zero.

RuntimeClass

RuntimeClass representa uma classe instanciada que herda um conjunto de interfaces especificadas. Um objeto de RuntimeClass pode fornecer uma combinação de suporte para uma ou mais interfaces COM de Tempo de Execução do Windows, ou uma referência fraca a um componente.

Module

O módulo representa uma coleção de objetos relacionados. Um objeto de Module gerencia as fábricas de classe, que criam objetos, e o registro, que permite que outros aplicativos usem um objeto.

Retorno de chamada

A função Retorno de chamada cria um objeto cuja função de membro é um manipulador de eventos (um método de retorno). Use a função Callback para gravar operações assíncronas.

EventSource

EventSource é usado para gerenciar manipuladores de eventos de representante. Use WRL para implementar um representante e use EventSource para adicionar, remover e invocar representantes.

AsyncBase

AsyncBase fornece os métodos virtuais que representam o modelo de programação assíncrona de Tempo de Execução do Windows. Substitua os membros nesta classe para criar uma classe personalizada que pode iniciar, parar, ou verificar o progresso de uma operação assíncrona.

FtmBase

FtmBase representa um objeto de segmentação livre de marshaler. FtmBase cria uma tabela global (GIT) de interface, e ajuda a gerenciar objetos de empacotamento e de proxy.

WeakRef

WeakRef é um tipo de ponteiro inteligente que representa uma referência fraca, que faz referência a um objeto que pode ou não ser acessível. Um objeto de WeakRef pode ser usado somente por Tempo de Execução do Windows, e não pelo COM clássico.

Um objeto de WeakRef representa normalmente um objeto cuja existência é controlada por um segmento ou por um aplicativo externo. Por exemplo, um objeto WeakRef pode fazer referência a um objeto de arquivo. Quando o arquivo está aberto, WeakRef é válido e o arquivo referenciado fica acessível. Mas quando o arquivo está fechado, o WeakRef é inválido e o arquivo não é acessível.

Tópicos relacionados

Modelo de projeto de biblioteca de classes WRL

Descreve como acessar o modelo de projeto de biblioteca de classes de WRL. Este modelo ajuda a simplificar a tarefa de usar o Visual Studio para criar componentes de Tempo de Execução do Windows.

APIs de chave WRL por categoria

Realça tipos, funções, e macros primárias de WRL.

Referência WRL

Contém informações de referência para o WRL.

Referência rápida (Tempo de Execução do Windows e Visual C++)

Descreve rapidamente os recursos de C++/CX que suportam o Tempo de Execução do Windows.

Usando os componentes de Tempo de Execução do Windows no Visual C++

Mostra como usar C++/CX para criar um componente básico Tempo de Execução do Windows.