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


Сохранение свойств MAPI

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

Многие объекты поддерживают модель транзакций обработки, при которой изменения свойств не становятся постоянными, пока они не будут зафиксированы позже. В то время как изменения свойств обрабатываются методами IMAPIProp::SetProps и IMAPIProp::D eleteProps , шаг фиксации обрабатывается IMAPIProp::SaveChanges. Только после успешного вызова SaveChanges можно получить доступ к последней версии свойств объекта.

Когда SaveChanges возвращает значение ошибки MAPI_E_OBJECT_CHANGED, это предупреждение о том, что другой клиент одновременно фиксирует изменения в объекте . В зависимости от поставщика, реализующего объект, несколько клиентов могут успешно открыть объект, вызвав его метод OpenEntry с MAPI_MODIFY флагом, предоставляя им доступ на чтение и запись. Объект, возвращаемый таким вызовом OpenEntry, является snapshot данных хранилища. Каждая последующая попытка изменить эти данные может перезаписать предыдущую попытку.

После получения MAPI_E_OBJECT_CHANGED от SaveChanges клиент имеет возможность:

  • Создайте копию объекта для хранения изменений.

  • Выполните еще один вызов SaveChanges, указав FORCE_SAVE.

Вызов SaveChanges с флагом FORCE_SAVE перезаписывает предыдущее сохранение и делает изменения клиента постоянными.

См. также

Обзор свойств MAPI