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


SPropertyRestriction

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

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

Свойство Значение
Файл заголовка:
Mapidefs.h
typedef struct _SPropertyRestriction
{
  ULONG relop;
  ULONG ulPropTag;
  LPSPropValue lpProp;
} SPropertyRestriction;

Members

relop

Реляционный оператор, который будет использоваться в поиске. Возможны следующие значения:

  • RELOP_GE. Сравнение производится на основе большого или равного первого значения.

  • RELOP_GT. Сравнение производится на основе большего первого значения.

  • RELOP_LE. Сравнение производится на основе меньшего или равного первого значения.

  • RELOP_LT. Сравнение производится на основе меньшего первого значения.

  • RELOP_NE. Сравнение производится на основе неравных значений.

  • RELOP_RE. Сравнение производится на основе значений LIKE (регулярного выражения).

  • RELOP_EQ. Сравнение производится на основе равных значений.

ulPropTag

Тег свойства, определяющий сравниваемое свойство.

lpProp

Указатель на структуру SPropValue , содержащую константное значение, которое будет использоваться при сравнении.

Замечания

В структуре SPropertyRestriction есть два тега свойств. Один из них находится в элементе ulPropTag, а другой — в элементе ulPropTag структуры SPropValue, на которую указывает lpProp. MAPI требует как поля идентификатора свойства, так и поля типа свойства. UlPropTag в SPropertyRestriction — это свойство, которое должно быть сопоставлено, а указатель lpPropобъекта SProptyRestriction на тип ulPropTagSPropValue указывает, как интерпретируются значения членов объединения lpProp. Два типа свойств должны совпадать, иначе при использовании ограничения в вызове IMAPITable::Restrict или IMAPITable::FindRow возвращается значение ошибки MAPI_E_TOO_COMPLEX.

Порядок сравнения — (значение свойства) (реляционный оператор) (постоянное значение).

Если ограничение свойства передается в IMAPITable::Restrict или IMAPITable::FindRow , а целевое свойство не существует, результаты ограничения не определены. Создав ограничение AND , которое объединяет ограничение свойства с ограничением EXIST , вызывающий объект может гарантировать точные результаты. Используйте структуру SExistRestriction для определения ограничения EXIST и структуру SAndRestriction для определения ограничения AND .

В конкретном случае Exchange Server 2019 г. сравнения, выполняемые на сервере, демонстрируют такое поведение, что отсутствующие свойства обрабатываются так, как если бы они присутствовали и имели значение, меньшее минимально возможного значения типа данных. Иными словами, если объект MAPI, у которого отсутствует, например, свойство PR_SENSITIVITY и который проверяется со структурой SPropertyRestriction{RELOP_LT, PR_SENSITIVITY, {PR_SENSITIVITY, 0, {.l = INT_MIN}} , сравнение возвращает значение true. (Это согласуется со спецификацией "is undefined" выше.)

Теги свойств с несколькими значениями можно использовать в ограничениях свойств, если поставщик услуг, реализующий таблицу, поддерживает их. Если они поддерживаются, теги свойств с несколькими значениями можно использовать везде, где можно использовать однозначные теги свойств.

Теги свойств с несколькими значениями можно использовать в следующих методах:

Важно!

Примечающим случаем, когда два тега свойства не будут совпадать, является ограничение для свойства с несколькими значениями. В этом случае должно быть верно следующее. Если тип свойства ulPropTagобъекта SPropertyRestriction содержит флаг бита свойства с несколькими значениями MV_FLAG (0x1000), то тип свойства ulPropTagSPropValue должен соответствовать первому за вычетом MV_FLAG битового флага, то есть обратного. > Например, чтобы ограничить использование многозначного пользовательского строкового свойства, например категории с тегом свойства для свойства 0x8012101f, то есть PROP_TAG(MV_FLAG|PT_UNICODE, 0x8012)), соответствующее значение SPropertyRestriction будет выглядеть следующим образом. SPropertyRestriction.ulPropTag = 0x8012101f; // attempt to restrict a MultiValue property SPropertyRestriction.lpProp->ulPropTag = 0x8012001f; // the lpszW member of the Value property is valid > SPropertyRestriction.lpProp.Value->lpszW = L"My Category"; > Обратите внимание, что если тип свойства ulPropTagSPropValue содержит флаг бита MV_FLAG, вероятно, возвращается MAPI_E_TOO_COMPLEX.

Дополнительные сведения о структуре SPropertyRestriction см. в разделе Об ограничениях.

См. также