Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A interface IClassFactory em um objeto de classe fornece o mecanismo básico de criação de objeto de COM. Usando iClassFactory, um servidor pode controlar a criação de objetos em uma base de computador. A implementação do método IClassFactory::CreateInstance pode permitir ou não permitir a criação de objeto com base na existência de uma licença de computador. Uma licença de computador é uma informação separada do aplicativo que existe em um computador para indicar que o software foi instalado de uma origem válida, como os discos de instalação do fornecedor. Se a licença do computador não existir, o servidor poderá não permitir a criação de objeto. O licenciamento de máquina impede a pirataria em casos em que um usuário tenta copiar o software de um computador para outro, pois as informações de licença não são copiadas com o software e o computador que recebe a cópia não está licenciado.
No entanto, em um setor de software de componentes, os fornecedores precisam de um nível mais fino de controle sobre o licenciamento. Além do controle de licença de máquina, um fornecedor precisa permitir que alguns clientes criem um objeto de componente, negando a outros clientes a mesma funcionalidade. Isso requer que o aplicativo cliente obtenha uma chave de licença do componente enquanto o aplicativo cliente ainda estiver em desenvolvimento. O aplicativo cliente usa a chave de licença em tempo de execução para criar objetos em um computador sem licença.
Por exemplo, se um fornecedor fornecer uma biblioteca de controles aos desenvolvedores, o desenvolvedor que comprar a biblioteca terá uma licença completa de computador, permitindo que os objetos sejam criados no computador de desenvolvimento. Em seguida, o desenvolvedor pode criar um aplicativo cliente no computador licenciado incorporando um ou mais dos controles. Quando o aplicativo cliente resultante é executado em outro computador, os controles usados no aplicativo cliente devem ser criados no outro computador, mesmo que esse computador não possua uma licença de computador para os controles do fornecedor original.
A interface IClassFactory2 fornece esse nível de controle. Para permitir o licenciamento baseado em chave para qualquer componente específico, implemente IClassFactory2 no objeto de fábrica de classe para esse componente. IClassFactory2é derivado de IClassFactory, portanto, implementando IClassFactory2, o objeto de fábrica de classe atende aos requisitos básicos de COM.
Para incorporar um componente licenciado ao aplicativo cliente, use os seguintes métodos em IClassFactory2:
- O método GetLicInfo preenche uma estrutura LICINFO com informações que descrevem o comportamento de licenciamento da fábrica de classes. Por exemplo, a fábrica de classes poderá fornecer chaves de licença para licenciamento em tempo de execução se o membro fRunTimeKeyAvail for TRUE.
- O método RequestLicKey fornece uma chave de licença para o componente. Uma licença de computador deve estar disponível quando o cliente chamar esse método.
- O método CreateInstanceLic cria uma instância do componente licenciado se o parâmetro de chave de licença (BSTR bstrKey) for válido.
Observação
Em suas informações de tipo, um componente usa o atributo licenciado para marcar a coclasse que dá suporte ao licenciamento por meio de IClassFactory2.
Primeiro, você precisa de uma ferramenta de desenvolvimento separada que também seja um cliente do componente licenciado. A finalidade dessa ferramenta é obter a chave de licença em tempo de execução e salvá-la em seu aplicativo cliente. Essa ferramenta é executada somente em um computador que possui uma licença de computador para o componente. A ferramenta chama os métodos GetLicInfo e RequestLicKey para obter a chave de licença em tempo de execução e salva a chave de licença em seu aplicativo cliente. Por exemplo, a ferramenta de desenvolvimento poderia criar um arquivo de cabeçalho (.h) contendo a chave de licença BSTR e, em seguida, você incluiria esse arquivo .h em seu aplicativo cliente.
Para instanciar o componente em seu aplicativo cliente, primeiro tente criar uma instância do objeto diretamente com IClassFactory::CreateInstance. Se CreateInstance for bem-sucedido, o segundo computador será licenciado para o componente e os objetos poderão ser criados livremente. Se CreateInstancefalhar com o código de retorno CLASS_E_NOTLICENSED, a única maneira de criar o objeto é passar a chave de tempo de execução para o método CreateInstanceLic . CreateInstanceLic verifica a chave e cria o objeto se a chave é válida.
Dessa forma, um aplicativo criado com componentes (como controles) pode ser executado em um computador que não tem outra licença. Somente o aplicativo cliente que contém a licença em tempo de execução tem permissão para criar os objetos de componente em questão.
A interface IClassFactory2 dá suporte à flexibilidade em esquemas de licenciamento. Por exemplo, o implementador de servidor pode criptografar chaves de licença no componente para adicionar segurança. Os implementadores de servidor também podem habilitar ou desabilitar níveis de funcionalidade em seus objetos fornecendo chaves de licença diferentes para diferentes funções. Por exemplo, uma chave pode permitir um nível base de funcionalidade, enquanto outra permite funcionalidades básicas e avançadas e assim por diante.
Tópicos relacionados