ILocalRegistry.CreateInstance(Guid, Object, Guid, UInt32, IntPtr) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
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 .