Actuar como proveedor de libreta de direcciones de host
Hace referencia a: Outlook 2013 | Outlook 2016
Un proveedor host es un proveedor de libreta de direcciones que incluye destinatarios de otros proveedores en sus contenedores y se basa en la implementación de los destinatarios por parte de los otros proveedores para controlar parcialmente su mantenimiento. Un proveedor de hosts usa los identificadores de plantilla de estos destinatarios extranjeros para enlazar los datos de estos destinatarios al código en el proveedor externo. Este proceso de enlace se inicia cuando el proveedor recupera la propiedad PR_TEMPLATEID (PidTagTemplateid) de un destinatario y la pasa en una llamada a IMAPISupport::OpenTemplateID.
Cuando el proveedor llama a IMAPISupport::OpenTemplateID, MAPI coincide con mapiuid dentro del identificador de plantilla con un MAPIUID registrado por un proveedor y llama al método IABLogon::OpenTemplateID del proveedor. El proveedor externo podría devolver un puntero al objeto de propiedad del proveedor, a su propia implementación de objeto de propiedad o a una implementación que ajuste el objeto del proveedor. El puntero devuelto se coloca en el contenido del parámetro lppMAPIPropNew .
El proveedor puede elegir si desea llamar a IMAPISupport::OpenTemplateID con la marca FILL_ENTRY establecida. Establezca esta marca cuando se cree el destinatario o cuando haya pasado mucho tiempo desde que el proveedor ha actualizado las propiedades del destinatario. Un uso común de la marca de FILL_ENTRY es mantener un destinatario en el proveedor sincronizado con el original. La implementación de este tipo de programación de sincronización mejora el rendimiento.
Para mantener sincronizado a un destinatario extranjero
Determine un intervalo adecuado para las actualizaciones periódicas.
Marca de tiempo de cada llamada a IMAPISupport::OpenTemplateID.
Evalúe si es necesario realizar o no una actualización completa en función de la cantidad de tiempo que ha expirado desde la última llamada. Si es necesaria una actualización completa, llame a IMAPISupport::OpenTemplateID con la marca FILL_ENTRY. Si no es necesario, no establezca la marca en la llamada.
Cuando un cliente realiza una solicitud para una de las propiedades del destinatario copiado, el proveedor puede elegir si debe controlar la solicitud en sí o usar el código proporcionado por el proveedor externo. El proveedor puede esperar que el proveedor externo intercepte la mayoría de las llamadas a IMAPIProp , si no todas, excepto IMAPIProp::OpenProperty. Siempre se reenvía al proveedor una llamada a OpenProperty que solicita la propiedad PR_DETAILS_TABLE (PidTagDetailsTable).
Para acceder al código de identificador de plantilla
Abra el destinatario y llame a su método IMAPIProp::GetProps para recuperar la propiedad PR_TEMPLATEID (PidTagTemplateid). Si se produce un error en GetProps porque PR_TEMPLATEID no está disponible, el proveedor externo no admite un identificador de plantilla ni código relacionado para este destinatario. El proveedor tendrá que usar su implementación del destinatario para todo el mantenimiento.
Si el identificador de plantilla se devuelve desde GetProps, páselo y un puntero a la implementación IMAPIProp del destinatario en una llamada al método IMAPISupport::OpenTemplateID . Establezca la marca de FILL_ENTRY si es necesario actualizar la mayoría o todas las propiedades del destinatario, como en el momento de la creación o si no se han actualizado durante un tiempo.
Si OpenTemplateID devuelve la implementación IMAPIProp del proveedor externo, devuelva al cliente un puntero a esta implementación.
Si OpenTemplateID no devuelve una implementación, normalmente porque el proveedor externo no está en el perfil, devuelva al cliente un puntero a la implementación IMAPIProp del proveedor. El cliente debe poder trabajar con las propiedades del objeto mediante cualquiera de las interfaces.