Benannte Eigenschaften MAPI
Gilt für: Outlook 2013 | Outlook 2016
MAPI bietet eine Möglichkeit zum Zuweisen von Namen zu Eigenschaften, zum Zuordnen dieser Namen zu eindeutigen Bezeichnern und zum Persistentmachen dieser Zuordnung. Die Zuordnung persistenter Namen zu Bezeichnern stellt sicher, dass Eigenschaftsnamen sitzungsübergreifend gültig bleiben.
Um eine benannte Eigenschaft zu definieren, erstellt ein Client oder Dienstanbieter einen Namen und speichert ihn in einer MAPINAMEID-Struktur . Da Namen aus einem global eindeutigen 128-Bit-Bezeichner (GUID) und entweder einer Unicode-Zeichenfolge oder einem numerischen 32-Bit-Wert bestehen, können Ersteller benannter Eigenschaften aussagekräftige Namen erstellen, ohne Angst vor Duplizierung zu haben. Namen sind eindeutig und können ohne Berücksichtigung des Werts ihrer Bezeichner verwendet werden.
Zur Unterstützung benannter Eigenschaften implementiert ein Dienstanbieter zwei Methoden – IMAPIProp::GetIDsFromNames und IMAPIProp::GetNamesFromIDs –, um zwischen Namen und Bezeichnern zu übersetzen und seinen IMAPIProp::GetPropsIMAPIProp::SetProps-Methoden das Abrufen und Ändern von Eigenschaften mit Bezeichnern im benannten Eigenschaftenbereich zu ermöglichen. Der Bereich für benannte Eigenschaftenbezeichner liegt zwischen 0x8000 und 0xFFFE.
Jedes Objekt, das die IMAPIProp-Schnittstelle implementiert, kann benannte Eigenschaften unterstützen. Adressbuchanbieter, die das Kopieren von Einträgen von anderen Anbietern in ihre Container zulassen, und Nachrichtenspeicheranbieter, die zum Erstellen beliebiger Nachrichtentypen verwendet werden können, sind für diese Unterstützung erforderlich. Es ist eine Option für alle anderen Dienstanbieter. Anbieter, die benannte Eigenschaften nicht unterstützen, geben MAPI_E_NO_SUPPORT von den Methoden GetIDsFromNames und GetNamesFromIDs zurück und weigern sich, Eigenschaften mit Bezeichnern von 0x8000 oder höher festzulegen, was MAPI_E_UNEXPECTED im SPropProblemarray zurückgibt.
Das Erstellen von Namen für Eigenschaften ist eine Möglichkeit für Clients, neue Eigenschaften für vorhandene oder benutzerdefinierte Nachrichtenklassen zu definieren. Dienstanbieter können benannte Eigenschaften verwenden, um eindeutige Features ihrer Messagingsysteme verfügbar zu machen. Eine weitere Verwendung für benannte Eigenschaften besteht darin, eine alternative Methode zum Verweisen auf Eigenschaften mit Bezeichnern unterhalb 0x8000 bereitzustellen.
Beispielsweise könnte ein Client Code verwenden, der dem folgenden Code ähnelt, um die Namen für alle benannten Eigenschaften eines Objekts abzurufen:
LPSPropTagArray FAR * lppPropTags = NULL;
LPGUID lpPropSetGuid = NULL;
ULONG FAR * lpcPropNames;
LPMAPINAMEID FAR * FAR * lpppPropNames;
lpMAPIProp->GetNamesFromIDs (lppPropTags,
lpPropSetGuid,
0,
lpcPropNames,
lpppPropNames);
Um alle Namen aus dem PS_PUBLIC_STRINGS Eigenschaftensatz anzufordern, ersetzt ein Client den NULL-Wert im Eigenschaftensatzparameter wie folgt durch PS_PUBLIC_STRINGS:
LPSPropTagArray FAR * lppPropTags = NULL;
LPGUID lpPropSetGuid = &PS_PUBLIC_STRINGS;
ULONG FAR * lpcPropNames;
LPMAPINAMEID FAR * FAR * lpppPropNames;
lpMAPIProp->GetNamesFromIDs (lppPropTags,
lpPropSetGuid,
0,
lpcPropNames,
lpppPropNames);