Freigeben über


IXPLogon::StartMessage

Gilt für: Outlook 2013 | Outlook 2016

Initiiert die Übertragung einer eingehenden Nachricht vom Transportanbieter an den MAPI-Spooler.

HRESULT StartMessage(
  ULONG ulFlags,
  LPMESSAGE lpMessage,
  ULONG FAR * lpulMsgRef
);

Parameter

ulFlags

[in] Reserviert. NULL muss sein.

lpMessage

[in] Ein Zeiger auf ein Nachrichtenobjekt (das die eingehende Nachricht darstellt), das über Lese-/Schreibberechtigung verfügt und das vom Transportanbieter verwendet wird, um auf diese Nachricht zuzugreifen und sie zu bearbeiten. Dieses Objekt bleibt gültig bis zu einem Zeitpunkt, nachdem der Transportanbieter vom Aufruf von IXPLogon::StartMessage zurückgegeben wird.

lpulMsgRef

[out] Ein Zeiger auf einen Verweiswert, der der Nachricht zugewiesen ist. Der MAPI-Spooler initialisiert diesen Wert mit 1, bevor er den Zeiger an den Transportanbieter zurückgibt.

Rückgabewert

S_OK

Der Aufruf erfolgreich ausgeführt und der erwartete Wert oder Werte zurückgegeben hat.

Hinweise

Der MAPI-Spooler ruft die IXPLogon::StartMessage-Methode auf, um die Übertragung einer eingehenden Nachricht vom Transportanbieter an den MAPI-Spooler zu initiieren. Bevor der Transportanbieter mit der Verwendung der Nachricht beginnt, auf die lpMessage verweist, sollte er einen Nachrichtenverweis im lpulMsgRef-Parameter speichern, der möglicherweise durch einen Aufruf der IXPLogon::TransportNotify-Methode verwendet werden kann.

Während eines StartMessage-Aufrufs verarbeitet der MAPI-Spooler Methoden für Objekte, die während der Übertragung der Nachricht geöffnet wurden, und verarbeitet auch alle Anlagen. Diese Verarbeitung kann sehr lange dauern. Transportanbieter können während dieser Verarbeitung häufig die IMAPISupport::SpoolerYield-Rückruffunktion für den MAPI-Spooler aufrufen, um CPU-Zeit für andere Systemaufgaben freizugeben.

Alle Empfänger in der Empfängertabelle, die der Transportanbieter für die Nachricht erstellt, müssen alle erforderlichen Adressierungseigenschaften enthalten. Bei Bedarf kann der Anbieter einen benutzerdefinierten Empfänger erstellen, der einen bestimmten Empfänger darstellt. Wenn der Anbieter jedoch einen Empfängereintrag erstellen kann, der weitere Informationen enthält, wird dies bevorzugt. Wenn ein Transportanbieter beispielsweise über genügend Informationen zum Empfängerformat eines Adressbuchanbieters verfügt, um einen gültigen Eintragsbezeichner für einen Empfänger für dieses Format erstellen zu können, sollte der Eintragsbezeichner erstellt werden.

Wenn nicht übertragbare Eigenschaften empfangen werden, sollte der Transportanbieter diese nicht in der neuen Nachricht speichern. Der Transportanbieter sollte jedoch alle übertragbaren empfangenen Eigenschaften in der neuen Nachricht speichern.

Wenn es sich bei der eingehenden Nachricht um einen Zustellungsbericht oder einen Bericht über nicht zugestellte Elemente handelt und der Transportanbieter die IMAPISupport::StatusRecips-Methode nicht verwenden kann, um den Bericht aus der ursprünglichen Nachricht zu generieren, sollte der Anbieter die Nachricht selbst mit den entsprechenden Eigenschaften auffüllen. Der Transportanbieter kann aber die Eigenschaft PR_ENTRYID (PidTagEntryId) der Nachricht nicht festlegen.

Um die eingehende Nachricht nach der Verarbeitung im entsprechenden MAPI-Nachrichtenspeicher zu speichern, ruft der Transportanbieter die IMAPIProp::SaveChanges-Methode auf. Wenn der Transportanbieter keine Nachrichten hat, die an den MAPI-Spooler übergeben werden sollen, kann er die eingehende Nachricht beenden, indem vom StartMessage-Aufruf ohne Aufruf von SaveChanges zurückgekehrt wird.

Alle Objekte, die der Transportanbieter während eines StartMessage-Aufrufs öffnet, sollten vor der Rückkehr freigegeben werden. Der Anbieter sollte jedoch nicht das Nachrichtenobjekt freigeben, das der MAPI-Spooler ursprünglich im lpMessage-Parameter übergeben hat.

Wenn StartMessage einen Fehler zurückgibt, wird die gerade ausgeführte Nachricht ohne Speichern der Änderungen freigegeben und geht verloren. In diesem Fall sollte der Transportanbieter das NOTIFY_CRITICAL_ERROR-Flag mit einem Aufruf der IMAPISupport::SpoolerNotify-Methode übergeben und die IXPLogon::Poll-Methode aufrufen, um den MAPI-Spooler zu benachrichtigen, dass er sich in einem schwerwiegenden Fehlerzustand befindet.

Weitere Informationen finden Sie unter Interagieren mit dem MAPI-Spooler.

Siehe auch

IMAPIProp::SaveChanges

IMAPISupport::SpoolerNotify

IMAPISupport::SpoolerYield

IMAPISupport::StatusRecips

IMessage::GetRecipientTable

IXPLogon::Poll

IXPLogon::TransportNotify

IXPLogon : IUnknown