IMAPIContainer::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]要開啟之物件之專案標識碼的指標。 如果 lpEntryID 設定為 NULL,則會開啟容器階層中的最上層容器。
lpInterface
[in]介面識別碼的指標 (IID) ,表示要用來存取物件的介面。 傳遞 NULL 會導致傳回物件之標準介面的標識碼。 針對訊息,標準介面為 IMAPIMessageSite:IUnknown;針對資料夾,它是 IMAPIFolder:IMAPIContainer。 通訊錄對象的標準介面為 IDistList:通訊組清單的 IMAPIContainer 和訊息使用者的 IMailUser :IMAPIProp 。
ulFlags
[in]控制物件開啟方式的旗標位掩碼。 您可以設定下列旗標:
MAPI_BEST_ACCESS
要求以用戶允許的最大網路許可權和最大用戶端應用程式存取權來開啟物件。 例如,如果用戶端具有讀取/寫入許可權,則應該以讀取/寫入許可權開啟物件;如果用戶端具有只讀存取權,則應該以唯讀存取權開啟物件。
MAPI_DEFERRED_ERRORS
允許 OpenEntry 成功傳回,可能在物件完全可供呼叫的用戶端使用之前。 如果對象無法使用,則進行後續物件呼叫可能會引發錯誤。
MAPI_MODIFY
要求讀取/寫入許可權。 根據預設,物件會以唯讀存取權開啟,而用戶端不應在已授與讀取/寫入許可權的假設下運作。
SHOW_SOFT_DELETES
顯示目前標示為虛刪除的專案,也就是它們處於已刪除的專案保留時間階段。
lpulObjType
[out]開啟之物件型別的指標。
lppUnk
[out]介面實作指標的指標,用來存取開啟的物件。
傳回值
S_OK
物件已成功開啟。
MAPI_E_NO_ACCESS
用戶沒有足夠的許可權可開啟物件,或嘗試開啟具有讀取/寫入許可權的唯讀物件。
MAPI_E_NOT_FOUND
lpEntryID 指定的項目標識碼不代表 物件。
MAPI_E_UNKNOWN_ENTRYID
lpEntryID 參數中的項目標識子不是容器所辨識的格式。
註解
IMAPIContainer::OpenEntry 方法會在整個容器中開啟物件,並傳回介面實作的指標以供進一步存取。
呼叫者注意事項
因為服務提供者不需要傳回 lpInterface 參數中介面識別碼所指定類型的介面實作,所以請檢查 lpulObjType 參數所指向的值。 如有必要,請將 lppUnk 中傳回的指標轉換成適當類型的指標。
根據預設,除非您設定MAPI_MODIFY或MAPI_BEST_ACCESS旗標,否則服務提供者會開啟具有只讀存取權的物件。 設定其中一個旗標時,服務提供者會嘗試傳回可修改的物件。 不過,請勿假設您要求的可修改對像是開啟的物件具有讀取/寫入許可權。 規劃後續修改失敗的機會,或擷取物件的 PR_ACCESS_LEVEL 屬性,以判斷 OpenEntry 所授與的存取層級。