IXPLogon::AddressTypes
Область применения: Outlook 2013 | Outlook 2016
Возвращает типы получателей, обрабатываемых поставщиком транспорта.
HRESULT AddressTypes(
ULONG FAR * lpulFlags,
ULONG FAR * lpcAdrType,
LPSTR FAR * FAR * lpppszAdrTypeArray,
ULONG FAR * lpcMAPIUID,
LPUID FAR * FAR * lpppUIDArray
);
Параметры
lpulFlags
[out] Битовая маска флагов, управляющая типом возвращаемых строк. Можно задать следующий флаг:
MAPI_UNICODE
Возвращаемые строки имеют формат Юникода. Если флаг MAPI_UNICODE не задан, строки имеют формат ANSI.
lpcAdrType
[out] Указатель на количество записей в массиве, на который указывает параметр lpppszAdrTypeArray .
lpppszAdrTypeArray
[out] Указатель на указатель на массив строк, определяющих типы получателей.
lpcMAPIUID
[out] Указатель на количество записей в массиве, на который указывает параметр lpppUIDArray .
lpppUIDArray
[out] Указатель на указатель на массив указателей на структуры MAPIUID , которые идентифицируют типы получателей.
Возвращаемое значение
S_OK
Поставщик транспорта успешно указал типы получателей, которые он может обрабатывать.
Примечания для исполнителей
Диспетчер очереди MAPI вызывает метод IXPLogon::AddressTypes сразу после возврата поставщика транспорта из вызова метода IXPProvider::TransportLogon , чтобы поставщик транспорта смог указать, какие типы получателей он обрабатывает. Чтобы указать это, поставщик транспорта должен передать обратно в параметре lpppszAdrTypeArray указатель на массив указателей на строки или передать обратно в параметре lpppUIDArray указатель на массив указателей на структуры MAPIUID или передать значения в обоих параметрах.
Эти два массива используются для различных процессов идентификации. MAPI и средство spooooler MAPI используют структуры MAPIUID в массиве lpppUIDArray для идентификации идентификаторов входа получателей, которые непосредственно обрабатываются поставщиком транспорта или системой обмена сообщениями, к которой подключается поставщик транспорта. Ни MAPI, ни диспетчер очереди MAPI не расширяют адреса с помощью идентификаторов записей, содержащихся ни в одной из этих структур MAPIUID ; эти структуры используются только для идентификации типов получателей.
Средство spooler MAPI использует каждую из строк в параметре lpppszAdrTypeArray для теста сравнения, когда решает, какой поставщик транспорта должен обрабатывать получателей исходящего сообщения. Если свойство PR_ADDRTYPE получателя сообщения (PidTagAddressType) точно соответствует строке, определяющей один из типов адресов сообщений, предоставляемых поставщиком транспорта, поставщик может доставить сообщение получателю.
Если несколько поставщиков транспорта могут обрабатывать один и тот же тип получателя, MAPI выбирает поставщика транспорта на основе порядка приоритета транспорта, указанного в профиле клиентского приложения. Чтобы определить, какой поставщик транспорта следует использовать, диспетчер очереди MAPI сканирует все структуры MAPIUID , заданные поставщиком, в порядке приоритета, а затем все указанные поставщиком значения типов адресов в порядке приоритета. Первый поставщик транспорта, соответствующий конкретному получателю в этом сканировании, получает первую возможность обработать этого получателя. Если этот поставщик не обрабатывает получателя, диспетчер очереди MAPI продолжает проверку, чтобы найти поставщика транспорта для любого получателя, который еще не обработан. Проверка продолжается до тех пор, пока не будут найдены дальнейшие совпадения, после чего создается отчет о недоставке для любого получателя, который не был обработан.
Если поставщик всегда поддерживает определенный набор типов получателей, тип адреса и массивы MAPIUID , переданные поставщиком транспорта, могут быть статическими. Если поставщик транспорта динамически создает эти массивы, он может выделить память с помощью объекта поддержки, который ранее был передан в вызове TransportLogon, хотя в этом нет необходимости.
Память, используемая для типа адреса и массивов MAPIUID , должна оставаться выделенной до последнего вызова метода IXPLogon::TransportLogoff , когда поставщик транспорта может освободить память, если это необходимо. Поставщик транспорта не должен изменять содержимое этих массивов после возврата из вызова TransportLogoff .
Поставщик транспорта, который может обрабатывать получатель любого типа, может возвращать значение NULL в параметре lpppszAdrTypeArray . Поставщики транспорта для систем обмена сообщениями на основе локальной сети, которые используют центральный сервер для доставки исходящих сообщений в различные системы внешних сообщений, обычно делают это. Этот тип поставщика транспорта должен быть установлен последним в порядке приоритета mapI и MAPI spooler поставщиков транспорта в профиле.
Поставщик транспорта, который не поддерживает исходящие сообщения, отправляемые ему в зависимости от типа адреса, должен возвращать одну строку нулевой длины в lpppszAdrTypeArray. Если поставщик транспорта не поддерживает типы получателей, он должен передать значение NULL для структуры MAPIUID и пустую строку для типа адреса. Поставщики транспорта этого типа чаще всего используются для установки препроцессора сообщений.