Freigeben über


IMAPISupport::SpoolerNotify

Gilt für: Outlook 2013 | Outlook 2016

Benachrichtigt den MAPI-Spooler über eine Änderung in status oder eine Serviceanforderung.

HRESULT SpoolerNotify(
ULONG ulFlags,
LPVOID lpvData
);

Parameter

ulFlags

[in] Eine Bitmaske von Flags, die den Typ der Benachrichtigung angibt. Transportanbieter können alle Flags außer NOTIFY_NEWMAIL_RECEIVED festlegen. nur NOTIFY_NEWMAIL_RECEIVED und NOTIFY_READTOSEND sind für Nachrichtenspeicheranbieter gültig. Die folgenden Flags sind für den ulFlags-Parameter gültig:

NOTIFY_CONFIG_CHANGE

Registriert eine Anforderung zum Ändern der Konfiguration des Transportanbieters.

NOTIFY_CRITICAL_ERROR

Beim Transportanbieter ist ein nicht behebbarer Fehler aufgetreten. Da sowohl NOTIFY_SENTDEFERRED als auch NOTIFY_CRITICAL_ERROR den lpvData-Parameter für Transportanbieteraufrufe verwenden, schließen sich diese Flags gegenseitig aus.

NOTIFY_CRITSEC

Fordert einen kritischen Abschnitt für den Transportanbieter an. Der lpvData-Parameter ist nicht definiert und sollte NULL sein.

NOTIFY_NEWMAIL

Der MAPI-Spooler sollte alle neu empfangenen Nachrichten zum nächsten verfügbaren Zeitpunkt herunterladen. Der lpvData-Parameter ist nicht definiert und sollte auf NULL festgelegt werden.

NOTIFY_NEWMAIL_RECEIVED

Im Nachrichtenspeicher wurde eine neue Nachricht empfangen. Der lpvData-Parameter verweist auf eine NEWMAIL_NOTIFICATION Struktur, die die Nachricht beschreibt. Dieses Flag wird für Nachrichtenspeicheranbieter verwendet, die eng mit Transportanbietern gekoppelt sind, und wird ignoriert, wenn der Speicheranbieter mit festgelegtem MAPI_NO_MAIL-Flag angemeldet ist.

NOTIFY_NONCRIT

Gibt einen kritischen Abschnitt frei, der mit einem vorherigen Aufruf von SpoolerNotify abgerufen wurde, wobei ulFlags auf NOTIFY_CRITSEC festgelegt ist. Der lpvData-Parameter ist nicht definiert und sollte auf NULL festgelegt werden.

NOTIFY_READYTOSEND

Der Transport- oder Nachrichtenspeicheranbieter ist bereit, Nachrichten zu senden. Der lpvData-Parameter ist nicht definiert und sollte auf NULL festgelegt werden.

NOTIFY_SENTDEFERRED

Eine zuvor zurückgestellte Nachricht sollte nun gesendet werden, und der Transportanbieter sollte benachrichtigt werden, wenn die Nachricht mithilfe eines Aufrufs der IXPLogon::SubmitMessage-Methode übermittelt werden kann. Der Eintragsbezeichner der verzögerten Nachricht ist in einer SBinary-Struktur enthalten, auf die von lpvData verwiesen wird. Da sowohl NOTIFY_SENTDEFERRED als auch NOTIFY_CRITICAL_ERROR den lpvData-Parameter verwenden, schließen sich diese Flags gegenseitig aus.

lpvData

[in] Ein Zeiger auf zugeordnete Daten, die für eine Benachrichtigung gelten. Der Parameter lpvData verweist nur auf gültige Daten, wenn die folgenden Flags festgelegt sind (lpvData ist NULL, wenn ulFlags auf die anderen Benachrichtigungstypen festgelegt ist):

ulFlags-Einstellung lpvData-Wert
NOTIFY_CRITICAL_ERROR
Informationen zum Fehler.
NOTIFY_NEWMAIL_RECEIVED
Eine NEWMAIL_NOTIFICATION-Struktur , die Informationen zur neu zugestellten Nachricht enthält.
NOTIFY_SENTDEFERRED
Eine SBinary-Struktur , die den Eintragsbezeichner der verzögerten Nachricht enthält.

Rückgabewert

S_OK

Die Benachrichtigung war erfolgreich.

Hinweise

