Compartilhar via


SPropertyRestriction

Aplica-se a: Outlook 2013 | Outlook 2016

Descreve uma restrição de propriedade usada para corresponder a uma constante com o valor de uma propriedade.

Propriedade Valor
Arquivo de cabeçalho:
Mapidefs.h
typedef struct _SPropertyRestriction
{
  ULONG relop;
  ULONG ulPropTag;
  LPSPropValue lpProp;
} SPropertyRestriction;

Members

relop

Operador relacional que será usado na pesquisa. Os valores possíveis são os seguintes:

  • RELOP_GE: a comparação é feita com base em um primeiro valor maior ou igual.

  • RELOP_GT: a comparação é feita com base em um primeiro valor maior.

  • RELOP_LE: a comparação é feita com base em um primeiro valor menor ou igual.

  • RELOP_LT: a comparação é feita com base em um primeiro valor menor.

  • RELOP_NE: a comparação é feita com base em valores desiguais.

  • RELOP_RE: a comparação é feita com base em valores LIKE (expressão regular).

  • RELOP_EQ: a comparação é feita com base em valores iguais.

Ulproptag

Marca de propriedade que identifica a propriedade a ser comparada.

lpProp

Ponteiro para uma estrutura SPropValue que contém o valor constante que será usado na comparação.

Comentários

Há duas marcas de propriedade em uma estrutura SPropertyRestriction . Um está no membro ulPropTag e o outro está no membro ulPropTag da estrutura SPropValue apontada por lpProp. O MAPI requer o campo identificador de propriedade e o campo tipo de propriedade. O ulPropTag no SPropertyRestriction é a propriedade a ser correspondida e o ponteiro lpProp do SPropertyRestriction para o tipo ulPropTag do SPropValue indica como o valor dos membros da união lpProp é interpretado. Os dois tipos de propriedade devem corresponder ou então o valor de erro MAPI_E_TOO_COMPLEX é retornado quando a restrição é usada em uma chamada para IMAPITable::Restrict ou IMAPITable::FindRow.

A ordem de comparação é (valor da propriedade) (operador relacional) (valor constante).

Quando uma restrição de propriedade é passada para IMAPITable::Restrict ou IMAPITable::FindRow e a propriedade de destino não existe, os resultados da restrição são indefinidos. Ao criar uma restrição AND que une a restrição de propriedade a uma restrição EXIST , um chamador pode ter resultados precisos garantidos. Use uma estrutura SExistRestriction para definir a restrição EXIST e uma estrutura SAndRestriction para definir a restrição AND .

No caso específico de Exchange Server 2019, as comparações realizadas no servidor exibem um comportamento de modo que propriedades ausentes sejam tratadas como se estivessem presentes e tivessem um valor menor que o valor mínimo possível de tipo de dados. Em outras palavras, se um objeto MAPI que não tem uma propriedade PR_SENSITIVITY e que está sendo testado com uma SPropertyRestriction{RELOP_LT, PR_SENSITIVITY, {PR_SENSITIVITY, 0, {.l = INT_MIN}} estrutura, a comparação produzirá "true". (Isso é consistente com a especificação "está indefinida" acima.)

Marcas de propriedade com vários valores poderão ser usadas em restrições de propriedade se o provedor de serviços que implementa a tabela dá suporte a elas. Se houver suporte, marcas de propriedade de vários valores poderão ser usadas em qualquer lugar em que marcas de propriedade de valor único possam ser usadas.

Marcas de propriedade com vários valores podem ser usadas nos seguintes métodos:

Importante

Um caso notável quando as duas marcas de propriedade não corresponderão é se restringir em uma propriedade de vários valores. Nesse caso, o seguinte deve ser verdadeiro. Se o tipo de propriedade do ulPropTag de SPropertyRestriction contiver o sinalizador bit tipo propriedade multi-valor MV_FLAG (0x1000), o tipo de propriedade do ulPropTag de SPropValue deverá corresponder ao primeiro menos o sinalizador de bit MV_FLAG, ou seja, seu inverso. > Por exemplo, para restringir o uso de uma propriedade de cadeia de caracteres personalizada de vários valores, como uma categoria com uma marca de propriedade para a propriedade 0x8012101f, ou seja, PROP_TAG(MV_FLAG|PT_UNICODE, 0x8012)), o SPropertyRestriction correspondente aparecerá da seguinte maneira. 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"; > Observe que, se o tipo de propriedade do ulPropTag de SPropValue contiver o sinalizador de bit MV_FLAG, o retorno provável será MAPI_E_TOO_COMPLEX.

Para obter mais informações sobre a estrutura SPropertyRestriction , consulte Sobre restrições.

Confira também