Метод IMoniker::Inverse (objidl.h)

Создает моникер, обратный этому моникеру. При составлении справа от этого моникера или одного из аналогичных структур, моникер будет сочинить ни к чему.

Синтаксис

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

Параметры

[out] ppmk

Адрес переменной указателя IMoniker , которая получает указатель интерфейса на моникер, обратный этому моникеру. При успешном выполнении реализация должна вызвать AddRef для нового обратного моникера. Вызов release лежит на вызывающем объекте. При возникновении ошибки реализация должна присвоить *ppmk значение NULL.

Возвращаемое значение

Этот метод может возвращать стандартные возвращаемые значения E_OUTOFMEMORY, а также следующие значения.

Код возврата Описание
S_OK
Обратный моникер был успешно возвращен.
MK_E_NOINVERSE
Класс моникера не имеет инверсии.

Комментарии

Обратное моникера аналогично каталогу ".." в файловых системах MS-DOS; Каталог ".." выступает в качестве обратного имени любого другого каталога, так как добавление ".." к имени каталога приводит к пустому пути. Аналогичным образом, обратный моникер обычно также является обратным для всех моникеров в одном классе. Однако это не обязательно обратный моникер другого класса.

Обратный моникер является составным, состоящим из обратных компонентов исходного моникера, расположенных в обратном порядке. Например, если обратный элемент A — Inv( A ), а составной элемент A, B и C — Comp( A, B, C ), то

Inv( Comp( A, B, C ) равно Comp( Inv( C ), Inv( B ), Inv( A ) ).

Не все моникеры имеют инверсии. Большинство моникеров, которые сами являются обратными, такие как антимникеры, не имеют обратных. Моникеры, которые не имеют обратного значения, не могут иметь относительные моникеры, сформированные из объектов, которые они идентифицируют для других объектов снаружи.

Примечания к вызывающим абонентам

Объект, использующий моникер для поиска другого объекта, обычно не знает класс используемого моникера. Чтобы получить обратное моникер, следует всегда вызывать IMoniker::Inverse , а не функцию CreateAntiMoniker , так как вы не можете быть уверены, что используемое вами моникер считает антимоникер обратным.

Метод Inverse также вызывается реализацией метода IMoniker::RelativePathTo , чтобы помочь в создании относительного моникера.

Примечания для разработчиков

Если моникеры не имеют внутренней структуры, можно вызвать функцию CreateAntiMoniker в , чтобы получить антимникер в реализации IMoniker::Inverse. В реализации IMoniker::ComposeWith необходимо проверка для инверсии, который вы предоставляете в реализации Inverse.

Примечания, относящиеся к реализации

Реализация Примечания
Антимникер Этот метод возвращает MK_E_NOINVERSE и задает для *ppmkзначение NULL.
Моникер класса Этот метод возвращает антимоникер (то есть результаты вызова CreateAntiMoniker).
Моникер файла Этот метод возвращает антимоникер (то есть результаты вызова CreateAntiMoniker).
Универсальный составной моникер Этот метод возвращает составной моникер, состоящий из инверсий каждого из компонентов исходного составного элемента, хранящегося в обратном порядке. Например, если инверс А — Inv( A), то обратным составным элементом A, B и C является Comp(Inv( C ), Inv( B ), Inv( A ) ).
Моникер элемента Этот метод возвращает антимоникер (то есть результаты вызова CreateAntiMoniker).
Моникер OBJREF Этот метод возвращает антимоникер (то есть результаты вызова CreateAntiMoniker).
Моникер указателя Этот метод возвращает антимоникер (то есть результаты вызова CreateAntiMoniker).
Моникер URL-адреса Этот метод возвращает MK_E_NOINVERSE и задает для *ppmkзначение NULL.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header objidl.h

См. также раздел

CreateAntiMoniker

IMoniker