Função CoUnmarshalInterface (combaseapi.h)
Inicializa um proxy recém-criado usando dados gravados no fluxo por uma chamada anterior para a função CoMarshalInterface e retorna um ponteiro de interface para esse proxy.
Sintaxe
HRESULT CoUnmarshalInterface(
[in] LPSTREAM pStm,
[in] REFIID riid,
[out] LPVOID *ppv
);
Parâmetros
[in] pStm
Um ponteiro para o fluxo do qual a interface deve ser demarsalada.
[in] riid
Uma referência ao identificador da interface a ser desmarsalada. Para IID_NULL, a interface retornada é aquela definida pelo fluxo, objref.iid.
[out] ppv
O endereço da variável de ponteiro que recebe o ponteiro de interface solicitado em riid. Após o retorno bem-sucedido, *ppv contém o ponteiro de interface solicitado para a interface nãomarshaled.
Retornar valor
Essa função pode retornar o valor retornado padrão E_FAIL, os erros retornados por CoCreateInstance e os valores a seguir.
Código de retorno | Descrição |
---|---|
|
O ponteiro da interface não foimarsalizado com êxito. |
|
pStm é um ponteiro inválido. |
|
A função CoInitialize ou OleInitialize não foi chamada no thread atual antes de essa função ser chamada. |
|
O aplicativo de objeto foi desconectado do sistema de comunicação remota (por exemplo, como resultado de uma chamada para a função CoDisconnectObject ). |
|
Ocorreu um erro ao ler o banco de dados de registro. |
|
O QueryInterface final dessa função para a interface solicitada retornada E_NOINTERFACE. |
Comentários
Observação de segurança: chamar esse método com dados não confiáveis é um risco à segurança. Chame esse método apenas quando você tiver dados confiáveis.
- Lê do fluxo o CLSID a ser usado para criar uma instância do proxy.
- Obtém um ponteiro IMarshal para o proxy que deve fazer a unmarshaling. Se o objeto usar a implementação de marshaling padrão do COM, o ponteiro obtido será para uma instância do objeto proxy genérico. Se o marshaling estiver ocorrendo entre dois threads no mesmo processo, o ponteiro será para uma instância do marshaler de thread livre em processo. Se o objeto fornecer seu próprio código de marshaling, CoUnmarshalInterface chamará a função CoCreateInstance , passando o CLSID lido do fluxo de marshaling. CoCreateInstance cria uma instância do proxy do objeto e retorna um ponteiro de interface IMarshal para o proxy.
- Usando o ponteiro da interface IMarshal adquirido, a função chama IMarshal::UnmarshalInterface e, se apropriado, IMarshal::ReleaseMarshalData.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 Professional [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte | Windows 2000 Server [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | combaseapi.h (inclua Objbase.h) |
Biblioteca | Ole32.lib |
DLL | Ole32.dll |