MSGSERVICEENTRY

適用於:Outlook 2013 |Outlook 2016

定義訊息服務進入點函式的原型,以支援訊息服務組態。

屬性
標頭檔:
Mapispi.h
定義函式實作者:
訊息服務
由下列項目呼叫的定義函式:
Mapi
HRESULT MSGSERVICEENTRY(
  HINSTANCE hInstance,
  LPMALLOC lpMalloc,
  LPMAPISUP lpMAPISup,
  ULONG_PTR ulUIParam,
  ULONG ulFlags,
  ULONG ulContext,
  ULONG cValues,
  LPSPropValue lpProps,
  LPPROVIDERADMIN lpProviderAdmin,
  LPMAPIERROR FAR * lppMapiError
);

參數

hInstance

[in]服務提供者實例的句柄DLL。 句柄通常用來擷取資源。

lpMalloc

[in]公開 OLE IMalloc 介面的記憶體配置器對象指標。 使用 IStream 等特定介面時,訊息服務可能需要使用此配置方法。

lpMAPISup

[in] IMAPISupport 的指標:IUnknown 介面實作。

ulUIParam

[in]實作特定值,用於將使用者介面信息傳遞至函式或零。 ulUIParam 參數是組態對話框的父視窗句柄,其類型為 HWND (轉換成ULONG_PTR) 。 值為零表示沒有父視窗。

ulFlags

[in]旗標的位掩碼,指出服務專案函式的選項。 您可以設定下列旗標:

MAPI_UNICODE

傳入的字串是 Unicode 格式。 如果未設定MAPI_UNICODE旗標,則字串會是 ANSI 格式。

MSG_SERVICE_UI_READ_ONLY

服務的組態使用者介面應該會顯示目前的組態,但不允許用戶變更它。

SERVICE_UI_ALLOWED

允許視需要顯示組態對話框。 設定SERVICE_UI_ALLOWED旗標時,只有在 lpProps 屬性值陣列是空的或不包含有效的組態時,才會顯示對話方塊。 如果未設定SERVICE_UI_ALLOWED,如果已設定SERVICE_UI_ALWAYS旗標,仍可能會顯示對話方塊。

UI_CURRENT_PROVIDER_FIRST

要求使用中提供者的組態對話框顯示在其他對話框上方。

SERVICE_UI_ALWAYS

需要訊息服務顯示組態對話框。 如果未設定SERVICE_UI_ALWAYS旗標,如果已設定SERVICE_UI_ALLOWED旗標,且 無法從 lpProps 屬性值陣列取得有效的組態資訊,則可能仍會顯示組態對話框。 SERVICE_UI_ALLOWED或SERVICE_UI_ALWAYS必須設定為允許顯示使用者介面。

ulContext

[in]MAPI 目前正在執行的組態作業。 ulContext 參數將包含下列其中一個值:

MSG_SERVICE_CONFIGURE

應在配置檔中變更服務的組態。 如果已設定SERVICE_UI_ALWAYS旗標,服務應該會顯示其組態對話框。 如果已設定SERVICE_UI_ALLOWED旗標,且 lpProps 參數是空的或不包含有效的組態數據,也應該顯示對話方塊。 如果 lpProps 包含有效的數據,則不應該顯示任何對話方塊,而且服務應該使用此數據來進行組態變更。

MSG_SERVICE_CREATE

服務正在新增至配置檔。 如果已設定SERVICE_UI_ALWAYS或SERVICE_UI_ALLOWED旗標,服務應該會顯示其組態對話方塊。 如果未設定任何旗標,服務應該會失敗。

MSG_SERVICE_DELETE

服務正從配置檔中移除。 收到此事件之後,服務應該會傳回S_OK。

MSG_SERVICE_INSTALL

服務已從網路、磁碟或其他外部媒體安裝到使用者的工作站。 收到此事件之後,服務通常會傳回 S_OK。

MSG_SERVICE_PROVIDER_CREATE

要求服務建立提供者的其他實例。 如果服務支援這項作業,它應該呼叫 IProviderAdmin::CreateProvider。 如果服務不支援此作業,它可以傳回MAPI_E_NO_SUPPORT。

