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

Crea un moniker que es el inverso de este moniker. Cuando se compone a la derecha de este moniker o de una estructura similar, el moniker no se compone de nada.

Sintaxis

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

Parámetros

[out] ppmk

Dirección de una variable de puntero IMoniker que recibe el puntero de interfaz a un moniker que es el inverso de este moniker. Cuando se ejecuta correctamente, la implementación debe llamar a AddRef en el nuevo moniker inverso. Es responsabilidad del autor de la llamada llamar a Release. Si se produce un error, la implementación debe establecer *ppmk enNULL.

Valor devuelto

Este método puede devolver los valores devueltos estándar E_OUTOFMEMORY, así como los valores siguientes.

Código devuelto Descripción
S_OK
El moniker inverso se ha devuelto correctamente.
MK_E_NOINVERSE
La clase moniker no tiene un inverso.

Comentarios

El inverso de un moniker es análogo al directorio ".." en sistemas de archivos MS-DOS; el directorio ".." actúa como inverso a cualquier otro nombre de directorio, ya que anexa ".." a un nombre de directorio da como resultado una ruta de acceso vacía. De la misma manera, el inverso de un moniker normalmente también es el inverso de todos los monikers de la misma clase. Sin embargo, no es necesariamente el inverso de un moniker de una clase diferente.

El inverso de un moniker compuesto es un compuesto formado por los inversos de los componentes del moniker original, organizados en orden inverso. Por ejemplo, si el inverso de A es Inv( A ) y la composición de A, B y C es Comp( A, B, C ), entonces

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

No todos los monikers tienen inversos. La mayoría de los monikers que son inversos, como los anti-monikers, no tienen inversos. Los monikers que no tienen ningún monikers inverso no pueden tener monikers relativos formados desde dentro de los objetos que identifican a otros objetos fuera.

Notas a los autores de llamadas

Un objeto que usa un moniker para buscar otro objeto normalmente no conoce la clase del moniker que está usando. Para obtener el inverso de un moniker, siempre debe llamar a IMoniker::Inverse en lugar de la función CreateAntiMoniker , ya que no puede estar seguro de que el moniker que está usando considera que un anti-moniker es su inverso.

La implementación del método IMoniker::RelativePathTo también llama al método Inverso para ayudar a construir un moniker relativo.

Notas para los implementadores

Si los monikers no tienen ninguna estructura interna, puede llamar a la función CreateAntiMoniker en para obtener un anti-moniker en la implementación de IMoniker::Inverse. En la implementación de IMoniker::ComposeWith, debe comprobar el inverso que proporcione en la implementación de Inverso.

Notas específicas de la implementación

Implementación Notas
Anti-moniker Este método devuelve MK_E_NOINVERSE y establece *ppmk enNULL.
Moniker de clase Este método devuelve un anti-moniker (es decir, los resultados de llamar a CreateAntiMoniker).
Moniker de archivo Este método devuelve un anti-moniker (es decir, los resultados de llamar a CreateAntiMoniker).
Moniker compuesto genérico Este método devuelve un moniker compuesto que consta de los inversos de cada uno de los componentes del compuesto original, almacenados en orden inverso. Por ejemplo, si el inverso de A es Inv( A ), el inverso de la composición de A, B y C es Comp(Inv( C ), Inv( B ), Inv( A ) ).
Moniker de elemento Este método devuelve un anti-moniker (es decir, los resultados de llamar a CreateAntiMoniker).
Moniker de OBJREF Este método devuelve un anti-moniker (es decir, los resultados de llamar a CreateAntiMoniker).
Moniker de puntero Este método devuelve un anti-moniker (es decir, los resultados de llamar a CreateAntiMoniker).
Moniker de dirección URL Este método devuelve MK_E_NOINVERSE y establece *ppmk enNULL.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado objidl.h

Consulte también

CreateAntiMoniker

Imoniker