SPropertyRestriction
適用対象: Outlook 2013 | Outlook 2016
定数とプロパティの値の照合に使用されるプロパティ制限について説明します。
プロパティ | 値 |
---|---|
ヘッダー ファイル: |
Mapidefs.h |
typedef struct _SPropertyRestriction
{
ULONG relop;
ULONG ulPropTag;
LPSPropValue lpProp;
} SPropertyRestriction;
メンバー
relop
検索で使用される関係演算子。 使用可能な値は次のとおりです。
RELOP_GE: 比較は、より大きいか等しい最初の値に基づいて行われます。
RELOP_GT: 比較は、より大きな最初の値に基づいて行われます。
RELOP_LE: 比較は、より小さいか等しい最初の値に基づいて行われます。
RELOP_LT: 比較は、より小さい最初の値に基づいて行われます。
RELOP_NE: 比較は、等しくない値に基づいて行われます。
RELOP_RE: LIKE (正規表現) 値に基づいて比較が行われます。
RELOP_EQ: 比較は、等しい値に基づいて行われます。
ulPropTag
比較するプロパティを識別するプロパティ タグ。
lpProp
比較で使用される定数値を含む SPropValue 構造体へのポインター。
注釈
SPropertyRestriction 構造体には、2 つのプロパティ タグがあります。 1 つは ulPropTag メンバー内にあり、もう 1 つは lpProp が指す SPropValue 構造体の ulPropTag メンバーにあります。 MAPI には、プロパティ識別子フィールドとプロパティ型フィールドの両方が必要です。 SPropertyRestriction の ulPropTag は一致するプロパティであり、SPropertyRestriction の lpProp ポインターは、sPropValue の ulPropTag の型に対して lpProp 共用体のメンバー値がどのように解釈されるかを示します。 2 つのプロパティの種類が一致する必要があります。それ以外の場合は、IMAPITable::Restrict または IMAPITable::FindRow の呼び出しで制限が使用されると、エラー値MAPI_E_TOO_COMPLEXが返されます。
比較順序は (プロパティ値) (関係演算子) (定数値) です。
IMAPITable::Restrict または IMAPITable::FindRow にプロパティ制限が渡され、ターゲット プロパティが存在しない場合、制限の結果は未定義になります。 プロパティ制限を EXIST 制限と結合する AND 制限を作成することで、呼び出し元は正確な結果を保証できます。 SExistRestriction 構造体を使用して EXIST 制限を定義し、SAndRestriction 構造体を使用して AND 制限を定義します。
Exchange Server 2019 の特定のケースでは、サーバーで実行される比較は、存在しないプロパティが存在するかのように扱われ、可能な最小限のデータ型の値よりも小さい値を持つような動作を示します。 言い換えると、MAPI オブジェクトにPR_SENSITIVITYプロパティがなく、構造体で SPropertyRestriction{RELOP_LT, PR_SENSITIVITY, {PR_SENSITIVITY, 0, {.l = INT_MIN}}
テストされている場合、比較では "true" が生成されます。 (これは、上記の "is undefined" 仕様と一致します)。
テーブルを実装するサービス プロバイダーでサポートされている場合は、複数値のプロパティ タグをプロパティ制限で使用できます。 サポートされている場合、複数値のプロパティ タグは、単一値のプロパティ タグを使用できる任意の場所で使用できます。
複数値のプロパティ タグは、次のメソッドで使用できます。
重要
2 つのプロパティ タグが一致しない場合の注目すべきケースは、複数値プロパティを制限する場合です。 この場合、次のことが当てはまる必要があります。
SPropertyRestriction の ulPropTag のプロパティ型に、複数値プロパティ型ビット フラグ MV_FLAG (0x1000) が含まれている場合、SPropValue の ulPropTag のプロパティ型は、前者から 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";
>
SPropValue の ulPropTag のプロパティ型に MV_FLAG ビット フラグが含まれている場合、おそらく戻り値はMAPI_E_TOO_COMPLEX。
SPropertyRestriction 構造体の詳細については、「制限について」を参照してください。