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