如何在 Outlook 2003 中搭配使用快取 Exchange 模式功能與 Extended MAPI 應用程式

文章翻譯 文章翻譯
文章編號: 834496 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

簡介

「快取 Exchange 模式」是 Microsoft Office Outlook 2003 的新功能,可讓 Outlook 2003 存取使用者信箱的本機複本,同時與 Microsoft Exchange 中使用者信箱的遠端複本保持連線。對 Extended MAPI 開發人員而言,瞭解這項功能對他們解決方案的影響,以及如何使用這項功能是很重要的。

其他相關資訊

如果 Outlook 2003 以「快取 Exchange 模式」執行,則任何登入到相同工作階段的 Extended MAPI 應用程式也會連線到快取郵件儲存區。所存取的任何資料以及所做的任何變更都會影響到信箱的本機複本。有時候,這不是您所樂見的情況。Outlook 2003 包含一個新標幟,稱為 MDB_ONLINE
#define MDB_ONLINE ((ULONG) 0x00000100)
這個標幟可以傳遞到 IMAPISession::OpenMsgStore MAPI 函數。這個標幟會取代對本機郵件儲存區的連線,並在遠端伺服器開啟儲存區。

注意 這個標幟不允許在相同的 MAPI 工作階段中同時在快取模式與非快取模式中開啟 Exchange 儲存區。如果您已經開啟快取郵件儲存區,則在使用這個標幟開啟儲存區之前,必須先將儲存區關閉,或者開啟新的 MAPI 工作階段,使用這個標幟開啟遠端伺服器上的 Exchange 儲存區。

下列程式碼示範如何使用這個標幟:
//Obtain the table of all the message stores that are available
hRes = lpMAPISession -> GetMsgStoresTable(0, &pStoresTbl);
    
//Set up restrictions for the default store
sres.rt = RES_PROPERTY;                                  //Comparing a property
sres.res.resProperty.relop = RELOP_EQ;                   //Testing equality
sres.res.resProperty.ulPropTag = PR_DEFAULT_STORE;       //Tag to compare
sres.res.resProperty.lpProp = &spv;                      //Prop tag and value to compare against
    
spv.ulPropTag = PR_DEFAULT_STORE;                        //Tag type
spv.Value.b   = TRUE;                                    //Tag value
    
//Convert the table to an array that can be stepped through
//Only one message store should have PR_DEFAULT_STORE set to true, so that only one will be returned
hRes = HrQueryAllRows(
pStoresTbl,                                          //Table to query
(LPSPropTagArray) &sptCols,                          //Which columns to obtain
&sres,                                               //Restriction to use
NULL,                                                //No sort order
0,                                                   //Max number of rows (0 means no limit)
&pRow);                                              //Array to return
    
//Open the first returned (default) message store
hRes = lpMAPISession->OpenMsgStore(
NULL,                                                //Window handle for dialogs
pRow->aRow[0].lpProps[EID].Value.bin.cb,             //size and...
(LPENTRYID)pRow->aRow[0].lpProps[EID].Value.bin.lpb, //value of entry to open
NULL,                                                //Use default interface (IMsgStore) to open store
MAPI_BEST_ACCESS | MDB_ONLINE,                       //Flags
&lpTempMDB);                                         //Pointer to put the store in
此外,您可以將 MAPI_NO_CACHE 標幟傳遞至 IMsgStore::OpenEntry MAPI 函數,以略過特定項目或資料夾上的快取:
#define MAPI_NO_CACHE ((ULONG) 0x00000200)
下列程式碼示範如何使用這個標幟:
// Open the root folder of the message store
hRes = lpMDB->OpenEntry(
0,                                                   // size of entry ID                            
NULL,                                                // Pointer to entry ID
NULL,                                                // Use default interface (IMAPIFolder)
MAPI_BEST_ACCESS | MAPI_NO_CACHE,                    // Flags
&ulObjType,                                          // Output parameter indicates the type of object that is returned
(LPUNKNOWN *)&lpRootFolder)))                        // Pointer to put the opened item in
注意 如果您已使用 MDB_ONLINE 標幟開啟郵件儲存區,則不需要使用 MAPI_NO_CACHE 標幟。

屬性

文章編號: 834496 - 上次校閱: 2005年12月14日 - 版次: 2.1
這篇文章中的資訊適用於:
  • Microsoft Office Outlook 2003
關鍵字:?
kbinfo kbmsg kbprogramming kbsample KB834496
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com