Exchange キャッシュ モードで同期を呼び出さずに OST でメッセージを管理する
適用対象: Outlook 2013 | Outlook 2016
このトピックには、クライアントが Exchange キャッシュ モードのときにメッセージ全体を強制的にダウンロードすることなく、オフライン フォルダー ファイル (OST) 内のメッセージを管理する IMessage インターフェイスを IMsgStore::OpenEntry で取得IID_IMessageRaw
する方法を示す C++ のコード サンプルが含まれています。
クライアントが Exchange キャッシュ モードの場合、OST 内のメッセージは次の 2 つの状態のいずれかになります。
- ヘッダーと本文を含むメッセージ全体がダウンロードされます。
- ヘッダーのみを含むメッセージがダウンロードされます。
OST でメッセージの IMessage インターフェイスを要求し、クライアントが Exchange キャッシュ モードの場合は、 を使用します IID_IMessageRaw
。 を使用 IID_IMessage
して IMessage インターフェイスを要求し、メッセージのヘッダーのみが OST にダウンロードされている場合は、メッセージ全体のダウンロードを試みる同期を呼び出します。
または IID_IMessage
を使用IID_IMessageRaw
して IMessage インターフェイスを要求する場合、返されるインターフェイスは使用中と同じです。 を使用IID_IMessageRaw
して要求された IMessage インターフェイスは、OST に存在する電子メール メッセージを返し、同期は強制されません。
次の例は、 ではなく を渡して OpenEntry メソッドを呼び出す IID_IMessageRaw
方法を IID_IMessage
示しています。
HRESULT HrOpenRawMessage (
LPMDB lpMSB,
ULONG cbEntryID,
LPENTRYID lpEntryID,
ULONG ulFlags,
LPMESSAGE* lpMessage)
{
ULONG ulObjType = NULL;
HRESULT hRes = lpMDB->OpenEntry(
cbEntryID,
lpEntryID,
IID_IMessageRaw,
ulFlags,
&ulObjType,
(LPUNKNOWN*) lpMessage));
return hRes;
}
OpenEntry メソッドがMAPI_E_INTERFACE_NOT_SUPPORTEDエラー コードを返す場合は、メッセージ ストアが未加工モードでのメッセージへのアクセスをサポートしていないことを示します。 このような場合は、 を渡IID_IMessage
して OpenEntry メソッドをもう一度試してください。
重要
IID_IMessageRaw
は、現在使用しているダウンロード可能なヘッダー ファイルで定義されていない可能性があります。 この場合は、次の定義を使用してコードに追加できます。 MICROSOFT Windows ソフトウェア開発キット (Windows SDK) (SDK) ヘッダー ファイル guiddef.h で定義されているDEFINE_OLEGUID マクロを使用して、GUID シンボリック名とその値を関連付けます。
#if !defined(INITGUID) || defined(USES_IID_IMessageRaw)
DEFINE_OLEGUID(IID_IMessageRaw,0x0002038A, 0, 0);
> #endif