IMAPISupport::OpenEntry
適用於:Outlook 2013 |Outlook 2016
開啟物件,並傳回介面指標以供進一步存取。
HRESULT OpenEntry(
ULONG cbEntryID,
LPENTRYID lpEntryID,
LPCIID lpInterface,
ULONG ulOpenFlags,
ULONG FAR * lpulObjType,
LPUNKNOWN FAR * lppUnk
);
參數
cbEntryID
[in] lpEntryID 參數所指向之專案標識碼中的位元組計數。
lpEntryID
[in]要開啟之物件之專案標識碼的指標。
lpInterface
[in]介面識別碼的指標 (IID) ,表示要用來存取物件的介面。 傳遞 NULL 會導致傳回對象的標準介面。 例如,如果要開啟的對像是訊息,則標準介面為 IMessage;針對資料夾,它是 IMAPIFolder。 通訊錄對象的標準介面是通訊組清單的 IDistList 和訊息使用者的 IMailUser 。
ulOpenFlags
[in]控制物件開啟方式的旗標位掩碼。 您可以設定下列旗標:
MAPI_BEST_ACCESS
要求以呼叫者允許的最大網路許可權開啟物件。 例如,如果呼叫端具有讀取/寫入許可權,則應該將對象開啟為讀取/寫入;如果呼叫端具有唯讀許可權,則應該以唯讀方式開啟物件。
MAPI_DEFERRED_ERRORS
允許 OpenEntry 成功傳回,可能在呼叫端可以完全存取物件之前。 如果無法存取物件,則進行後續物件呼叫可能會導致錯誤。
MAPI_MODIFY
要求讀取/寫入許可權。 根據預設,物件會以唯讀方式開啟,而且呼叫端不應該在已授與讀取/寫入許可權的假設下運作。
lpulObjType
[out]開啟之物件類型的指標。
lppUnk
[out]指向已開啟物件之指標的指標。
傳回值
S_OK
物件已成功開啟。
MAPI_E_NO_ACCESS
嘗試修改唯讀物件,或嘗試存取用戶許可權不足的物件。
MAPI_E_NOT_FOUND
沒有物件與 lpEntryID 參數中傳遞的專案標識符相關聯。
MAPI_E_UNKNOWN_ENTRYID
在 lpEntryID 參數中傳遞的專案識別碼是無法辨識的格式。 如果包含對象的通訊簿提供者未開啟,通常會傳回這個值。
註解
針對所有服務提供者支持物件實作 IMAPISupport::OpenEntry 方法。 服務提供者會呼叫 IMAPISupport::OpenEntry 來擷取可用來存取特定物件之介面的指標。
呼叫者注意事項
只有在您不知道要開啟的物件類型時,才呼叫 IMAPISupport::OpenEntry 。 如果您知道要開啟資料夾或訊息,請改為呼叫 IMsgStore::OpenEntry 。 如果您知道要開啟通訊簿容器、傳訊用戶或通訊組清單,請呼叫 IAddrBook::OpenEntry。 這些更具體的方法比 IMAPISupport::OpenEntry 更快。
IMAPISupport::OpenEntry 會以只讀方式開啟所有物件,除非您在 ulFlags 參數中設定MAPI_MODIFY或MAPI_BEST_ACCESS旗標,而且您的許可權已足夠。 設定其中一個旗標並不保證特定類型的存取;您被授與的許可權取決於您的存取層級、物件,以及擁有對象的服務提供者。 若要判斷已開啟物件的存取層級,請擷取其 PR_ACCESS_LEVEL (PidTagAccessLevel) 屬性。
檢查 lpulObjType 參數中傳回的值,以判斷傳回的物件類型是您預期的。 如果物件類型如預期般,請將 lppUnk 參數的指標轉換成適當類型的指標。 例如,如果您要開啟資料夾,請將 lppUnk 轉換成 LPMAPIFOLDER 類型的指標。