Método IObjectContext::CreateInstance (comsvcs.h)

Cria um objeto usando o contexto do objeto atual.

Sintaxe

HRESULT CreateInstance(
  [in]  REFCLSID rclsid,
  [in]  REFIID   riid,
  [out] LPVOID   *ppv
);

Parâmetros

[in] rclsid

O CLSID do tipo de objeto a ser instanciado.

[in] riid

Qualquer interface implementada pelo objeto que você deseja instanciar.

[out] ppv

Uma referência à interface solicitada no novo objeto . Se a instanciação falhar, esse parâmetro será definido como NULL.

Retornar valor

Esse método pode retornar os valores a seguir.

Código de retorno Descrição
S_OK
O método foi concluído com sucesso.
REGDB_E_CLASSNOTREG
O componente especificado por clsid não está registrado como um componente COM.
E_OUTOFMEMORY
Não há memória suficiente disponível para instanciar o objeto.
E_INVALIDARG
O argumento passado no parâmetro ppvObj é inválido.
E_UNEXPECTED
Erro inesperado. Isso pode acontecer se um objeto passar seu ponteiro IObjectContext para outro objeto e o outro objeto chamar CreateInstance usando esse ponteiro. Um ponteiro IObjectContext não é válido fora do contexto do objeto que o obteve originalmente.

Comentários

CreateInstance cria um objeto COM. No entanto, o objeto terá contexto somente se seu componente for registrado com COM+.

Quando você cria um objeto usando CreateInstance, o contexto do novo objeto é derivado de IObjectContext do objeto atual e das propriedades declarativas do componente do novo objeto. O novo objeto sempre é executado dentro da mesma atividade que o objeto que o criou. Se o objeto atual tiver uma transação, o atributo de transação do componente do novo objeto determinará se o novo objeto é executado dentro do escopo dessa transação.

Se a configuração do atributo de transação do componente exigir uma transação ou oferecer suporte a transações, o novo objeto herdará a transação do criador. Se o atributo de transação do componente exigir uma nova transação, COM+ iniciará uma nova transação para o novo objeto. Se o atributo de transação do componente não der suporte a transações, o novo objeto não será executado em nenhuma transação.

CreateInstance sempre retorna a interface IUnknown no objeto recém-instanciado. Você deve converter imediatamente o valor retornado para a interface pela qual deseja se comunicar com o novo objeto. A ID da interface que você passa no parâmetro riid não precisa ser a mesma interface que a que você converte o valor retornado, mas deve ser uma interface implementada pelo objeto que você está instanciando.

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 comsvcs.h

Confira também

IObjectContext