Сохранение свойств 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 перезаписывает предыдущее сохранение и делает изменения клиента постоянными.