IMAPISupport::SpoolerNotify

適用対象: Outlook 2013 | Outlook 2016

状態の変更またはサービスの要求を MAPI スプーラーに通知します。

HRESULT SpoolerNotify(
ULONG ulFlags,
LPVOID lpvData
);

パラメーター

ulFlags

[in]通知の種類を示すフラグのビットマスク。 トランスポート プロバイダーは、NOTIFY_NEWMAIL_RECEIVEDを除くすべてのフラグを設定できます。NOTIFY_NEWMAIL_RECEIVEDとNOTIFY_READTOSENDのみがメッセージ ストア プロバイダーに対して有効です。 ulFlags パラメーターには、次のフラグが有効です。

NOTIFY_CONFIG_CHANGE

トランスポート プロバイダーの構成を変更する要求を登録します。

NOTIFY_CRITICAL_ERROR

回復不可能なエラーがトランスポート プロバイダーに発生しました。 NOTIFY_SENTDEFERREDとNOTIFY_CRITICAL_ERRORの両方でトランスポート プロバイダー呼び出しに lpvData パラメーターを使用するため、これらのフラグは相互に排他的です。

NOTIFY_CRITSEC

トランスポート プロバイダーの重要なセクションを要求します。 lpvData パラメーターは未定義であり、NULL にする必要があります。

NOTIFY_NEWMAIL

MAPI スプーラーは、次に利用可能な時点で新しく受信したメッセージをダウンロードする必要があります。 lpvData パラメーターは未定義であり、NULL に設定する必要があります。

NOTIFY_NEWMAIL_RECEIVED

メッセージ ストアに新しいメッセージが受信されました。 lpvData パラメーターは、メッセージを記述するNEWMAIL_NOTIFICATION構造体を指します。 このフラグは、トランスポート プロバイダーと緊密に結合されたメッセージ ストア プロバイダーに使用され、ストア プロバイダーが MAPI_NO_MAIL フラグ セットでログオンしている場合は無視されます。

NOTIFY_NONCRIT

ulFlags を NOTIFY_CRITSEC に設定した SpoolerNotify の以前の呼び出しで取得された重要なセクションを解放します。 lpvData パラメーターは未定義であり、NULL に設定する必要があります。

NOTIFY_READYTOSEND

トランスポートまたはメッセージ ストア プロバイダーは、メッセージを送信する準備ができています。 lpvData パラメーターは未定義であり、NULL に設定する必要があります。

NOTIFY_SENTDEFERRED

以前に遅延したメッセージを送信し、 IXPLogon::SubmitMessage メソッドの呼び出しを使用してメッセージを配信する準備ができたら、トランスポート プロバイダーに通知する必要があります。 遅延メッセージのエントリ識別子は、lpvData が指す SBinary 構造体に含まれています。 NOTIFY_SENTDEFERREDとNOTIFY_CRITICAL_ERRORの両方で lpvData パラメーターを使用するため、これらのフラグは相互に排他的です。

lpvData

[in]通知に適用できる関連付けられたデータへのポインター。 lpvData パラメーターは、次のフラグが設定されている場合にのみ有効なデータを指します (ulFlags が他の通知の種類に設定されている場合、lpvData は NULL です)。

ulFlags 設定 lpvData
NOTIFY_CRITICAL_ERROR
エラーに関する情報。
NOTIFY_NEWMAIL_RECEIVED
新しく配信されたメッセージに関する情報を含むNEWMAIL_NOTIFICATION構造体。
NOTIFY_SENTDEFERRED
遅延メッセージのエントリ識別子を含む SBinary 構造体。

戻り値

S_OK

通知が成功しました。

注釈

IMAPISupport::SpoolerNotify メソッドは、メッセージ ストアとトランスポート プロバイダーのサポート オブジェクトに実装されます。 これらのプロバイダーは SpoolerNotify を呼び出して、MAPI スプーラーに状態の変更またはサービスの要求を通知します。 SpoolerNotify は主にトランスポート プロバイダーによって呼び出され、セッション中はいつでも呼び出されます。

トランスポート プロバイダーに関する注意事項

トランスポート プロバイダーの構成を変更した場合は、 SpoolerNotify を呼び出し、 ulFlags をNOTIFY_CONFIG_CHANGEDに設定します。 SpoolerNotify、IXPLogon::AddressTypes メソッドを呼び出して、サポートされているアドレス型の変更を照会することで応答します。

中断のない処理を確保するために重要なセクションが必要な場合は、ulFlags を NOTIFY_CRITSEC に設定して SpoolerNotify を呼び出します。 このフラグを設定すると、MAPI スプーラーは IXPLogon::Idle メソッドと IXPLogon::P oll メソッドを呼び出さないことを通知します。 重要なセクションを開いている間は、 IMAPIStatus::ValidateState メソッドが呼び出されるたびにMAPI_E_BUSYを返します。 クリティカル セクションが終了したら、 SpoolerNotify を別の呼び出しwith_ulFlags_NOTIFY_NONCRITに設定します。

たとえば、リモート トランスポート プロバイダーがメッセージのアップロード処理中の場合、リモート接続を確立するためにユーザーに電話番号の入力を許可することが必要になる場合があります。 ダイアログ ボックスプロシージャをループする前に、重要なセクションを宣言する必要があります。 ユーザーがダイアログ ボックスを閉じ、ダイアログ ボックスのプロシージャを終了すると、重要なセクションを解放する必要があります。

ulFlags をNOTIFY_CRITICAL_ERRORに設定すると、MAPI スプーラーは、プロバイダーを解放する以外は、それ以上の呼び出しを行いません。 IXPLogon::StartMessage メソッドまたは IXPLogon::SubmitMessage メソッドから設定されたNOTIFY_CRITICAL_ERRORで SpoolerNotify を呼び出す場合は、SpoolerNotify 呼び出しの直後に StartMessage または SubmitMessage 呼び出しから適切なエラー値を返します。

以前に障害が発生した状態からトランスポート プロバイダーが復旧した場合は、ulFlags を NOTIFY_READYTOSEND に設定して SpoolerNotify を呼び出します。 このフラグは、プロバイダーがメッセージを処理する準備ができていることを示します。

メッセージ ストア プロバイダーへのメモ

IMessage::SubmitMessageIMAPISupport::P repareSubmit を最初に呼び出す前に、ulFlags で NOTIFY_READYTOSEND フラグを渡して SpoolerNotify を呼び出します。 SpoolerNotify へのこの呼び出しは、セッションごとに 1 回だけ行う必要があります。

メッセージ ストア プロバイダーがトランスポート プロバイダーと緊密に結合されていて、ulFlags を NOTIFY_NEWMAIL_RECEIVED に設定して SpoolerNotify を呼び出す場合、MAPI スプーラーは新しいメッセージを開き、新しいメッセージ フック関数の処理を開始します。 処理が完了すると、MAPI スプーラーは IMsgStore::NotifyNewMail メソッドを呼び出して、独自の新しいメッセージを通知します。

SpoolerNotify の呼び出しの詳細については、次のいずれかのトピックを参照してください。

関連項目

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