MSProviderInit
適用対象: Outlook 2013 | Outlook 2016
操作用のメッセージ ストア プロバイダーを初期化します。
プロパティ | 値 |
---|---|
ヘッダー ファイル: |
Mapispi.h |
実装元: |
メッセージ ストア プロバイダー |
呼び出し元: |
MAPI |
HRESULT MSProviderInit(
HINSTANCE hInstance,
LPMALLOC lpMalloc,
LPALLOCATEBUFFER lpAllocateBuffer,
LPALLOCATEMORE lpAllocateMore,
LPFREEBUFFER lpFreeBuffer,
ULONG ulFlags,
ULONG ulMAPIVer,
ULONG FAR * lpulProviderVer,
LPMSPROVIDER FAR * lppMSProvider
);
パラメーター
Hinstance
[in]MAPI がリンクされたときに使用されるメッセージ ストア プロバイダーのダイナミック リンク ライブラリ (DLL) のインスタンス。
lpMalloc
[in]OLE IMalloc インターフェイスを公開するメモリ アロケーター オブジェクトへのポインター。 メッセージ ストア プロバイダーは、 IStream などの特定のインターフェイスを操作するときに、この割り当て方法を使用する必要がある場合があります。
lpAllocateBuffer
[in]メモリの割り当てに使用する MAPIAllocateBuffer 関数へのポインター。
lpAllocateもっと
[in]追加のメモリを割り当てるために使用する MAPIAllocateMore 関数へのポインター。
lpFreeBuffer
[in]メモリを解放するために使用する MAPIFreeBuffer 関数へのポインター。
ulFlags
[in]フラグのビットマスク。 次のフラグを設定できます。
MAPI_NT_SERVICE
プロバイダーは、ユーザー インターフェイスにアクセスせずに特別な種類のプロセスである Windows サービスのコンテキストで読み込まれています。
ulMAPIVer
[in]MAPI が使用するサービス プロバイダー インターフェイス (SPI) のバージョン番号。 現在のバージョン番号については、Mapispi.h ヘッダー ファイルを参照してください。
lpulProviderVer
[out]このメッセージ ストア プロバイダーが使用する SPI のバージョン番号へのポインター。
lppMSProvider
[out]初期化されたメッセージ ストア プロバイダー オブジェクトへのポインター。
戻り値
S_OK
�ʘb���������A�\�������l�܂��͒l���Ԃ���܂��B
MAPI_E_VERSION
MAPI で使用されている SPI バージョンは、このプロバイダーによって使用されている SPI と互換性がありません。
注釈
MAPI は、エントリ ポイント関数 MSProviderInit を呼び出して、クライアント ログオン後にメッセージ ストア プロバイダーを初期化します。
実装に関するメモ
メッセージ ストア プロバイダーは、プロバイダーの DLL のエントリ ポイント関数として MSProviderInit を実装する必要があります。 実装は、MAPISPI.H でも指定されている MSPROVIDERINIT 関数プロトタイプに基づいている必要があります。 MAPI では、標準の MAPI 初期化呼び出しの種類 STDMAPIINITCALLTYPE を使用するように MSPROVIDERINIT が定義されています。これにより、 MSProviderInit は CDECL 呼び出し規則に従います。 CDECL の利点は、呼び出し元パラメーターの数が定義されたパラメーターの数と一致しない場合でも、呼び出しを試行できることです。
プロバイダーは、同時に複数のプロファイルに表示された結果、または同じプロファイルに複数回表示された結果として、複数回初期化できます。 プロバイダー オブジェクトにはコンテキストが含まれているため、 MSProviderInit は、同じプロセス内の複数の初期化の場合でも、初期化ごとに異なるプロバイダー オブジェクトを lppMSProvider で返す必要があります。
プロバイダー DLL を Mapix.dll にリンクしないでください。 代わりに、メモリ割り当てまたは割り当て解除にこれらのポインターを使用する必要があります。
メッセージ ストア プロバイダーは、ほとんどのメモリ割り当てと割り当て解除に lpAllocateBuffer、 lpAllocateMore、 lpFreeBuffer によって指される関数を使用する必要があります。 特に、プロバイダーは、IMAPIProp::GetProps や IMAPITable::QueryRows などのオブジェクト インターフェイスを呼び出すときに、クライアント アプリケーションで使用するメモリを割り当てるために、これらの関数を使用する必要があります。 プロバイダーも OLE メモリ アロケーターを使用することを想定している場合は、lpMalloc パラメーターによって指されるアロケーター オブジェクトの IUnknown::AddRef メソッドを呼び出す必要があります。
MSProviderInit の記述の詳細については、「メッセージ ストア プロバイダーの読み込み」を参照してください。 エントリ ポイント関数の詳細については、「 サービス プロバイダー エントリ ポイント関数の実装」を参照してください。