MSG_SERVICE_PROVIDER_DELETE

要求服務刪除提供者實例。 如果服務支援這項作業,它應該呼叫 IProviderAdmin::D eleteProvider。 如果服務不支援此作業,它可以傳回MAPI_E_NO_SUPPORT。

MSG_SERVICE_UNINSTALL

正在移除服務。 收到此事件之後,服務可以執行任何應該在服務結束之前完成的清除工作,然後傳回成功值。 如果使用者取消移除,服務應該會傳回MAPI_E_USER_CANCEL。

cValues

[in] lpProps 參數所指向數位中的屬性值計數。 如果MAPI未傳遞任何屬性值, 則 cValues 參數的值為零。

lpProps

[in] SPropValue 結構的選擇性數位指標,指出函式將用於設定訊息服務之提供者支援屬性的值。 只有在 ulContext 參數設定為 MSG_SERVICE_CONFIGURE 時,函式才會使用此參數。 這個參數通常用來傳遞檔案型服務檔案的路徑,例如個人通訊簿服務。 如果未在 ulFlags 參數中傳遞MSG_SERVICE_CONFIGURE旗標, 則 lpProps 參數必須為零。

lpProviderAdmin

[in] IProviderAdmin:IUnknown 介面的指標,函式可用來尋找目前訊息服務中特定提供者的配置檔區段。

lppMapiError

[out] MAPIERROR 結構的指標。 結構是使用 MAPIAllocateBuffer 函式來配置。 所有成員都是選擇性的,雖然大部分的結構都會在 lpszError 成員中包含有效的錯誤訊息字串。 如果結構的 lpszComponentlpszError 成員存在,最終必須在基底結構上單一呼叫 MAPIFreeBuffer 來釋放其記憶體。

傳回值

S_OK

呼叫成功,並傳回預期的值。

MAPI_E_UNCONFIGURED

尚未設定服務提供者。

MAPI_E_USER_CANCEL

使用者已取消作業,通常是按兩下對話框中的 [ 取消 ] 按鈕。

MAPI_E_NO_SUPPORT

提供者不支援變更其物件,或不支援變更通知。

MAPI_E_BAD_CHARWIDTH

已設定MAPI_UNICODE旗標,且實作不支援 Unicode,或未設定MAPI_UNICODE,且實作僅支援 Unicode。

註解

使用 MSGSERVICEENTRY 函式原型定義的函式可讓訊息服務自行設定或執行其他服務特定動作。 函式主要會提供對話框,讓使用者可以變更訊息服務的特定設定。 它也可以使用 lpProps 參數中傳遞的屬性值數位來支援程式設計設定。 除非服務支援需要的配置檔精靈,否則程式設計設定是選擇性的。

MAPI 會從 控制台 應用程式或回應呼叫 IMsgServiceAdmin::CreateMsgServiceIMsgServiceAdmin::ConfigureMsgService 的用戶端應用程式呼叫此進入點。

MAPI 不會限制訊息服務用於 MSGSERVICEENTRY 原型的函式名稱,但偏好名稱 ServiceEntry。 函式的序數沒有任何限制,而且單一提供者 DLL 可以包含多個函式。 不過,只有其中一個函式可以命名為 ServiceEntry

訊息服務可以使用 BuildDisplayTable 函式和 IMAPISupport::D oConfigPropsheet 方法來簡化組態對話框實作。

使用者可以取消MSG_SERVICE_UNINSTALL作業。 在此情況下, ServiceEntry 函式應該與用戶進行檢查,以確認服務不應該移除,並在服務仍保持安裝狀態時傳回MAPI_E_USER_CANCEL。

MSGSERVICEENTRY 原型為基礎的函式會傳回其中一個列出的 HRESULT 值。 MAPI 會在回應用戶端對 IMsgServiceAdmin::ConfigureMsgService 的呼叫時轉送此值。

匯出服務專案函式的訊息服務必須包含 PR_SERVICE_DLL_NAME (PidTagServiceDllName) 和 PR_SERVICE_ENTRY_NAME (MAPISVC.INF 訊息服務區段 中的) 屬性