Implementierung von Statusobjekten
Gilt für: Outlook 2013 | Outlook 2016
Alle Dienstanbieter müssen ein status -Objekt implementieren und daraus Eigenschaften für die Sitzungstabelle status. Sie können eine oder mehrere Zeilen in die status Tabelle einschließen, je nachdem, wie viele Ressourcen Sie steuern. Ein Transportanbieter sollte beispielsweise eine Zeile in der status Tabelle für jede von ihm verwaltete Nachrichtenwarteschlange erstellen. Wenn Änderungen auftreten, muss die entsprechende status Tabellenzeile aktualisiert werden. Statusobjekte werden implementiert, um Zugriff auf die in der status Tabelle enthaltenen Informationen und auf zusätzliche Informationen zu ermöglichen, die nicht in der Tabelle enthalten sind.
So implementieren Sie ein status-Objekt
Implementieren Sie die OpenStatusEntry-Methode Ihres Anmeldeobjekts. Wenn Clients Ihr status -Objekt öffnen möchten, rufen sie IMAPISession::OpenEntry auf. MAPI erfüllt die offene Anforderung, indem sie die OpenStatusEntry-Methode Ihres Anbieters aufruft, wodurch ihr Anbieter sein status -Objekt öffnet und einen Zeiger auf seine IMAPIStatus-Implementierung an den Client zurückgibt. Führen Sie in Ihrer OpenStatusEntry-Implementierung die folgenden Schritte aus:
Führen Sie die folgenden Aufgaben aus, wenn Ihr Anmeldeobjekt noch kein status-Objekt erstellt hat:
Rufen Sie die IMAPISupport::OpenProfileSection-Methode des Supportobjekts auf, um auf den Profilabschnitt Ihres Anbieters zuzugreifen.
Erstellen Sie ein neues status-Objekt.
Speichern Sie einen Verweis auf den Profilabschnitt im status-Objekt Ihres Anbieters, und rufen Sie die IUnknown::AddRef-Methode des Profilabschnitts auf, um die Verweisanzahl zu erhöhen.
Speichern Sie einen Verweis auf das Anmeldeobjekt im status-Objekt Ihres Anbieters, und rufen Sie die IUnknown::AddRef-Methode des Anmeldeobjekts auf, um die Verweisanzahl zu erhöhen.
Speichern Sie einen Verweis auf das status-Objekt im Anmeldeobjekt Ihres Anbieters.
Rufen Sie die IUnknown::AddRef-Methode des status-Objekts auf, um die Verweisanzahl im Anmeldeobjekt zu erhöhen.
Legen Sie die eigenschaft PR_OBJECT_TYPE (PidTagObjectType) des status-Objekts auf MAPI_STATUS fest.
Legen Sie den lppMAPIStatus-Ausgabeparameter so fest, dass er auf das status-Objekt verweist, und geben Sie zurück.
Überprüfen Sie den ulFlags-Eingabeparameter . Wenn sie auf MAPI_MODIFY festgelegt ist und Ihr Anbieter Lese-/Schreibzugriff auf das status -Objekt unterstützt, geben Sie ein beschreibbares Objekt zurück. Wenn Ihr Anbieter jedoch keinen Lese-/Schreibzugriff auf sein status-Objekt unterstützt, schlagen Sie nicht fehl. Gibt ein status-Objekt zurück, das schreibgeschützt ist. Clients, die Lese-/Schreibzugriff status -Objekten erwarten, sollten überprüfen, ob lese-/schreibberechtigungen erteilt wurden, bevor sie versuchen, Änderungen vorzunehmen.
Legen Sie alle erforderlichen status-Objekt- und status Tabelleneigenschaften fest. Die Eigenschaften, die Sie in Ihre status Tabellenzeile einschließen, sollten über Ihr status-Objekt verfügbar sein, mit Ausnahme der von der MAPI berechneten Eigenschaften. Die erforderlichen Eigenschaften sind wie folgt:
PR_DISPLAY_NAME (PidTagDisplayName)
PR_PROVIDER_DLL_NAME (PidTagProviderDllName)
PR_PROVIDER_DISPLAY (PidTagProviderDisplay)
PR_RESOURCE_TYPE (PidTagResourceType)
PR_RESOURCE_METHODS (PidTagResourceMethods)
PR_RESOURCE_FLAGS (PidTagResourceFlags)
PR_STATUS_CODE (PidTagStatusCode)
Implementieren Sie die methoden IMAPIStatus : IMAPIProp , die für Ihren Anbieter geeignet sind. Je nach Anbieter müssen Sie nicht alle vier Methoden in IMAPIStatus implementieren. Jeder Anbieter sollte eine schreibgeschützte Version der Methoden der IMAPIProp:IUnknown-Schnittstelle und der IMAPIStatus::ValidateState-Methode implementieren.
Transportanbieter sollten auch IMAPIStatus::FlushQueues implementieren, und alle Anbieter sollten IMAPIStatus::SettingsDialog unterstützen. Die Unterstützung für IMAPIStatus::ChangePassword ist jedoch optional. Diese Methode muss nur von Dienstanbietern implementiert werden, die Kennwörter benötigen und Benutzern das programmgesteuerte Ändern erlauben möchten. Legen Sie für jede von Ihnen unterstützte Methode das entsprechende Bit in der PR_RESOURCE_METHODS-Eigenschaft fest. Wenn Sie beispielsweise Nur ValidateState und SettingsDialog unterstützen, legen Sie PR_RESOURCE_METHODS auf Folgendes fest:
STATUS_VALIDATE_STATE | STATUS_SETTINGS_DIALOG
Clients sollten den Wert von PR_RESOURCE_METHODS überprüfen, bevor sie versuchen, Ihr status-Objekt aufzurufen. Verarbeiten Sie Aufrufe von nicht unterstützten Methoden, indem Sie MAPI_E_NO_SUPPORT zurückgeben.
Rufen Sie WÄHREND der Anmeldung IMAPISupport::ModifyStatusRow auf, um ihre Zeile oder Zeilen zur status Tabelle hinzuzufügen. Übergeben Sie ein Eigenschaftswertarray, das die Spalteninformationen für die Zeile und 0 für den ulFlags-Parameter enthält. Wenn sich zu einem späteren Zeitpunkt in der Sitzung die status Ihres Anbieters ändert und es erforderlich wird, die Spalteninformationen zu aktualisieren, rufen Sie ModifyStatusRow erneut auf, wobei das STATUSROW_UPDATE Flag festgelegt ist.
Weitere Informationen zu status-Objekten finden Sie unter MAPI-Statusobjekte.