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 см. в разделе Об ограничениях.