Compartir a través de


Función MkParseDisplayName (objbase.h)

Convierte una cadena en un moniker que identifica el objeto denominado por la cadena.

Esta función es la inversa de la operación IMoniker::GetDisplayName , que recupera el nombre para mostrar asociado a un moniker.

Sintaxis

HRESULT MkParseDisplayName(
  [in]  LPBC      pbc,
  [in]  LPCOLESTR szUserName,
  [out] ULONG     *pchEaten,
  [out] LPMONIKER *ppmk
);

Parámetros

[in] pbc

Puntero a la interfaz IBindCtx del objeto de contexto de enlace que se usará en esta operación de enlace.

[in] szUserName

Puntero al nombre para mostrar que se va a analizar.

[out] pchEaten

Puntero al número de caracteres de szUserName que se consumieron. Si la función se ejecuta correctamente, *pchEaten es la longitud de szUserName; de lo contrario, es el número de caracteres analizados correctamente.

[out] ppmk

La dirección de la variable de puntero IMoniker* que recibe el puntero de interfaz al moniker que se creó a partir de szUserName. Cuando se ejecuta correctamente, la función ha llamado a AddRef en el moniker y el autor de la llamada es responsable de llamar a Release. Si se produce un error, el puntero de interfaz especificado contendrá la mayor parte del moniker que el método pudo crear antes de que se produjera el error.

Valor devuelto

Esta función puede devolver el valor devuelto estándar E_OUTOFMEMORY, así como los siguientes valores.

Código devuelto Descripción
S_OK
La operación de análisis se realizó correctamente y se creó el moniker.
MK_E_SYNTAX
Error en la sintaxis de un nombre de archivo o un error en la sintaxis del moniker compuesto resultante.
 

Esta función también puede devolver cualquiera de los valores de error devueltos por IMoniker::BindToObject, IOleItemContainer::GetObject o IParseDisplayName::P arseDisplayName.

Comentarios

La función MkParseDisplayName analiza un nombre legible en un moniker que se puede usar para identificar un origen de vínculo. El moniker resultante puede ser un moniker simple (como un moniker de archivo) o puede ser una composición genérica formada por las partes del moniker del componente. Por ejemplo, el nombre para mostrar "c:\mydir\somefile!item 1"

se puede analizar en el siguiente moniker compuesto genérico: FileMoniker basado en "c:\mydir\somefile") + (ItemMoniker basado en "item 1").

El uso más común de MkParseDisplayName es la implementación del cuadro de diálogo Vínculos estándar, que permite a un usuario final especificar el origen de un objeto vinculado escribiendo en una cadena. También es posible que tenga que llamar a MkParseDisplayName si la aplicación admite un lenguaje de macros que permita referencias remotas (referencia a elementos fuera del documento).

El análisis de un nombre para mostrar a menudo requiere activar los mismos objetos que se activarían durante una operación de enlace, por lo que puede ser tan costoso (en términos de rendimiento) como enlace. Los objetos enlazados durante la operación de análisis se almacenan en caché en el contexto de enlace pasado a la función. Si tiene previsto enlazar el moniker devuelto por MkParseDisplayName, es mejor hacerlo inmediatamente después de que se devuelva la función, usando el mismo contexto de enlace, lo que elimina la necesidad de activar objetos una segunda vez.

MkParseDisplayName analiza tanto el nombre para mostrar como entiende en un moniker. A continuación, la función llama a IMoniker::P arseDisplayName en el moniker recién creado y pasa el resto del nombre para mostrar. El moniker devuelto por ParseDisplayName se compone al final del moniker existente y, si alguno de los nombres para mostrar permanece sin analizar, se llama a ParseDisplayName en el resultado de la composición. Este proceso se repite hasta que se analiza todo el nombre para mostrar.

MkParseDisplayName intenta analizar el principio del nombre para mostrar con el primero que se realiza correctamente:

  1. La función busca en la tabla de objetos en ejecución los monikers de archivo correspondientes a todos los prefijos del nombre para mostrar que constan únicamente de caracteres de nombre de archivo válidos. Esta estrategia puede identificar documentos que aún no están guardados.
  2. La función comprueba el prefijo máximo del nombre para mostrar, que consta únicamente de caracteres de nombre de archivo válidos, para ver si un documento OLE 1 está registrado por ese nombre. En este caso, el moniker devuelto es un moniker interno proporcionado por la capa de compatibilidad OLE 1 de OLE 2.
  3. La función consulta al sistema de archivos para comprobar si un prefijo del nombre para mostrar coincide con un archivo existente. El nombre de archivo puede ser drive-absolute, drive-relative, working-directory relative, or begin with an explicit network share name. Se trata del caso común.
  4. Si el carácter inicial del nombre para mostrar es '@', la función busca la cadena más larga inmediatamente después de ella que se ajusta a la sintaxis de ProgID legal. La función convierte esta cadena en un CLSID mediante la función CLSIDFromProgID . Si el CLSID representa una clase OLE 2, la función carga el objeto de clase correspondiente y solicita un puntero de interfaz IParseDisplayName . A continuación, la interfaz IParseDisplayName resultante se asigna a toda la cadena que se va a analizar, empezando por "@". Si el CLSID representa una clase OLE 1, la función trata la cadena que sigue al ProgID como un designador de vínculos OLE1/DDE que tiene sintaxisde elementode nombre de archivo|.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows 2000 Server [aplicaciones de escritorio | Aplicaciones para UWP]
Plataforma de destino Windows
Encabezado objbase.h
Library Ole32.lib
Archivo DLL Ole32.dll
Conjunto de API ext-ms-win-com-ole32-l1-1-1 (introducido en Windows 8.1)

Consulte también

IMoniker::GetDisplayName

IMoniker::P arseDisplayName

IParseDisplayName