Поделиться через


Метод IParseDisplayName::P arseDisplayName (oleidl.h)

Анализирует указанное отображаемое имя и создает соответствующее моникер.

Синтаксис

HRESULT ParseDisplayName(
  [in]  IBindCtx *pbc,
  [in]  LPOLESTR pszDisplayName,
  [out] ULONG    *pchEaten,
  [out] IMoniker **ppmkOut
);

Параметры

[in] pbc

Указатель на контекст привязки, используемый в этой операции привязки. См. раздел IBindCtx.

[in] pszDisplayName

Отображаемое имя для анализа.

[out] pchEaten

Указатель на переменную, которая получает количество символов в отображаемом имени, соответствующих моникеру ppmkOut .

[out] ppmkOut

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

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

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

Код возврата Описание
S_OK
Метод завершился успешно.
MK_E_SYNTAX
В отображаемом имени имеется синтаксическая ошибка. Не удалось выполнить синтаксический анализ, так как pszDisplayName можно было лишь частично разрешить в моникер. В этом случае параметр *pchEaten содержит количество символов, которые были успешно проанализированы в префикс моникера. Параметр ppmkOut должен иметь значение NULL.
MK_E_NOOBJECT
Отображаемое имя не идентифицирует компонент в этом пространстве имен.
E_INVALIDARG
Один или несколько параметров являются недопустимыми.

Комментарии

Как правило, максимальный префикс pszDisplayName , который является синтаксически допустимым и представляет объект, должен использоваться этим методом и преобразован в моникер.

Как правило, этот метод вызывается методом MkParseDisplayName или MkParseDisplayNameEx. На начальном этапе операции синтаксического анализа эти функции могут получить интерфейс IParseDisplayName непосредственно из экземпляра класса, определяемого нотацией "@ProgID" или "ProgID". Последующие шаги синтаксического анализа могут запрашивать интерфейс промежуточного объекта.

Циклы main MkParseDisplayName и MkParseDisplayNameEx находят следующий фрагмент моникера, вызывая эквивалентный метод в интерфейсе IMoniker, то есть IMoniker::P arseDisplayName, в моникере, который он в настоящее время содержит. В этом вызове IMoniker::P arseDisplayName функция MkParseDisplayName или MkParseDisplayNameEx передает значение NULL в параметре pmkToLeft . Если моникер в настоящее время является универсальным составным элементом, вызов IMoniker::P arseDisplayName передается этим составным элементом в последнюю часть, передавая префикс составного элемента слева от части в pmkToLeft.

Некоторые классы моникера смогут обрабатывать этот анализ внутри себя, так как они предназначены для обозначения только определенных видов объектов. Другим пользователям потребуется выполнить привязку к назначенному объекту для выполнения процесса синтаксического анализа. Как обычно, эти объекты не должны освобождаться IMoniker::P arseDisplayName , а должны быть переданы в контекст привязки через IBindCtx::RegisterObjectBound или IBindCtx::GetRunningObjectTable , за которым следует IRunningObjectTable::Register для последующего выпуска.

Требования

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

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

IMoniker::P arseDisplayName

IParseDisplayName

MkParseDisplayName

MkParseDisplayNameEx