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 |
---|---|
|
O método foi concluído com sucesso. |
|
O componente especificado por clsid não está registrado como um componente COM. |
|
Não há memória suficiente disponível para instanciar o objeto. |
|
O argumento passado no parâmetro ppvObj é inválido. |
|
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 |