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