IAddrBook::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]項目標識碼的指標,表示要開啟的通訊簿專案。
lpInterface
[in]介面識別碼的指標, (要用來存取開啟專案之介面的 IID) 。 傳遞 NULL 會傳回對象的標準介面。 針對訊息使用者,標準介面是 IMailUser :IMAPIProp。 針對通訊組清單,它是 IDistList:IMAPIContainer ,而針對容器,它是 IABContainer:IMAPIContainer。 呼叫端可以將 lpInterface 設定為適當的標準介面或繼承階層中的介面。
ulFlags
[in]控制項目開啟方式的旗標位掩碼。 您可以設定下列旗標。
MAPI_BEST_ACCESS
要求以允許的最大網路和客戶端許可權開啟專案。 例如,如果用戶端具有讀取/寫入許可權,通訊簿提供者應該嘗試以讀取/寫入許可權開啟專案。 用戶端可以藉由呼叫開啟專案的 IMAPIProp::GetProps 方法並擷取 PR_ACCESS_LEVEL (PidTagAccessLevel) 属性來擷取授與的存取層級。
MAPI_CACHE_ONLY
開啟通訊錄專案,並只從快取存取它。 例如,您可以使用此旗標來允許用戶端應用程式在快取交換模式中開啟 GAL) 的全域通訊清單 (,並從快取存取該通訊簿中的專案,而不需要在用戶端與伺服器之間建立流量。 只有 Exchange 通訊簿提供者支援此旗標。
MAPI_DEFERRED_ERRORS
允許呼叫成功,可能在專案完全開啟且可供使用之前,表示稍後對專案的呼叫可能會傳回錯誤。
MAPI_GAL_ONLY
僅使用 GAL 來執行名稱解析。 只有 Exchange 通訊簿提供者支援此旗標。
注意事項
ulFlags MAPI_GAL_ONLY可能未定義在您目前擁有的可下載頭檔中,在此情況下,您可以使用下列值將其新增至程式代碼:#define MAPI_GAL_ONLY (0x00000080)
MAPI_MODIFY
要求以讀取/寫入許可權開啟專案。 由於項目預設是以唯讀存取權開啟,因此客戶端不應該假設已授與讀取/寫入許可權,而不論是否已設定MAPI_MODIFY。
MAPI_NO_CACHE
請勿使用離線通訊錄來執行名稱解析。 只有 Exchange 通訊簿提供者支援此旗標。
lpulObjType
[out]開啟之專案的型別指標。
lppUnk
[out]指向已開啟專案之指標的指標。
傳回值
S_OK
專案已成功開啟。
MAPI_E_NO_ACCESS
嘗試開啟用戶許可權不足的專案。
MAPI_E_NOT_FOUND
lpEntryID 所代表的專案不存在。
MAPI_E_UNKNOWN_ENTRYID
無法辨識 lpEntryID 中指定的專案識別碼。 如果負責對應項目的通訊簿提供者未開啟,通常會傳回這個值。
註解
用戶端和服務提供者會呼叫 IAddrBook::OpenEntry 方法來開啟通訊簿專案。 MAPI 會根據傳入 lpEntryID 參數之專案識別碼中包含的 MAPIUID 結構,將呼叫轉送至適當的通訊簿提供者。 除非已設定 ulFlags 參數中的MAPI_MODIFY或MAPI_BEST_ACCESS旗標,否則通訊簿提供者會以唯讀方式開啟專案。 不過,這些旗標是建議。 如果通訊錄提供者不允許修改要求的專案,則會傳回MAPI_E_NO_ACCESS。
lpInterface 參數會指出應該使用哪一個介面來存取開啟的專案。 在 lpInterface 中傳遞 NULL 表示應該使用該專案類型的標準 MAPI 介面。 因為通訊錄提供者可能會傳回與 lpInterface 參數所建議的介面不同的介面,所以呼叫端應該檢查 lpulObjType 參數中傳回的值,以判斷傳回的物件類型是否為預期的值。 如果物件類型不是預期的類型,呼叫端可以將 lppUnk 參數轉換成更適當的類型。