Die IMAPISupport::SpoolerNotify-Methode wird für Nachrichtenspeicher- und Transportanbieterunterstützungsobjekte implementiert. Diese Anbieter rufen SpoolerNotify auf, um den MAPI-Spooler über eine Änderung in status oder eine Serviceanforderung zu benachrichtigen. SpoolerNotify wird hauptsächlich von Transportanbietern aufgerufen und kann jederzeit während der Sitzung aufgerufen werden.

Hinweise zu Transportanbietern

Wenn Sie ihre Transportanbieterkonfiguration geändert haben, rufen Sie SpoolerNotify auf, und legen Sie ulFlags auf NOTIFY_CONFIG_CHANGED fest. SpoolerNotify antwortet, indem die IXPLogon::AddressTypes-Methode aufgerufen wird , um eine Änderung der unterstützten Adresstypen abzufragen.

Wenn Sie einen kritischen Abschnitt benötigen, um eine unterbrechungsfreie Verarbeitung sicherzustellen, rufen Sie SpoolerNotify auf, wobei ulFlags auf NOTIFY_CRITSEC festgelegt ist. Durch Festlegen dieses Flags wird der MAPI-Spooler darüber informiert, dass die Methoden IXPLogon::Idle und IXPLogon::P oll nicht aufgerufen werden sollen. Während Sie einen kritischen Abschnitt geöffnet haben, geben Sie MAPI_E_BUSY zurück, wenn die IMAPIStatus::ValidateState-Methode aufgerufen wird. Wenn Sie mit dem kritischen Abschnitt fertig sind, rufen Sie SpoolerNotify erneut auf, with_ulFlags_ auf NOTIFY_NONCRIT festgelegt ist.

Wenn Ihr Remotetransportanbieter gerade Nachrichten hochlädt, müssen Sie möglicherweise einem Benutzer erlauben, eine Telefonnummer einzugeben, um die Remoteverbindung herzustellen. Bevor Sie die Prozedur des Dialogfelds durchlaufen, sollten Sie einen kritischen Abschnitt deklarieren. Wenn der Benutzer das Dialogfeld schließt und die Dialogfeldprozedur beendet, sollten Sie den kritischen Abschnitt freigeben.

Wenn Sie ulFlags auf NOTIFY_CRITICAL_ERROR festlegen, sendet der MAPI-Spooler keine weiteren Aufrufe an den Anbieter, außer um ihn freizugeben. Wenn Sie SpoolerNotify mit NOTIFY_CRITICAL_ERROR aufrufen, die aus den Methoden IXPLogon::StartMessage oder IXPLogon::SubmitMessage festgelegt wurden, geben Sie mit einem entsprechenden Fehlerwert aus dem StartMessage - oder SubmitMessage-Aufruf unmittelbar nach dem SpoolerNotify-Aufruf zurück.

Wenn Ihr Transportanbieter eine Bedingung wiederhergestellt hat, die zuvor zu einem Fehler geführt hat, rufen Sie SpoolerNotify auf, wobei ulFlags auf NOTIFY_READYTOSEND festgelegt ist. Dieses Flag gibt an, dass der Anbieter wieder bereit ist, Nachrichten zu verarbeiten.

Hinweise zu Nachrichtenspeicheranbietern

Rufen Sie SpoolerNotify auf, und übergeben Sie das NOTIFY_READYTOSEND-Flag in ulFlags, bevor Sie IMAPISupport::P repareSubmit in IMessage::SubmitMessage aufrufen. Dieser Aufruf von SpoolerNotify muss nur einmal pro Sitzung erfolgen.

Wenn Ihr Nachrichtenspeicheranbieter eng mit einem Transportanbieter gekoppelt ist und Sie SpoolerNotify aufrufen, wobei ulFlags auf NOTIFY_NEWMAIL_RECEIVED festgelegt ist, öffnet der MAPI-Spooler die neue Nachricht und beginnt mit der Verarbeitung der neuen Message Hook-Funktion. Wenn die Verarbeitung abgeschlossen ist, ruft der MAPI-Spooler die IMsgStore::NotifyNewMail-Methode auf, um Sie über Ihre eigene neue Nachricht zu informieren.

Weitere Informationen zum Aufrufen von SpoolerNotify finden Sie in den folgenden Themen:

Siehe auch

IMsgStore::NotifyNewMail
IXPLogon::StartMessage
IXPLogon::SubmitMessage
IMAPISupport: IUnknown