Compartilhar via


Método IMarshal::UnmarshalInterface (objidlbase.h)

Cancela amarcação de um ponteiro de interface.

Sintaxe

HRESULT UnmarshalInterface(
  [in]  IStream *pStm,
  [in]  REFIID  riid,
  [out] void    **ppv
);

Parâmetros

[in] pStm

Um ponteiro para o fluxo do qual o ponteiro da interface deve ser nãomarsalizado.

[in] riid

Uma referência ao identificador da interface a ser desmarsalada.

[out] ppv

O endereço da variável de ponteiro que recebe o ponteiro da interface. Após o retorno bem-sucedido, *ppv contém o ponteiro de interface solicitado da interface a ser nãomarsalizado.

Retornar valor

Esse método pode retornar o valor retornado padrão E_FAIL, bem como os valores a seguir.

Código de retorno Descrição
S_OK
O ponteiro da interface não foimarsalizado com êxito.
E_NOINTERFACE
Não há suporte para a interface especificada.

Comentários

A biblioteca COM no processo em que a unmarshaling deve ocorrer chama a implementação do proxy desse método.

Anotações aos Chamadores

Não chame este método diretamente. No entanto, há algumas situações em que você pode chamá-lo indiretamente por meio de uma chamada para CoUnmarshalInterface. Por exemplo, se você estiver implementando um stub, sua implementação chamará CoUnmarshalInterface quando o stub receber um ponteiro de interface como um parâmetro em uma chamada de método.

Observações aos implementadores

A implementação do proxy deve ler os dados gravados no fluxo pela implementação do objeto original de IMarshal::MarshalInterface e usar esses dados para inicializar o objeto proxy cujo CLSID foi retornado pela chamada do stub de marshaling para a implementação do objeto original de IMarshal::GetUnmarshalClass.

Para retornar o ponteiro de interface apropriado, a implementação do proxy pode simplesmente chamar QueryInterface em si mesma, passando os parâmetros riid e ppv . No entanto, sua implementação de UnmarshalInterface é livre para criar um objeto diferente e, se necessário, retornar um ponteiro para ele.

Pouco antes de sair, mesmo que saia com um erro, sua implementação deve reposicionar o ponteiro de busca no fluxo imediatamente após o último byte de dados lidos.

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 objidlbase.h (inclua ObjIdl.h)

Confira também

Counmarshalinterface

IMarshal