Разрешения для объектов и свойств MAPI
Область применения: Outlook 2013 | Outlook 2016
Разрешение на доступ или набор разрешенных операций может быть характеристикой объектов MAPI и отдельных свойств, поддерживаемых этими объектами. Доступ к объекту определяется родительским объектом объекта. Для сообщения его папка определяет разрешения на доступ. Для пользователя обмена сообщениями или списка рассылки это определение принимает контейнер адресной книги. Если объект, например сообщение, находится в двух папках, разрешения для двух копий объекта могут быть разными.
Клиенты, использующие эти объекты, могут запрашивать самый высокий уровень доступа, разрешенный для объекта, установив флаг MAPI_BEST_ACCESS при вызове IMAPISession::OpenEntry . В зависимости от поставщика услуг, реализующего объект, клиенту может быть предоставлен необходимый уровень доступа. Клиенты могут определить уровень доступа, предоставленный им, вызвав метод GetProps объекта для получения свойства PR_ACCESS (PidTagAccess). Однако так как поставщик услуг должен динамически создавать значение для этого свойства, рекомендуется, чтобы клиенты извлекли его только при необходимости.
Чтобы определить, допускает ли изменение контейнер, например папка, контейнер адресной книги или список рассылки, вызовите его метод GetProps для получения свойства PR_ACCESS_LEVEL (PidTagAccessLevel). Доступ на уровне контейнера влияет на клиентов с точки зрения отображения пользовательских интерфейсов. Это также влияет на реализацию объектов в контейнерах с точки зрения отображения пользовательского интерфейса и их общей реализации.
Доступ к конкретному свойству определяется схемой свойства, настроенной MAPI для объекта, которому принадлежит свойство. Схемы свойств указывают набор обязательных и необязательных свойств для объекта и их разрешения на доступ. В отличие от доступа к объекту, который определяется родительским объектом объекта, доступ к свойствам является глобальным. Каждый объект, независимо от требований к доступу родительского объекта, имеет одинаковые разрешения для свойства, определенные схемой.
Если свойство доступно только для чтения, оно всегда будет доступно при вызове GetProps или OpenProperty . Однако в зависимости от реализации объекта, поддерживающего свойство, существует два возможных результата для метода SetProps для изменения свойства и метода DeleteProps для его удаления:
Сбой и возврат MAPI_E_NO_ACCESS
Успешно, не предприняв никаких действий
Доступ к свойствам и объектам также можно получить или задать с помощью интерфейса IPropData , наследуемого от интерфейса IMAPIProp . MAPI предоставляет реализацию IPropData , основанную на данных в памяти. Поставщики служб могут использовать IPropData для реализации IMAPIPropProp в определенных случаях, например для объекта состояния или если они используют базу данных, в которую не входят встроенные транзакции. IPropData работает исключительно в памяти, что делает ненужным блокировку и разблокировку данных.