Compartir a través de


IABLogon::PrepareRecips

Hace referencia a: Outlook 2013 | Outlook 2016

Prepara una lista de destinatarios para su uso posterior por parte del sistema de mensajería.

HRESULT PrepareRecips(
  ULONG ulFlags,
  LPSPropTagArray lpPropTagArray,
  LPADRLIST lpRecipList
);

Parameters

ulFlags

[in] Máscara de bits de marcas que controla el tipo de texto en las cadenas devueltas. Se puede establecer la marca siguiente:

  • MAPI_CACHE_ONLY: use solo la libreta de direcciones sin conexión para realizar la resolución de nombres. Por ejemplo, puede usar esta marca para permitir que una aplicación cliente abra la lista global de direcciones (GAL) en modo de intercambio almacenado en caché y acceda a una entrada en esa libreta de direcciones desde la memoria caché sin crear tráfico entre el cliente y el servidor. Esta marca solo es compatible con el proveedor de libreta de direcciones de Exchange.

lpPropTagArray

[in] Puntero a una estructura SPropTagArray que contiene una matriz de etiquetas de propiedad que indican las propiedades que requieren actualización, si las hay. El parámetro lpPropTagArray puede ser NULL.

lpRecipList

[in] Puntero a una estructura ADRLIST que contiene la lista de destinatarios.

Valor devuelto

S_OK

La lista de destinatarios se preparó correctamente.

MAPI_E_NOT_FOUND

Uno o varios de los destinatarios del parámetro lpRecipList no existen.

Un cliente llama al método MAPI IAddrBook::P repareRecips para modificar o reorganizar un conjunto de propiedades para uno o varios destinatarios. Los destinatarios pueden formar parte o no de la lista de destinatarios de un mensaje saliente. MAPI transfiere esta llamada al método IABLogon::P repareRecips de un proveedor de libretas de direcciones .

IABLogon::P repareRecips realiza cuatro tareas principales:

  • Garantiza que todos los destinatarios de la lista de direcciones a los que apunta el parámetro lpRecipList tengan un identificador de entrada a largo plazo.

  • Garantiza que todos los destinatarios tengan las propiedades especificadas en la matriz de valores de propiedad a las que apunta el parámetro lpPropTagArray .

  • Garantiza que las propiedades de la matriz de valores de propiedad aparecen antes que las demás propiedades que existían antes de la llamada.

  • Garantiza que el orden de las propiedades de la estructura ADRENTRY de cada destinatario en la estructura ADRLIST es el mismo que en la matriz de valores de propiedad.

La estructura ADRENTRY del parámetro lpRecipList contiene una estructura ADRENTRY para cada destinatario. Cada estructura ADRENTRY contiene una matriz de estructuras SPropValue para describir las propiedades del destinatario. Cuando IABLogon::P repareRecips devuelve, la matriz de estructura SPropValue para cada destinatario incluye las propiedades de lpPropTagArray seguidas de las demás propiedades del destinatario.

Notas a los implementadores

Implementar IABLogon::P repareRecips implica colocar propiedades en un orden específico, recuperar valores de propiedad y convertir identificadores de entrada a corto plazo en identificadores de entrada a largo plazo. Las propiedades que se solicitan en el parámetro lpPropTagArray deben estar al principio de la matriz de valores de propiedad asociada a la estructura ADRENTRY de cada destinatario en el parámetro lpRecipList . Si los valores de estas propiedades no existen, abra la lista de distribución o el usuario de mensajería asociados mediante su identificador de entrada y recupere los valores de propiedad que faltan.

Asigne cada estructura SPropValue pasada en lpRecipList por separado para que las estructuras se puedan liberar individualmente. Si debe asignar espacio adicional para cualquier estructura SPropValue , por ejemplo, para almacenar los datos de una propiedad de cadena, use la función MAPIAllocateBuffer para asignar espacio adicional para la matriz de valores de propiedad completa. Use la función MAPIFreeBuffer para liberar la matriz de valores de propiedad original y, a continuación, use la función MAPIAllocateMore para asignar cualquier memoria adicional necesaria.

Para implementar IABLogon::P repareRecips, use el procedimiento siguiente:

  1. Compruebe si hay entradas en el parámetro lpPropTagArray . Si la matriz de valores de propiedad está vacía, no hay trabajo que hacer. Devuelve un valor correcto.

  2. Procese cada destinatario en el parámetro lpRecipList . Hay un miembro de estructura ADRENTRY para cada destinatario de la lista. Omita los siguientes tipos de destinatarios:

    • Destinatarios sin un identificador de entrada en el miembro rgPropVals de su estructura ADRENTRY (es decir, destinatarios sin resolver).

    • Destinatarios con un identificador de entrada que no pertenece a su proveedor. Estos destinatarios se pasarán a otro proveedor de libreta de direcciones.

  3. Abra el destinatario y recupere las propiedades que ya están establecidas para el destinatario.

  4. Combine la matriz de valores de propiedad especificada en lpRecipList con la matriz de propiedades devuelta por GetProps. Si se produce la misma propiedad en ambas matrices de propiedades, use el valor de lpRecipList.

  5. Si la matriz de valores de propiedad lpRecipList es lo suficientemente grande como para contener todas las propiedades necesarias, reemplácela por la matriz combinada. Si la matriz de valores de propiedad lpRecipList no es lo suficientemente grande, reemplácela por una matriz recién asignada. Asegúrese de que la nueva matriz tiene un valor actualizado en cada uno de sus miembros cValues .

  6. Si no reconoce una o varias de las propiedades del parámetro lpPropTagArray , establezca el tipo de propiedad de la estructura ADRENTRY del destinatario en PT_ERROR y el valor de propiedad en MAPI_E_NOT_FOUND o en otro valor que proporcione una razón más específica para la falta de disponibilidad de la propiedad. Para obtener información sobre PT_ERROR, vea Tipos de propiedad.

Nota:

Nunca reasignar la estructura ADRLIST que se pasa a IABLogon::P repareRecips ni cambiar su número de entradas.

Vea también