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

 

Publicado: abril de 2016

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

Namespace:   Microsoft.VisualStudio.Shell.Interop
Assembly:  Microsoft.VisualStudio.Shell.Interop (em Microsoft.VisualStudio.Shell.Interop.dll)

Sintaxe

int CreateInstance(
    Guid clsid,
    object punkOuter,
    [InAttribute] ref Guid riid,
    uint dwFlags,
    out IntPtr ppvObj
)
int CreateInstance(
    Guid clsid,
    Object^ punkOuter,
    [InAttribute] Guid% riid,
    unsigned int dwFlags,
    [OutAttribute] IntPtr% ppvObj
)
abstract CreateInstance : 
        clsid:Guid *
        punkOuter:Object *
        riid:Guid byref *
        dwFlags:uint32 *
        ppvObj:nativeint byref -> int
Function CreateInstance (
    clsid As Guid,
    punkOuter As Object,
    <InAttribute> ByRef riid As Guid,
    dwFlags As UInteger,
    <OutAttribute> ByRef ppvObj As IntPtr
) As Integer

Parâmetros

  • clsid
    [in] Classe (CLSID) de identificador do objeto solicitado.Este é o CLSID associado a dados e o código que é usado para criar o objeto.
  • punkOuter
    [in] Ponteiro para a instância de controle de IUnknown do agregado que usa o objeto recém-criado.Um valor null indica que o objeto não está sendo criado como parte de um agregado.Se não-nulos, isso é um ponteiro para o objeto agregado IUnknown interface (o controle de IUnknown).
  • riid
    [in] Interface a ser usado para se comunicar com o objeto.Por exemplo, IID_IClassFactory.
  • dwFlags
    [in] Sinalizadores para controlar a criação de instância a partir do CLSCTX enumeração.Especifica um valor de CLSCTX_INPROC_SERVER.
  • ppvObj
    [out] Endereço da variável de ponteiro que recebe o ponteiro de interface solicitado na riid.No retorno bem-sucedido, ppvObj contém o ponteiro de interface solicitada.Em caso de falha, ppvObj contém null.

Valor de retorno

Type: System.Int32

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

Comentários

COM assinatura

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 do COM CoCreateInstance função.Cria um único objeto não inicializado do tipo associado com o CLSID especificado e retorna qualquer ponteiros de interface solicitada.

CreateInstanceprocura o objeto de classe no Registro local de objetos registrados, conecta-se ao objeto de classe associado com o CLSID especificado, cria uma instância 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 classe do objeto, como CreateInstance para criar uma instância do objeto e para liberar a referência a 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 precisará manter o objeto de fábrica de classe para criar outras instâncias do objeto.Para criar vários objetos de um objeto de classe única, use o GetClassObjectOfClsid método.

Este 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.Somente é aceito instanciando 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 especifica esse valor, o objeto será instanciado globalmente usando COM CoCreateInstance função.

Consulte também

Interface ILocalRegistry
Namespace Microsoft.VisualStudio.Shell.Interop

Retornar ao topo