Compartilhar via


Método IMoniker::Inverse (objidl.h)

Cria um moniker que é o inverso desse moniker. Quando composto à direita deste moniker ou de uma estrutura semelhante, o moniker será redigido a nada.

Sintaxe

HRESULT Inverse(
  [out] IMoniker **ppmk
);

Parâmetros

[out] ppmk

O endereço de uma variável de ponteiro IMoniker que recebe o ponteiro de interface para um moniker que é o inverso desse moniker. Quando bem-sucedida, a implementação deve chamar AddRef no novo moniker inverso. É responsabilidade do chamador chamar Release. Se ocorrer um erro, a implementação deverá definir *ppmk como NULL.

Retornar valor

Esse método pode retornar os valores de retorno padrão E_OUTOFMEMORY, bem como os valores a seguir.

Código de retorno Descrição
S_OK
O moniker inverso foi retornado com êxito.
MK_E_NOINVERSE
A classe moniker não tem um inverso.

Comentários

O inverso de um moniker é análogo ao diretório ".." em sistemas de arquivos MS-DOS; o diretório ".." atua como o inverso a qualquer outro nome de diretório, porque acrescentar ".." a um nome de diretório resulta em um caminho vazio. Da mesma forma, o inverso de um moniker normalmente também é o inverso de todos os monikers na mesma classe. No entanto, não é necessariamente o inverso de um moniker de uma classe diferente.

O inverso de um moniker composto é uma composição que consiste nos inversos dos componentes do moniker original, organizados em ordem inversa. Por exemplo, se o inverso de A for Inv( A ) e a composição de A, B e C for Comp( A, B, C ), então

Inv( Comp( A, B, C ) é igual a Comp( Inv( C ), Inv( B ), Inv( A ) ).

Nem todos os monikers têm inversos. A maioria dos monikers que são inversos, como anti-monikers, não têm inversos. Monikers que não têm nenhum inverso não podem ter monikers relativos formados de dentro dos objetos que identificam para outros objetos externos.

Anotações para chamadores

Um objeto que está usando um moniker para localizar outro objeto geralmente não sabe a classe do moniker que está usando. Para obter o inverso de um moniker, você sempre deve chamar IMoniker::Inverse em vez da função CreateAntiMoniker , pois não é possível ter certeza de que o moniker que você está usando considera um anti-moniker como seu inverso.

O método Inverso também é chamado pela implementação do método IMoniker::RelativePathTo , para ajudar na construção de um moniker relativo.

Anotações aos implementadores

Se os monikers não tiverem estrutura interna, você poderá chamar a função CreateAntiMoniker em para obter um anti-moniker na implementação de IMoniker::Inverse. Na implementação de IMoniker::ComposeWith, você precisa marcar para o inverso fornecido na implementação do Inverso.

Notas específicas da implementação

Implementação Observações
Anti-moniker Esse método retorna MK_E_NOINVERSE e define *ppmk como NULL.
Moniker de classe Esse método retorna um anti-moniker (ou seja, os resultados da chamada de CreateAntiMoniker).
Moniker de arquivo Esse método retorna um anti-moniker (ou seja, os resultados da chamada de CreateAntiMoniker).
Moniker composto genérico Esse método retorna um moniker composto que consiste nos inversos de cada um dos componentes da composição original, armazenados em ordem inversa. Por exemplo, se o inverso de A for Inv( A ), o inverso da composição de A, B e C será Comp(Inv( C ), Inv( B ), Inv( A ) .
Moniker de item Esse método retorna um anti-moniker (ou seja, os resultados da chamada de CreateAntiMoniker).
Moniker OBJREF Esse método retorna um anti-moniker (ou seja, os resultados da chamada de CreateAntiMoniker).
Moniker de ponteiro Esse método retorna um anti-moniker (ou seja, os resultados da chamada de CreateAntiMoniker).
Moniker de URL Esse método retorna MK_E_NOINVERSE e define *ppmk como NULL.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho objidl.h

Confira também

CreateAntiMoniker

Imoniker