Compartilhar via


IClassFactory::CreateInstance

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Esse método cria um não inicializado objeto de um identificador especificado classe (CLSID).

Syntax

HRESULT CreateInstance( 
  IUnknown* pUnkOuter, 
  REFIID riid, 
  void** ppvObject
);

Parameters

  • pUnkOuter
    [no] Se o objeto for que está sendo criado como parte de um agregado, ponteiro para o controle IUnknown interface do agregado. Caso contrário, pUnkOuter deve ser NULL.
  • riid
    [no] Referência ao identificador da interface a ser usado para se comunicar com o objeto recém-criado.

    Se pUnkOuter é NULL, este parâmetro é freqüentes de IID da interface de inicialização.

    Se pUnkOuter não-NULL, riid Deve ser IID_IUnknown (definido no cabeçalho como o IID para IUnknown).

  • ppvObject
    [out] Ponteiro para uma variável ponteiro que recebe o ponteiro interface solicitado no riid.

    Após bem-sucedido retornar *ppvObject Contém o ponteiro interface solicitada.

    Se o objeto não suporte a interface especificado em riid, a implementação deve definir *ppvObject para NULL.

Return Value

Este método oferece suporte a padrão retornam valores E_UNEXPECTED, E_OUTOFMEMORY e E_INVALIDARG. A seguinte tabela mostra os adicionais retornam valores para este método.

Valor Descrição

S_OK

O objeto especificado foi criado.

CLASS_E_NOAGGREGATION

O pUnkOuter parâmetro foi não-NULL e o objeto não suporte agregação.

E_NOINTERFACE

O objeto que ppvObject Aponta para não suporte a interface identificado por riid.

Remarks

O IClassFactory interface está sempre ativado um objeto classe. O CreateInstance método cria um não inicializado objeto da classe identificado com o CLSID especificado. Quando um objeto é criado dessa maneira, o CLSID deve ser registrado no Registro sistema com o CoRegisterClassObject função.

O pUnkOuter parâmetro indica se o objeto está sendo criado como parte de um agregado. Definições de objetos não são exigido para agregação suporte — eles devem ser especificamente projetados e implementados para suporte-lo.

O riid parâmetro especifica o identificador interface (IID) da interface através da qual você irá se comunicar com o novo objeto.

Se pUnkOuter não-NULL (que indica a agregação), o valor da riid parâmetro deve ser IID_IUnknown.

Se o objeto não fizer parte de um agregado, riid Normalmente especifica a interface embora que o objeto será inicializado.

Para embeddings OLE, é a interface inicialização IPersistStorage, mas em outras situações, outras interfaces são usados.

Para inicializar o objeto, deve haver um chamar subseqüente para um apropriado método na interface de inicialização.

Incluem funções inicialização comum IPersistStorage::InitNew (Para novo, em branco Embeddable Componentes), IPersistStorage::Load (Para recarregado Embeddable componentes).

Em geral, se um aplicativo oferece suporte a apenas uma classe de objetos, e o objeto classe está registrado para uso único, apenas um objeto pode ser criado.

O aplicativo não deve criar outros objetos, e uma solicitação fazer isso deve retornar um erro de IClassFactory::CreateInstance.

O mesmo é verdadeiro para aplicativos que suporte múltiplo classes, cada qual com um objeto classe registrado para uso único; Um CreateInstance Para uma classe seguido por um CreateInstance Para qualquer um das classes deve retornar um erro.

Para determinar se a plataforma oferece suporte a esta interface, consulte Determinando suporte COM APIs.

Requirements

Header ocidl.h, ocidl.idl
Library ole32.lib, uuid.lib
Windows Embedded CE Windows CE 2.0 and later
Windows Mobile Windows Mobile Version 5.0 and later

See Also

Reference

IClassFactory
IUnknown
IPersistStorage
IPersistStorage::InitNew
IPersistStorage::Load