SPropertyRestriction
Hace referencia a: Outlook 2013 | Outlook 2016
Describe una restricción de propiedad que se usa para hacer coincidir una constante con el valor de una propiedad.
Propiedad | Valor |
---|---|
Archivo de encabezado: |
Mapidefs.h |
typedef struct _SPropertyRestriction
{
ULONG relop;
ULONG ulPropTag;
LPSPropValue lpProp;
} SPropertyRestriction;
Members
relop
Operador relacional que se usará en la búsqueda. Los valores posibles son los siguientes:
RELOP_GE: la comparación se realiza en función de un primer valor mayor o igual.
RELOP_GT: la comparación se realiza en función de un primer valor mayor.
RELOP_LE: la comparación se realiza en función de un primer valor menor o igual.
RELOP_LT: la comparación se realiza en función de un primer valor menor.
RELOP_NE: la comparación se realiza en función de valores desiguales.
RELOP_RE: la comparación se realiza en función de los valores LIKE (expresión regular).
RELOP_EQ: la comparación se realiza en función de valores iguales.
ulPropTag
Etiqueta de propiedad que identifica la propiedad que se va a comparar.
lpProp
Puntero a una estructura SPropValue que contiene el valor constante que se usará en la comparación.
Comentarios
Hay dos etiquetas de propiedad en una estructura SPropertyRestriction . Uno está en el miembro ulPropTag y el otro está en el miembro ulPropTag de la estructura SPropValue a la que apunta lpProp. MAPI requiere tanto el campo de identificador de propiedad como el campo de tipo de propiedad. El ulPropTag de SPropertyRestriction es la propiedad que se va a coincidir y el puntero lpProp de SPropertyRestriction al tipo del ulPropTagde SPropValue indica cómo se interpreta el valor de los miembros de la unión lpProp . Los dos tipos de propiedad deben coincidir o, de lo contrario, el valor de error MAPI_E_TOO_COMPLEX se devuelve cuando se usa la restricción en una llamada a IMAPITable::Restrict o IMAPITable::FindRow.
El orden de comparación es (valor de propiedad) (operador relacional) (valor constante).
Cuando se pasa una restricción de propiedad a IMAPITable::Restrict o IMAPITable::FindRow y la propiedad de destino no existe, los resultados de la restricción no están definidos. Al crear una restricción AND que une la restricción de propiedad con una restricción EXIST , se puede garantizar a un llamador resultados precisos. Use una estructura SExistRestriction para definir la restricción EXIST y una estructura SAndRestriction para definir la restricción AND .
En el caso específico de Exchange Server 2019, las comparaciones que se realizan en el servidor muestran un comportamiento de modo que las propiedades ausentes se tratan como si estuvieran presentes y tuvieran un valor menor que el valor mínimo posible del tipo de datos. En otras palabras, si un objeto MAPI que carece, por ejemplo, de una propiedad PR_SENSITIVITY y que se está probando con una SPropertyRestriction{RELOP_LT, PR_SENSITIVITY, {PR_SENSITIVITY, 0, {.l = INT_MIN}}
estructura, la comparación produce "true". (Esto es coherente con la especificación "is undefined" anterior).
Las etiquetas de propiedad con varios valores se pueden usar en las restricciones de propiedad si el proveedor de servicios que implementa la tabla las admite. Si se admite, las etiquetas de propiedad con varios valores se pueden usar en cualquier lugar donde se puedan usar etiquetas de propiedad de un solo valor.
Las etiquetas de propiedad con varios valores se pueden usar en los métodos siguientes:
Importante
Un caso notable cuando las dos etiquetas de propiedad no coinciden es si se restringe en una propiedad de varios valores. En este caso, debe ser true lo siguiente.
Si el tipo de propiedad del ulPropTag de SPropertyRestriction contiene la marca de bits de tipo de propiedad multivalor MV_FLAG (0x1000), el tipo de propiedad del ulPropTag de SPropValue debe coincidir con el primero menos la marca de bits MV_FLAG, es decir, su inversa.
> Por ejemplo, para restringir el uso de una propiedad de cadena personalizada de varios valores, como una categoría con una etiqueta de propiedad para la propiedad 0x8012101f, es decir, PROP_TAG(MV_FLAG|PT_UNICODE, 0x8012)), la SPropertyRestriction correspondiente aparecería de la siguiente manera.
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";
> Tenga en cuenta que si el tipo de propiedad del ulPropTag de SPropValue contiene la marca de bits MV_FLAG, es probable que la devolución sea MAPI_E_TOO_COMPLEX.
Para obtener más información sobre la estructura SPropertyRestriction , vea Acerca de las restricciones.