IABLogon::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 會傳回物件標準介面的標識碼。 針對容器,標準介面為 IABContainer:IMAPIContainer。 通訊錄對象的標準介面為 IDistList:通訊組清單的 IMAPIContainer 和訊息使用者的 IMailUser :IMAPIProp 。
ulFlags
[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 參數中的專案標識碼不是通訊簿提供者所辨識的格式。
MAPI 會呼叫 OpenEntry 方法來開啟容器、傳訊使用者或通訊組清單。
實作者注意事項
在MAPI呼叫 OpenEntry 方法之前,它會判斷 lpEntryID 參數中的專案標識碼屬於您,而不是另一個提供者。 MAPI 會藉由在啟動時呼叫 IMAPISupport::SetProviderUID 方法,將專案識別碼中的 MAPIUID 結構與您註冊的 MAPIUID 進行比對。
除非在 ulFlags 參數中設定MAPI_MODIFY或MAPI_BEST_ACCESS旗標,否則請以唯讀方式開啟物件。 如果您不允許修改要求的物件,請完全不要開啟 對象並傳回MAPI_E_NO_ACCESS。
如果MAPI針對 lpEntryID 傳遞 NULL,請開啟容器階層中的根容器。
要求您開啟的物件可能是從另一個提供者複製的物件。 在此情況下,它會支援 PR_TEMPLATEID (PidTagTemplateid) 屬性。 如果對象支援這個屬性,請呼叫 IMAPISupport::OpenTemplateID 方法,以系結至外部提供者中這個專案的程式代碼,並在 lpTemplateID 參數中傳遞PR_TEMPLATEID,並在 ulTemplateFlags 參數中傳遞 0。 IMAPISupport::OpenTemplateID 會在呼叫外部提供者的 IABLogon::OpenTemplateID 方法時,將這項資訊傳遞給外部提供者。 如果 IMAPISupport::OpenTemplateID 引發錯誤,通常是因為外部提供者無法使用或未包含在配置檔中,請嘗試繼續將未繫結的項目視為只讀。 如需開啟外通訊簿專案的詳細資訊,請 參閱做為主機通訊錄提供者。