CoCreateInstance
9/8/2008
Thisfunction cria o local sistema não inicializado um único objeto da classe associado com um identificador classe especificada.
Syntax
STDAPI CoCreateInstance(
REFCLSID rclsid,
LPUNKNOWN pUnkOuter,
DWORD dwClsContext,
REFIID riid,
LPVOID* ppv
);
Parameters
- rclsid
[no] Identificador de classe associado com os dados e codificar que são usados para criar o objeto.
- pUnkOuter
[no] Se NULL, indica que o objeto não está sendo criado como parte de um agregado. Se não-NULL, ponteiro para o agregado do objeto IUnknown interface (o controle IUnknown).
- dwClsContext
[no] Especifica o contexto no qual a codificar que gerencia o objeto recém-criado será executar. O válido somente valor para este parâmetro é CLSCTX_INPROC_SERVER. Isso é a partir de enumeração CLSCTX. Qualquer outro valor resulta em um valor de retorno de E_NOTIMPL.
- riid
[no] Referência ao identificador da interface a ser usado para se comunicar com o objeto.
- PPV
[out] Endereço do ponteiro variável que recebe o ponteiro interface solicitado no riid. Após bem-sucedido retornar, PPV Contém o ponteiro interface solicitada.
Return Value
Um dos valores descritos a seguinte tabela é retornada.
Valor | Descrição |
---|---|
S_OK |
Uma instância da classe de objeto especificado foi criada com êxito. |
REGDB_E_CLASSNOTREG |
Uma classe especificada não está registrado no banco de dados registro. Também pode indicar que o tipo de servidor solicitado in a CLSCTX enumeração não está registrada ou os valores para tipos de servidor no Registro são danificar. |
CLASS_E_NOAGGREGATION |
Esta classe não pode ser criado como parte de um agregado. |
Remarks
O CoCreateInstance função auxiliar fornece um atalho conveniente por conexão com o objeto classe associado com o identificador classe especificada, criando um não inicializado instância e liberar o objeto classe. Como tal, ele encapsula a seguinte funcionalidade.
CoGetClassObject(rclsid, dwClsContext, NULL, IID_IClassFactory, &pCF);
hresult = pCF->CreateInstance(pUnkOuter, riid, ppvObj)
pCF->Release();
É conveniente usar CoCreateInstance Quando você precisa criar apenas uma única instância de um objeto sobre o local máquina. Quando você estiver criando múltiplo instâncias, é mais eficiente para obter um ponteiro para da o objeto classe IClassFactory interface e usar seus métodos quando necessário. Em maiúsculas e minúsculas a último, você deve usar o CoGetClassObject função.
In a CLSCTX enumeração, você pode especificar o tipo de servidor usado para gerenciar o objeto. As constantes podem ser CLSCTX_INPROC_SERVER, CLSCTX_INPROC_HANDLER, CLSCTX_LOCAL_SERVER ou qualquer combinação desses valores. A constante CLSCTX_ALL é definido como a combinação de todos os três. Para obter mais informações sobre o uso de um ou uma combinação de constantes, referir a CLSCTX.
Passando para esta função qualquer inválido e, em algumas circunstâncias, NULL ponteiros resultam em terminação inesperada do aplicativo.
Para determinar se a plataforma oferece suporte a essa função, consulte Determinando suporte COM APIs.
Requirements
Header | objbase.h |
Library | ole32.lib |
Windows Embedded CE | Windows CE 2.0 and later |
Windows Mobile | Windows Mobile Version 5.0 and later |