IMsgStore::OpenEntry
適用於:Outlook 2013 |Outlook 2016
開啟資料夾或訊息,並傳回介面指標以供進一步存取。
HRESULT OpenEntry(
ULONG cbEntryID,
LPENTRYID lpEntryID,
LPCIID lpInterface,
ULONG ulFlags,
ULONG FAR * lpulObjType,
LPUNKNOWN FAR * lppUnk
);
參數
cbEntryID
[in] lpEntryID 參數所指向之專案識別碼中的位元組計數 。
lpEntryID
[in]要開啟之物件之專案標識碼的指標,或 NULL。 如果 lpEntryID 設定為 NULL,OpenEntry 會開啟訊息存放區的根資料夾。
lpInterface
[in]介面識別碼的指標 (IID) ,表示要用來存取已開啟物件的介面。 傳遞 NULL 會導致對象的標準介面 (資料夾的 IMAPIFolder ,以及傳回訊息) 的 IMessage 。
ulFlags
[in]控制物件開啟方式的旗標位掩碼。 您可以使用下列旗標:
MAPI_BEST_ACCESS
要求使用用戶允許的最大網路許可權和最大用戶端應用程式存取權來開啟物件。 例如,如果用戶端具有讀取/寫入許可權,則應該使用讀取/寫入許可權開啟物件;如果用戶端具有唯讀許可權,則應該使用唯讀許可權開啟物件。
MAPI_DEFERRED_ERRORS
允許 OpenEntry 成功傳回,可能在物件完全可供呼叫的用戶端使用之前。 如果對象無法使用,則進行後續物件呼叫可能會引發錯誤。
MAPI_MODIFY
要求讀取/寫入許可權。 根據預設,物件會以唯讀許可權開啟,而用戶端不應在授與讀取/寫入許可權的假設下運作。
lpulObjType
[out]開啟之物件類型的指標。
lppUnk
[out]指向已開啟物件之指標的指標。
傳回值
S_OK
呼叫成功,並傳回預期的值。
MAPI_E_NO_ACCESS
嘗試修改唯讀物件,或存取用戶沒有足夠的許可權的物件。
MAPI_NO_CACHE
以快取模式開啟存放區時,用戶端或服務提供者可以呼叫 IMsgStore::OpenEntry,設定MAPI_NO_CACHE旗標以開啟遠端存放區上的專案或資料夾。 如果您在遠端伺服器上使用 MDB_ONLINE 旗標開啟訊息存放區,則不需要使用 MAPI_NO_CACHE 旗標。
註解
IMsgStore::OpenEntry 方法會開啟資料夾或訊息,並傳回可用於進一步存取之介面的指標。
重要事項
在公用存放區上開啟資料夾專案時,例如資料夾和訊息,請使用 IMsgStore::OpenEntry ,而不是 IMAPISession::OpenEntry。 這可確保在配置檔中定義多個 Exchange 帳戶時,公用資料夾正常運作。
呼叫者注意事項
除非您在 ulFlags 參數中設定MAPI_MODIFY或MAPI_BEST_ACCESS旗標,否則資料夾和訊息會自動以唯讀許可權開啟。 設定其中一個旗標並不保證特定類型的許可權;您被授與的許可權取決於訊息存放區提供者、您的存取層級和物件。 若要判斷已開啟物件的存取層級,請擷取其 PR_ACCESS_LEVEL (PidTagAccessLevel) 屬性。
雖然 IMsgStore::OpenEntry 可用來開啟任何資料夾或訊息,但如果您可以存取要開啟之資料夾或訊息的父資料夾,使用 IMAPIContainer::OpenEntry 方法通常會比較快。
檢查 lpulObjType 參數中傳回的值,以判斷傳回的物件類型是否為您預期的類型。 如果物件類型不是預期的類型,請將 lppUnk 參數的指標轉換成適當類型的指標。 例如,如果您要開啟資料夾,請將 lppUnk 轉換成 LPMAPIFOLDER 類型的指標。
MFCMAPI 參考
如需 MFCMAPI 範例程式代碼,請參閱下表。
檔案 | Function | Comment |
---|---|---|
MAPIFunctions.cpp |
CallOpenEntry |
MFCMAPI 會使用 IMsgStore::OpenEntry 方法來開啟與專案標識符相關聯的物件。 |