ILocalRegistry.CreateInstance(Guid, Object, Guid, UInt32, IntPtr) Método

Definição

Cria uma instância de uma classe listada no registro local.

public:
 int CreateInstance(Guid clsid, System::Object ^ punkOuter, Guid % riid, System::UInt32 dwFlags, [Runtime::InteropServices::Out] IntPtr % ppvObj);
public int CreateInstance (Guid clsid, object punkOuter, ref Guid riid, uint dwFlags, out IntPtr ppvObj);
abstract member CreateInstance : Guid * obj * Guid * uint32 * nativeint -> int
Public Function CreateInstance (clsid As Guid, punkOuter As Object, ByRef riid As Guid, dwFlags As UInteger, ByRef ppvObj As IntPtr) As Integer

Parâmetros

clsid
Guid

no Identificador de classe (CLSID) do objeto solicitado. Esse é o CLSID associado aos dados e ao código que é usado para criar o objeto.

punkOuter
Object

no Ponteiro para a instância de controle do IUnknown da agregação que usa o objeto recém-criado. Um valor NULL indica que o objeto não está sendo criado como parte de uma agregação. Se não for NULL, esse é um ponteiro para a interface do objeto de agregação IUnknown (o controle IUnknown ).

riid
Guid

no Interface a ser usada para se comunicar com o objeto. Por exemplo, IID_IClassFactory.

dwFlags
UInt32

no Sinalizadores que controlam a criação da instância a partir da CLSCTX enumeração. Especifica um valor de CLSCTX_INPROC_SERVER .

ppvObj
IntPtr

fora Endereço da variável de ponteiro que recebe o ponteiro de interface solicitado no riid . Após o retorno bem-sucedido, ppvObj contém o ponteiro de interface solicitado. Após a falha, ppvObj contém null .

Retornos

Int32

Se o método for bem-sucedido, retornará S_OK. Se falhar, retornará um código de erro.

Comentários

Assinatura COM

De objext. idl:

HRESULT ILocalRegistry::CreateInstance(  
   [in] CLSID clsid,  
   [in] IUnknown* punkOuter,  
   [in] REFIID riid,  
   [in] DWORD dwFlags,  
   [out] void** ppvObj  
);  

Esse método é equivalente à função do COM CoCreateInstance . Ele cria um único objeto não inicializado do tipo associado ao CLSID especificado e retorna quaisquer ponteiros de interface solicitados.

CreateInstance pesquisa o objeto de classe no registro local de objetos registrados, conecta-se ao objeto de classe associado ao CLSID especificado, cria uma instância não inicializada do objeto e libera o objeto de classe. Esse método encapsula chamadas para a função COM CoGetClassObject para obter um ponteiro para a fábrica de classes do objeto, para CreateInstance criar uma instância do objeto e para liberar a referência à fábrica de classes do objeto.

Chame CreateInstance quando você deseja criar uma única instância de um objeto com base em um CLSID e não precisa manter o objeto de fábrica de classes para criar outras instâncias do objeto. Para criar vários objetos a partir de um único objeto de classe, use o GetClassObjectOfClsid método.

Esse método registra um objeto no hive do Registro local (por exemplo, [HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\8.0\CLSID]). Nesta seção do registro, InProcServer32 é usado como um valor em vez de uma subchave. Damos suporte apenas a instâncias de objetos no thread da interface do usuário principal.

Especifique um valor de CLSCTX_INPROC_SERVER para o dwFlags parâmetro para instanciar o objeto localmente. Se você não especificar esse valor, o objeto será instanciado globalmente usando a função de COM CoCreateInstance .

Aplica-se a