Compartilhar via


Método IClassFactory2::CreateInstanceLic (ocidl.h)

Cria uma instância do objeto licenciado para a chave de licença especificada. Esse método é o único meio possível para criar um objeto em um computador sem licença.

Sintaxe

HRESULT CreateInstanceLic(
  [in]  IUnknown *pUnkOuter,
  [in]  IUnknown *pUnkReserved,
  [in]  REFIID   riid,
  [in]  BSTR     bstrKey,
  [out] PVOID    *ppvObj
);

Parâmetros

[in] pUnkOuter

Um ponteiro para a interface IUnknown de controle no desconhecido externo se esse objeto estiver sendo criado como parte de uma agregação. Se o objeto não fizer parte de uma agregação, esse parâmetro deverá ser NULL.

[in] pUnkReserved

Esse parâmetro não é utilizado e deve ser NULL.

[in] riid

Uma referência ao identificador da interface a ser usada para se comunicar com o objeto recém-criado.

[in] bstrKey

Chave de licença em tempo de execução obtida anteriormente de IClassFactory2::RequestLicKey que é necessária para criar um objeto.

[out] ppvObj

Endereço da variável de ponteiro que recebe o ponteiro de interface solicitado em riid. Após o retorno bem-sucedido, *ppvObj contém o ponteiro de interface solicitado. Se ocorrer um erro, a implementação deverá definir *ppvObj como NULL.

Retornar valor

Esse método pode retornar os valores de retorno padrão E_INVALIDARG, E_OUTOFMEMORY e E_UNEXPECTED, bem como os valores a seguir.

Código de retorno Descrição
S_OK
A licença foi criada com êxito.
E_NOTIMPL
Esse método não é implementado porque os objetos só podem ser criados em computadores totalmente licenciados por meio de IClassFactory::CreateInstance.
E_POINTER
Um ponteiro passado em bstrKey ou ppvObj não é válido. Por exemplo, pode ser NULL.
E_NOINTERFACE
O objeto pode ser criado (e a chave de licença é válida), exceto que o objeto não dá suporte à interface especificada por riid.
CLASS_E_NOAGGREGATION
O parâmetro pUnkOuter não é NULL, mas essa classe de objeto não dá suporte à agregação.
CLASS_E_NOTLICENSED
A chave fornecida em bstrKey não é uma chave de licença válida.

Comentários

Anotações aos implementadores

Se a fábrica de classes não fornecer uma chave de licença (ou seja, IClassFactory2::RequestLicKey retornará E_NOTIMPL e o membro fRuntimeKeyAvail em LICINFO estiver definido como FALSE em IClassFactory2::GetLicInfo), esse método também poderá retornar E_NOTIMPL. Nesses casos, a fábrica de classes está implementando IClassFactory2 simplesmente para especificar se o computador está licenciado por meio do membro fLicVerified do LICINFO.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho ocidl.h

Confira também

Iclassfactory2

LICINFO