次の方法で共有


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にキャスト) 型です。 値 0 は、親ウィンドウがないことを示します。

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 パラメーターの値は 0 です。

lpProps

[in]メッセージ サービスの構成で関数が使用するプロバイダーがサポートするプロパティの値を示す 、SPropValue 構造体の省略可能な配列へのポインター。 ulContext パラメーターが MSG_SERVICE_CONFIGURE に設定されている場合にのみ、このパラメーターが使用されます。 このパラメーターは、通常、個人用アドレス帳サービスなどのファイル ベースのサービスのファイルへのパスを渡すために使用されます。 ulFlags パラメーターにMSG_SERVICE_CONFIGURE フラグが渡されない場合、lpProps パラメーターは 0 である必要があります。

lpProviderAdmin

[in]関数が現在のメッセージ サービス内の特定のプロバイダーのプロファイル セクションを検索するために使用できる IProviderAdmin:IUnknown インターフェイスへのポインター。

lppMapiError

[out] MAPIERROR 構造体へのポインター。 構造体は MAPIAllocateBuffer 関数で割り当てられます。 すべてのメンバーは省略可能ですが、ほとんどの構造体には lpszError メンバーに有効なエラー メッセージ文字列が含まれます。 構造体の lpszComponent メンバーまたは lpszError メンバーが存在する場合、そのメモリは最終的に、基本構造体の MAPIFreeBuffer の 1 回の呼び出しによって解放される必要があります。

戻り値

S_OK

�ʘb���������A�\�������l�܂��͒l���Ԃ���܂��B

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::CreateMsgService または IMsgServiceAdmin::ConfigureMsgService を呼び出すクライアント アプリケーションに応答して、このエントリ ポイントを呼び出します

MAPI では、メッセージ サービスが MSGSERVICEENTRY プロトタイプに使用する関数名に制限はありませんが、 ServiceEntry という名前を使用します。 関数の序数に制限はなく、1 つのプロバイダー DLL に複数の関数を含めることができます。 ただし、 ServiceEntry という名前を付けることができる関数は 1 つだけです。

メッセージ サービスでは 、BuildDisplayTable 関数と IMAPISupport::D oConfigPropsheet メソッドを使用して、構成ダイアログ ボックスの実装を簡略化できます。

ユーザーがMSG_SERVICE_UNINSTALL操作を取り消すことができます。 この場合、ServiceEntry 関数はユーザーとチェックして、サービスを削除しないことを確認し、サービスがインストールされたままの場合はMAPI_E_USER_CANCELを返す必要があります。

MSGSERVICEENTRY プロトタイプに基づく関数は、一覧表示されているいずれかの HRESULT 値を返します。 MAPI は、 IMsgServiceAdmin::ConfigureMsgService へのクライアントの呼び出しに応答するときに、この値を転送します。

サービス エントリ関数をエクスポートするメッセージ サービスには、MAPISVC.INF のメッセージ サービス セクションに 、PR_SERVICE_DLL_NAME (PidTagServiceDllName) プロパティと PR_SERVICE_ENTRY_NAME (PidTagServiceEntryName) プロパティが含まれている必要があります。