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, das vom Transportanbieter verwendet wird, um auf diese Nachricht zuzugreifen und sie zu bearbeiten. Dieses Objekt bleibt gültig, bis 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 von lpMessage verwiesen wird, 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 RÜCKRUFfunktion IMAPISupport::SpoolerYield 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, sollte er dies tun. 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 er den Eintragsbezeichner erstellen.

Wenn nicht übersetzbare Eigenschaften empfangen werden, sollte der Transportanbieter diese nicht in der neuen Nachricht speichern. Der Transportanbieter sollte jedoch alle übertragenen Eigenschaften speichern, die er in der neuen Nachricht empfängt.

Wenn es sich bei der eingehenden Nachricht um einen Übermittlungsbericht oder einen nicht lieferfreien Bericht 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 die eigenschaft PR_ENTRYID (PidTagEntryId) der Nachricht jedoch 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 über keine Nachrichten verfügt, die an den MAPI-Spooler übergeben werden sollen, kann er die eingehende Nachricht beenden, indem er vom StartMessage-Aufruf zurückgibt, ohne SaveChanges aufzurufen.

Alle Objekte, die der Transportanbieter während eines StartMessage-Aufrufs öffnet, sollten vor der Rückgabe 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 Gespeicherte Ä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::P oll-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