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


IABLogon::PrepareRecips

Область применения: Outlook 2013 | Outlook 2016

Подготавливает список получателей для последующего использования системой обмена сообщениями.

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

Параметры

ulFlags

[в] Битовая маска флагов, управляющая типом текста в возвращаемых строках. Можно задать следующий флаг:

  • MAPI_CACHE_ONLY. Используйте только автономную адресную книгу для разрешения имен. Например, этот флаг можно использовать, чтобы разрешить клиентскому приложению открывать глобальный список адресов (GAL) в режиме кэшированного обмена и получать доступ к записи в этой адресной книге из кэша без создания трафика между клиентом и сервером. Этот флаг поддерживается только поставщиком адресной книги Exchange.

lpPropTagArray

[в] Указатель на структуру SPropTagArray , содержащую массив тегов свойств, указывающих свойства, которые требуют обновления, если таковые есть. Параметр lpPropTagArray может иметь значение NULL.

lpRecipList

[в] Указатель на структуру ADRLIST , содержащую список получателей.

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

S_OK

Список получателей успешно подготовлен.

MAPI_E_NOT_FOUND

Один или несколько получателей в параметре lpRecipList не существуют.

Клиент вызывает метод MAPI IAddrBook::P repareRecips для изменения или изменения порядка набора свойств для одного или нескольких получателей. Получатели могут быть или не входить в список получателей исходящего сообщения. MAPI передает этот вызов в метод IABLogon::P repareRecips поставщика адресной книги .

IABLogon::P repareRecips выполняет четыре main задачи:

  • Гарантирует, что все получатели в списке адресов, на которые указывает параметр lpRecipList , имеют долгосрочный идентификатор записи.

  • Гарантирует, что все получатели имеют свойства, указанные в массиве значений свойств, на которые указывает параметр lpPropTagArray .

  • Гарантирует, что свойства из массива значений свойств отображаются перед любыми другими свойствами, которые существовали до вызова.

  • Гарантирует, что порядок свойств в структуре ADRENTRY каждого получателя в структуре ADRLIST совпадает с порядком в массиве значений свойств.

Структура ADRENTRY в параметре lpRecipList содержит одну структуру ADRENTRY для каждого получателя. Каждая структура ADRENTRY содержит массив структур SPropValue для описания свойств получателя. При возврате IABLogon::P repareRecips массив структуры SPropValue для каждого получателя включает свойства из lpPropTagArray , за которыми следуют другие свойства получателя.

Примечания для исполнителей

Реализация IABLogon::P repareRecips включает размещение свойств в определенном порядке, получение значений свойств и преобразование краткосрочных идентификаторов входа в долгосрочные. Свойства, запрашиваемые в параметре lpPropTagArray , должны находиться в начале массива значений свойств, связанного со структурой ADRENTRY каждого получателя в параметре lpRecipList . Если значения для этих свойств не существуют, откройте связанный пользователь обмена сообщениями или список рассылки с помощью идентификатора записи и получите отсутствующие значения свойств.

Выделите каждую структуру SPropValue , переданную в lpRecipList , отдельно, чтобы можно было освободить структуры по отдельности. Если необходимо выделить дополнительное пространство для любой структуры SPropValue , например для хранения данных для строкового свойства, используйте функцию MAPIAllocateBuffer , чтобы выделить дополнительное пространство для полного массива значений свойства. Используйте функцию MAPIFreeBuffer , чтобы освободить исходный массив значений свойств, а затем используйте функцию MAPIAllocateMore , чтобы выделить необходимую дополнительную память.

Чтобы реализовать IABLogon::P repareRecips, используйте следующую процедуру:

  1. Проверьте наличие записей в параметре lpPropTagArray . Если массив значений свойства пуст, никаких действий выполнять не нужно. Возвращает значение успешного выполнения.

  2. Обработайте каждого получателя в параметре lpRecipList . Для каждого получателя в списке есть один член структуры ADRENTRY . Игнорируйте следующие типы получателей:

    • Получатели без идентификатора записи в члене rgPropVals своей структуры ADRENTRY (то есть неразрешенные получатели).

    • Получатели с идентификатором записи, который не принадлежит поставщику. Эти получатели будут переданы другому поставщику адресной книги.

  3. Откройте получатель и получите свойства, которые уже заданы для получателя.

  4. Объедините массив значений свойств, указанный в lpRecipList , с массивом свойств, возвращенным из GetProps. Если одно и то же свойство встречается в обоих массивах свойств, используйте значение из lpRecipList.

  5. Если массив значений свойств lpRecipList достаточно велик для хранения всех необходимых свойств, просто замените его объединенным массивом. Если массив значений свойств lpRecipList недостаточно велик, замените его новым выделенным массивом. Убедитесь, что новый массив имеет обновленное значение в каждом из своих элементов cValues .

  6. Если вы не распознаете одно или несколько свойств в параметре lpPropTagArray , присвойте типу свойства в структуре ADRENTRY получателя значение PT_ERROR, а значение свойства — MAPI_E_NOT_FOUND или другому значению, которое дает более конкретную причину недоступности свойства. Сведения о PT_ERROR см. в разделе Типы свойств.

Примечание.

Никогда не перераспределите структуру ADRLIST , передаваемую в IABLogon::P repareRecips, или не изменяйте количество записей.

См. также