MAPI-EigenschaftenMAPI String Properties

Betrifft: OutlookApplies to: Outlook

MAPI bietet drei verschiedene Eigenschaftstypen um Zeichenfolgeneigenschaften beschrieben:MAPI provides three different property types to describe string properties:

PT_TSTRINGPT_TSTRING

PT_STRING8PT_STRING8

PT_UNICODEPT_UNICODE

Zeichenfolgeneigenschaften werden am häufigsten als PT_TSTRING definiert.String properties are most commonly defined as PT_TSTRING. Der Eigenschaftentyp PT_TSTRING kompiliert bedingt auf eine der anderen Zeichenfolge Eigenschaftentypen, je nachdem, je nachdem, ob das Unicode-Makro definiert wurde.The PT_TSTRING property type conditionally compiles to one of the other string property types, depending depending on whether the UNICODE macro has been defined. PT_STRING8 beschreibt 8-Bit-Null endende Zeichenfolgen in ANSI-Format. PT_UNICODE beschreibt Doppelbyte-Null endende Zeichenfolgen.PT_STRING8 describes 8-bit null-terminated character strings in the ANSI format; PT_UNICODE describes double-byte null-terminated character strings.

Zur Unterstützung von Unicode-Zeichenfolgen können entweder ein Client oder einem-Dienstanbieter oder sowohl Client und Anbieter auswählen.Either a client or a service provider, or both client and provider can choose to support Unicode character strings. Es ist nicht erforderlich.It is not required. Ein Client, der nur für Zeichenfolgen PT_STRING8 unterstützt, kann mit einem Anbieter ausgeführt werden, der Unicode und umgekehrt unterstützt.A client that supports only PT_STRING8 strings can operate with a provider that supports Unicode and vice versa. Um diese Interoperabilität zu aktivieren, übergeben Sie Clients und Dienstanbieter ein Kennzeichen, die Option MAPI_UNICODE, um anzugeben, dass Unicode in Methoden unterstützt wird, die den Austausch von Zeichenfolgen betreffen.To enable this interoperability, clients and service providers pass a flag, the MAPI_UNICODE flag, to indicate that Unicode is supported in methods that involve the exchange of character strings.

Nehmen wir beispielsweise bei einem Client unterstützt Unicode und den Anzeigenamen eines Ordners abrufen muss.For example, suppose a client supports Unicode and needs to retrieve the display name of a folder. Alle Eigenschaften für den Client PT_TSTRING werden zur Eingabe von PT_UNICODE kompiliert.All of the client's PT_TSTRING properties are compiled to type PT_UNICODE. Wenn der Client den Ordner IMAPIProp::GetProps -Methode zum Abrufen von dessen PR_DISPLAY_NAME (PidTagDisplayName)-Eigenschaft aufruft, übergibt sie die Option MAPI_UNICODE um anzufordern, dass die Zeichenfolge des Anzeigenamens in das Unicode-Format zurückgegeben werden soll .When the client calls the folder's IMAPIProp::GetProps method to retrieve its PR_DISPLAY_NAME (PidTagDisplayName) property, it passes the MAPI_UNICODE flag to request that the display name string be returned in the Unicode format.

Clients und -Dienstanbieter müssen berücksichtigen, die Angabe eines Zeichensatzes in einem Methodenaufruf wird nur eine Anforderung.Clients and service providers need to be aware that specifying a character set in a method call is only a request. Unterstützung einer oder beide Zeichensätze ist die Implementierung des Objekts.Supporting one or both character sets is up to the implementer of the object. Dienstanbieter werden jedoch empfohlen, beide Zeichensätze, da es ermöglicht es ihnen, mehr Verbreitung als Anbieter zu erzielen, die nur einen Satz zu unterstützen.However, service providers are encouraged to support both character sets because it allows them to achieve more widespread distribution than providers that support only one set.

Zeichenfolgeneigenschaften anwachsen können sehr groß sein, da binäre Eigenschaften können – Geben Sie PT_BINARY Eigenschaften, die die-Eigenschaft verwenden.String properties can grow to be quite large as can binary properties — properties that use the property type PT_BINARY. Zum Vereinfachen der Arbeit mit großen Eigenschaften kann MAPI-Dienstanbieter Festlegen dieser Eigenschaften zum Erzwingen von größenbeschränkungen für Nachrichten.To ease working with large properties, MAPI allows service providers setting these properties to enforce size limits. Diese Grenzwerte können variieren je nach:These limits can vary, depending on:

  • Gibt an, ob die Eigenschaften werden gelesenen oder geschriebenen.Whether the properties are being read or written.

  • Wie der Dienstanbieter die IMAPIProp Methoden implementiert.How the service provider implements the IMAPIProp methods.

  • Common Language Runtime Aspekte wie Speicherkapazität.Runtime considerations, such as memory constraints.

  • Zeichensatz Übersetzungsfehler.Character set translation issues.

Größenbeschränkungen für Nachrichten auch auf Zeichenfolge platziert werden können und binäre Eigenschaften, wenn sie in der Spalte verwendet werden Festlegen einer Tabelle, da es in einigen Fällen nicht möglich, alle große den Wert einer Eigenschaft sichtbar zu machen ist.Size limits can also be placed on string and binary properties when they are used in the column set of a table because it is sometimes impossible to make all of a large property's value visible. Viele Dienstanbieter Abschneiden großen Zeichenfolge oder binäre Eigenschaften, die in den Tabellen auf 255 Byte verwendet werden.Many service providers truncate large string or binary properties that are used in tables to 255 bytes.

Wenn ein Client ein Objekt GetProps oder SetProps -Methode zum Arbeiten mit einer großen Zeichenfolge oder eine binäre Eigenschaft ruft und der Aufruf, aufgrund der Eigenschaftsgröße fehlschlägt, gibt die Methode den Fehlerwert MAPI_E_NOT_ENOUGH_MEMORY zurück.When a client calls an object's GetProps or SetProps method to work with a large string or binary property and the call fails because of the property size, the method returns the error value MAPI_E_NOT_ENOUGH_MEMORY. Wenn es GetProps , die für eine bestimmte Eigenschaft ein Fehler aufgetreten ist ist, kann der Client wiederhergestellt werden durch Aufrufen von IMAPIProp::OpenProperty und IStream für den Zugriff durch Angeben von IID_IStream als Schnittstellenbezeichner anfordern.If it is GetProps that is failing for a specific property, the client can recover by calling IMAPIProp::OpenProperty and requesting the IStream for access by specifying IID_IStream as the interface identifier. OpenPropertyverwenden, kann der Client abrufen eine große Eigenschaft über die eine Schnittstelle wie IStream , der besser für das Arbeiten mit großen Eigenschaften geeignet ist.Using OpenProperty, the client can retrieve a large property using an interface such as IStream that is better suited for working with large properties.

Siehe auchSee also

Übersicht über die MAPI-EigenschaftMAPI Property Overview